본문 바로가기
  • 노션에서 삽질한 내용을 정리하는 블로그
자기발전소/# Manually Install OpenStack

OpenStack Cinder on Centos(Rocky) 2 [Storage Node]

by iamlucia 2020. 9. 25.

Cinder : Block Storage  Service (블록 스토리지 서비스) 



<< ⭕ 본 설치 내용은 storage 노드에서 진행 >> 

 

 

🔨 스토리지 노드용  vm 서버 구축  

스토리지 노드 생성 절차 (feat. VM workstation)
1. 가상머신 생성 (1 CPU, HDD 40GB, RAM 2GB)
2. NIC 은 외부용(yum install 하기 위해 일시적), 내부용 총 2개 
3. HDD 2개 

 

🟢 스토리지 노드의 디스크 파티션 설정하고 설치 시작

 

[ INSTALLATION DESTINATION ]
> 100GB (sda) 체크 후,  하단의 "
I will configure partitioning " 체크, 그리고 DONE 클릭  
> "+ (ADD A NEW MOUNT POINT)" 클릭 
> MOUNT POINT: /boot & Desired Capacity 500  

> "+ (ADD A NEW MOUNT POINT) " 한번 더 클릭
> MOUNT POINT: swap , Desired Capacity 4096
> " + (ADD A NEW MOUNT POINT)" 한번 더 클릭 
> MOUNT POINT: / , Desired Capacity (갑 지정 안하고 확인누르면 나머지 Capacity에 할당됨) 

 

🟢 오픈스택 초기 구성 :

 

# yum -y install chrony
# echo "server
 [컨트롤러 노드의 관리용 ip] iburst" >> /etc/chrony.conf
# systemctl enable chronyd.service
# systemctl start chronyd.service

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

# vi /etc/hosts  수정         // 스토리지 노드명 추가 (컨트롤러, 컴퓨트 노드 모두에) 

 

🟢 Utility 패키지 설치 (LVM) :

 

# yum install lvm2 device-mapper-persistent-data

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

 

🟢 Utility 패키지 설치 (LVM) :

 

# yum install lvm2 device-mapper-persistent-data

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

 

🟢 LVM 물리 볼륨 생성 (/dev/sdb) 및 cinder-volumes이름의 볼륨 그룹 생성

 

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

# vgcreate cinder-volumes /dev/sdb

Volume group "cinder-volumes" successfully created

 

🟢 lvm.conf 파일 편집하여 fileter가  cinder volume을 허용할 수 있게 설정

 

lvm 설정 파일의 devices 섹션 부분 : 해당 위치에 filter 값을 지정

 

# vi /etc/lvm/lvm.conf
devices {
...

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

 

🔔왜? 오직 인스턴스만이 블록 스토리지 볼륨에 접근할 수 있다. 하지만, 기저에 있는 운영체제가 그 볼륨과 연관된 장치를 관리한다. 기본적으로  LVM 볼륨 스캐닝 tool이 볼륨이 포함되어 있는 블록 스토리지 장치에 연결할(위한) " /dev " 디렉토리를 스캔한다. 프로젝트 내 해당 볼륨에서 LVM을 사용한다면, 스캐닝 tool은 해당 볼륨을 감지하여 cache하려고 하는데, 이는 운영체제 및 프로젝트 볼륨에  문제를 끼칠 수 있다. 
따라서 LVM을 재설정하여 cinder-volumes라는 볼륨 그룹을 가지고 있는 장치만 스캔할 수 있게 해야 한다. 

 

🚨 잠깐!
만약 스토리지 노드가 운영체제의 LVM을 사용한다면, filter값에 그 연관된 장치를 추가해야 한다.
예를 들어, /dev/sda 장치가 Linux/LVM와 같이 운영체제를 포함하고 있다면 (내가 이해하기로는 이러한 경우인듯)  다음과 같이 설정 필요! 

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

동일하게 컴퓨트 노드에서도 운영체제 디스크의 LVM을 사용하고 있다면 컴퓨트 노드의 /etc/lvm/lvm.conf 의 filter 값 수정이 필요하다. 

filter = [ "a/sda/", "r/.*/"]


🔨 구성요소 설치 

 

🟢 관련 패키지 설치  및 설정 파일 편집 :

 

# yum install openstack-cinder targetcli python-keystone
# vi /etc/cinder/cinder.conf

 

더보기

[DEFAULT] 
my_ip = [스토리지 노드의 관리용 IP]
glance_api_servers = http://controller:9292 
auth_strategy = keystone 
enabled_backends = lvm 
transport_url = rabbit://openstack:rabbitpass@controller

[lvm] 
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group = cinder-volumes 
iscsi_protocol = iscsi 
iscsi_helper = lioadm

 

[database]

connection = mysql+pymysql://cinder:cinderDBpass@controller/cinder

 

[keystone_authtoken] 
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 =cinderpass 

 

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

 


🔨 설치 마무리 

🟢 cinder 서비스 및 관련 의존성 서비스 활성화 후 실행 : (정상 실행 꼭 확인) 

 

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


📍 Verification @ controller  

🟢 cinder 서비스 컴포넌트가 성공적으로 실행되었는지 확인 :

 

# . admin-openrc
# openstack volume service list