IT

[openstack] 3.7 블록 스토리지 설치(cinder) - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전) 본문

프로젝트/openstack

[openstack] 3.7 블록 스토리지 설치(cinder) - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전)

abcee 2019. 3. 29. 06:58

3. 구성 과정

3.7 블록 스토리지 설치

3.7.1 Controller Node

○ 설치

• DB 설정

- root계정으로 DB 연결

$ mysql -u root -p

- cinder DB생성

MariaDB [(none)]> CREATE DATABASE cinder;

- cinder DB 액세스 권한 부여

/*
cinder 데이터베이스의 모든 스키마에 대해 cinder 계정의 로컬접근 권한 허용
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'cinder 계정 비밀번호';
*/
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'It1';

/*
cinder 데이터베이스의 모든 스키마에 대해 cinder 계정의 외부접근 권한 허용
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'cinder 계정 비밀번호';
*/
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'It1';

• admin 권한으로 CLI 명령을 쓰기 위해 admin 인증

$ . admin-openrc

• 서비스 자격 증명 생성

- cinder user 계정 생성

$ openstack user create --domain default --password-prompt cinder

- cinder 유저가 service 프로젝트에 대한 admin 권한을 부여 받도록 역할 할당

$ openstack role add --project service --user cinder admin

- cinder 라는 이름의 volumeV2 타입 service를 서비스 카탈로그에 등록

$ openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2

- cinder 라는 이름의 volumeV3 타입 service를 서비스 카탈로그에 등록

$ openstack service create --name cinderv3 \
--description "OpenStack Block Storage" volumev3

• block storage service api v2 endpoint 생성

- 외부 통신이 가능한 네트워크 인터페이스를 통해 volume v2 서비스를 사용할 수 있도록 public endpoint를 서비스 카탈로그에 추가

$ openstack endpoint create --region RegionOne \
volumev2 public http://controller:8776/v2/%\(project_id\)s

- 내부 네트워크 인터페이스를 통해 volume v2 서비스를 사용할 수 있도록 internal endpoint를 서비스 카탈로그에 추가

$ openstack endpoint create --region RegionOne \
volumev2 internal http://controller:8776/v2/%\(project_id\)s

- 관리용 네트워크 인터페이스를 통해 volume v2 서비스를 사용할 수 있도록 admin endpoint를 서비스 카탈로그에 추가

$ openstack endpoint create --region RegionOne \
volumev2 admin http://controller:8776/v2/%\(project_id\)s

• block storage service api v3 endpoint 생성

- 외부 통신이 가능한 네트워크 인터페이스를 통해 volume v3 서비스를 사용할 수 있도록 public endpoint를 서비스 카탈로그에 추가

$ openstack endpoint create --region RegionOne \
volumev3 public http://controller:8776/v3/%\(project_id\)s

- 내부 네트워크 인터페이스를 통해 volume v3 서비스를 사용할 수 있도록 internal endpoint를 서비스 카탈로그에 추가

$ openstack endpoint create --region RegionOne \
volumev3 internal http://controller:8776/v3/%\(project_id\)s

- 관리용 네트워크 인터페이스를 통해 volume v3 서비스를 사용할 수 있도록 admin endpoint를 서비스 카탈로그에 추가

$ openstack endpoint create --region RegionOne \
volumev3 admin http://controller:8776/v3/%\(project_id\)s

• openstack-cinder 패키지 설치

# yum install -y openstack-cinder

• /etc/cinder/cinder.conf 을 통해 cinder 설정 수정

# vi /etc/cinder/cinder.conf

• [/etc/cinder/cinder.conf]

[database]
# 3716
# cinder 데이터베이스 엑세스 설정
connection = mysql+pymysql://cinder:It1@controller/cinder

[DEFAULT]
# 메시지 큐 접근 시 사용할 URL 설정
transport_url = rabbit://openstack:RABBIT_PASS@controller

# 인증 방법을 keystone으로 사용한다고 명시
auth_strategy = keystone

# controller node의 관리용 IP 입력
my_ip = 10.0.0.11

[keystone_authtoken]
# 3980
# keystone 인증 시 사용할 정보
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = It1

[oslo_concurrency]
# 4269
lock_path = /var/lib/cinder/tmp

• block storage service database 내용 채우기

/*
cinder-manage db_sync [cinder DB 이름] 명령을
관리자 권한으로 /bin/sh 쉘로 실행시켜 DB 동기화
*/
# su -s /bin/sh -c "cinder-manage db sync" cinder

• /etc/nova/nova.conf 을 통해 nova의 cinder 설정 수정

# vi /etc/nova/nova.conf

• [/etc/nova/nova.conf]

[cinder]
# region 정보 입력
os_region_name = RegionOne

• openstack-nova-api.serivce 재시작 하여 변경된 사항 적용

# systemctl restart openstack-nova-api.service

• openstack-cinder-api, openstack-cinder-scheduler 서비스가 부팅 시 시작되도록 등록하고 서비스를 시작한다.

# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

3.7.2 Storage Node

○ 전제조건

• lvm2, device-mapper-persistent-data 패키지 설치

# yum install -y lvm2 device-mapper-persistent-data

• lvm2-lvmetad 서비스가 부팅 시 시작되도록 등록하고 서비스를 시작한다.

# systemctl enable lvm2-lvmetad.service

# systemctl start lvm2-lvmetad.service

• LVM 구성

- physical volume 생성

# pvcreate /dev/sdb

- cinder-volumes 라는 이름으로 volume group 생성

# vgcreate cinder-volumes /dev/sdb

• /etc/lvm/lvm.conf 을 통해 lvm 설정 수정

# vi /etc/lvm/lvm.conf

• [/etc/lvm/lvm.conf]

#49
# sdb 만 사용한다고 filter 적용
devices {
...
filter = [ "a/sdb/", "r/.*/"]

○ 설치

• openstack-cinder, targetcli, python-keystone 패키지 설치

# yum install -y openstack-cinder targetcli python-keystone

• /etc/cinder/cinder.conf 을 통해 cinder 설정 수정

# vi /etc/cinder/cinder.conf

• [/etc/cinder/cinder.conf]

[database]
# cinder 데이터베이스 엑세스 설정
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

[DEFAULT]
# 메시지 큐 접근 시 사용할 URL 설정
transport_url = rabbit://openstack:RABBIT_PASS@controller

# 인증 방법을 keystone으로 사용한다고 명시
auth_strategy = keystone

# storage node의 관리용 IP 입력
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

# lvm backend 허용 설정
enabled_backends = lvm

# glance 서비스 api 설정
glance_api_servers = http://controller:9292

[keystone_authtoken]
# keystone 인증 시 사용할 정보
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_id = default
user_domain_id = default
project_name = service
username = cinder
password = CINDER_PASS

[lvm]
# lvm 설정
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm

[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp

• openstack-cinder-volume, target 서비스가 부팅 시 시작되도록 등록하고 서비스를 시작한다.

# systemctl enable openstack-cinder-volume.service target.service

# systemctl start openstack-cinder-volume.service target.service

3.7.3 검증

○ admin 권한으로 CLI 명령을 쓰기 위해 admin 인증

$ . admin-openrc

○ openstack volume service list

$ openstack volume service list
Comments