오픈스택 수동 설치 실습 #.14



오픈스택 수동 설치 실습 #.14 – Cinder block storage 서비스 설치

 

Cinder – LVM을 이용한 스토리지 노드 구성

오픈스택 블록 스토리지(Cinder)는 오픈스택 컴퓨트 인스턴스에 사용할 지속적인 블록 레벨 스토리지 장치들을 제공합니다. 블록 스토리지 시스템은 블록 장치들을 서버에 작성, 부착, 제거하는 일을 관리하며, 블록 스토리지 볼륨들은 클라우드 사용자들이 자신만의 스토리지의 필요한 부분을 관리하기 위한 대시보드 및 오픈스택 컴퓨트와 완전히 연동됩니다. 로컬 리눅스 서버 스토리지뿐 아니라 Ceph, 클라우드바이트, Coraid, EMC(ScaleIO, VMAX, VNX and XtremIO), GlusterFS, 히타치 데이터 시스템, IBM 스토리지(IBM DS8000, Storwize 계열, SAN 볼륨 컨트롤러, XIV 스토리지 시스템, GPFS), 리눅스 LIO, 넷앱, 넥센타, 님블 스토리지, Scality, 솔리드파이어, HP (스토어버추얼, 3PAR 스토어서브 계열), 퓨어 스토리지를 포함한 스토리지 플랫폼들을 사용합니다. 블록 스토리지는 데이터베이스 스토리지, 확장 가능 파일 시스템과 같은 성능에 민감한 시나리오에 적절하며, 서버에 로우 블록 레벨 스토리지에 대한 접근을 제공합니다. 스냅샷 관리는 블록 스토리지 볼륨에 저장된 데이터를 백업하는 강력한 기능을 제공하며, 스냅샷들은 새로운 블록 스토리지 볼륨들을 만들기 위해 사용하거나 복원할 수 있습니다.

 

Controller 노드 설치

# su - postgres
$ psql
postgres=# create role cinder with login;
postgres=# create database cinder;
postgres=# grant ALL PRIVILEGES ON DATABASE cinder TO cinder;
postgres=# alter user cinder with encrypted password 'cinder';

키스톤 인증 불러오기

# . admin-openrc

cinder 유저 생성 및 admin 권한 추가

# openstack user create --domain default --password-prompt cinder
# openstack role add --project service --user cinder admin

cinderv2 와 cinderv3 서비스 생성

# openstack service create --name cinderv2 \
  --description "OpenStack Block Storage" volumev2
 
# openstack service create --name cinderv3 \
  --description "OpenStack Block Storage" volumev3

endpoint 생성

# openstack endpoint create --region RegionOne \
  volumev2 public http://controller:8776/v2/%\(project_id\)s
 
# openstack endpoint create --region RegionOne \
  volumev2 internal http://controller:8776/v2/%\(project_id\)s
 
# openstack endpoint create --region RegionOne \
  volumev2 admin http://controller:8776/v2/%\(project_id\)s
 
# openstack endpoint create --region RegionOne \
  volumev3 public http://controller:8776/v3/%\(project_id\)s
 
# openstack endpoint create --region RegionOne \
  volumev3 internal http://controller:8776/v3/%\(project_id\)s
 
# openstack endpoint create --region RegionOne \
  volumev3 admin http://controller:8776/v3/%\(project_id\)s

cinder 패키지 설치

# yum -y install openstack-cinder

cinder.conf 파일 수정

# vi /etc/cinder/cinder.conf 

[database]
connection = postgresql://cinder:cinder@controller/cinder

[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = 10.0.0.11
enable_v3_api = True

[keystone_authtoken]
auth_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

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

블록 스토리지 데이터베이스 배포

# su -s /bin/sh -c "cinder-manage db sync" cinder

 

Compute 노드에서
nova.conf 파일수정
# vi /etc/nova/nova.conf

[cinder]
os_region_name = RegionOne

nova 서비스 재시작

# systemctl restart openstack-nova-api.service
다시 Controller 노드에서
keystone에 Volume API 버전 추가
# echo "export OS_VOLUME_API_VERSION=3" >> ~/admin-openrc

cinder 서비스 등록 및 시작

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

 

Storage 노드 설치 (LVM 이용)

storage 노드는 다양한 스토리지로 설치가 가능하지만 VM환경에서는 LVM으로 진행을 합니다.

필요 패키지 설치

# yum -y install centos-release-openstack-rocky
# yum -y upgrade
# yum -y install python-openstackclient
# yum -y install openstack-selinux
# yum -y install python-psycopg2

lvm 패키지 설치

# yum install lvm2 device-mapper-persistent-data

lvm 서비스 등록 및 시작

# systemctl enable lvm2-lvmetad.service
# systemctl start lvm2-lvmetad.service

pv 볼륨 설정

# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created

vg 볼륨 설정

# vgcreate cinder-volumes /dev/sdb
Volume group "cinder-volumes" successfully created

lvm.conf 수정

# vi /etc/lvm/lvm.conf

devices {
...
filter = [ "a/sdb/", "r/.*/"]

 

cinder 패키지 설치
# yum -y install openstack-cinder targetcli python-keystone python2-crypto

cinder.conf 파일 수정

# vi /etc/cinder/cinder.conf

[database]
connection = postgresql://cinder:cinder@controller/cinder

[DEFAULT]
transport_url = rabbit://openstack:RABBIT_PASS@controller
auth_strategy = keystone
my_ip = 10.0.0.41
enabled_backends = lvm
glance_api_servers = http://controller:9292
enable_v3_api = True

[keystone_authtoken]
auth_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]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
target_ip_address = 10.0.0.41
volumes_dir = $state_path/volumes

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

※ [lvm] 부분은 없으니 만들어 줍니다.

cinder 서비스 등록 및 시작

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

controller 노드에서 서비스 확인

볼륨 설정이 완료 되었습니다.

Cinder 까지 설치가 완료되어 코어 부분은 다 설치가 완료 되었습니다.



You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *