반응형
Cinder Installation
- 블록 스토리지 서비스(Cinder)는 인스턴스에 블록 스토리지 장치를 제공합니다.
- NAS/SAN, NFS, iSCSI, Ceph등 다양한 드라이버를 제공합니다.
- 블록 스토리지 API 및 스케줄러 서비스는 일반적으로 컨트롤러 노드에서 실행됩니다.
- 드라이버에 따라 볼륨 서비스는 컨트롤러 노드, 컴퓨팅 노드 또는 독립 실행형 스토리지 노드에서 실행될 수 있습니다.
Block Storage 서비스 개요
- Block Storage는 볼륨 관리를 위한 인프라를 제공하고 Compute와 상호 작용하여 인스턴스 용 볼륨을 제공합니다.
- 또한 이 서비스를 통해 볼륨 스냅 샷 및 볼륨 유형을 관리할 수 있습니다.
구성 요소
- cinder-api
- API 요청을 수락하고 작업을 위해
cinder-volume으로 라우팅
- API 요청을 수락하고 작업을 위해
- cinder-volume
- 블록 스토리지 서비스 및 cinder-scheduler와 같은 프로세스와 직접 상호 작용
- 메시지 대기열을 통해 이러한 프로세스와 상호 작용
cinder-volume서비스는 상태를 유지하기 위해 블록 스토리지 서비스로 전송된 읽기 및 쓰기 요청에 응답- 드라이버 아키텍처를 통해 다양한 스토리지 공급자와 상호 작용
- 블록 스토리지 서비스 및 cinder-scheduler와 같은 프로세스와 직접 상호 작용
- cinder-scheduler daemon
- 볼륨을 생성할 최적의 스토리지 제공자 노드를 선택
nova-scheduler와 유사한 구성 요소
- cinder-backup daemon
cinder-backup서비스는 모든 유형의 볼륨을 백업 스토리지에 백업- cinder-volume 서비스와 마찬가지로 드라이버 아키텍처를 통해 다양한 스토리지 공급자와 상호 작용
- Messaging queue
- 블록 스토리지 프로세스 간에 정보를 라우팅
설치 및 구성(Controller Node)
스토리지 추가
- 컨트롤러 노드에 Storage Node의 기능도 하기 위해 스토리지를 추가한다.



- 10GB 하드 추가
전제 조건
- 데이터베이스 설정
- root 계정으로 db 연결
mysql -u root -p
- cinder 데이터베이스 생성
MariaDB [(none)]> CREATE DATABASE cinder;
- cinder 데이터베이스에 접근 권환 부여
- CINDER_DBPASS를 적절한 암호로 변경
- root 계정으로 db 연결
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'CINDER_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'CINDER_DBPASS';
- 데이터 베이스 연결 종료
- admin 권한으로 cli 명령을 쓰기 위해 admin 인증
. admin-openrc
- 서비스 자격 증명 생성
- cinder 사용자 생성
openstack user create --domain default --password-prompt cinder
- cinder 사용자에 admin role 추가
openstack role add --project service --user cinder admin
- cinder 라는 이름의 volumeV2, volumeV3 타입 service를 서비스 카탈로그에 등록
- cinder 사용자 생성
root@controller$ openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2
root@controller$ openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3


- Block Storage service API 엔드포인트 생성
root@controller$ openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(project_id\)s
root@controller$ openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(project_id\)s
root@controller$ openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(project_id\)s
root@controller$ openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(project_id\)s
root@controller$ openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(project_id\)s
root@controller$ openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(project_id\)s




구성 요소 설치 및 구성
- 패키지 설치
yum install openstack-cinder
/etc/cinder/cinder.conf- [database] 섹션에서 데이터베이스 액세스 구성
[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
- [DEFAULT] 섹션에서 RabiitMQ 메시지 큐 액세스 구성
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
- [DEFAULT]와 [keystone_authtoken] 섹션에서 아이덴티티 서비스 액세스 구성
[DEFAULT]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
- [DEFAULT] 섹션에서 controller node의 관리용 IP 구성
[DEFAULT]
# ...
my_ip = 10.0.0.11
- [oslo_concurrency] 섹션에서 잠금 경로 구성
[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp
- Block Storage 데이터베이스 내용 채우기
su -s /bin/sh -c "cinder-manage db sync" cinder
Block Storage를 사용하도록 Compute 구성
- /etc/nova/nova.conf 파일을 편집
[cinder]
os_region_name = RegionOne
설치 완료
- Compute API 서비스 재시작
systemctl restart openstack-nova-api.service
- Block Storage 서비스를 시작하고 시스템이 부팅 될 때 시작되도록 구성
root@controller$ systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
root@controller$ systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
설치 및 구성(Storage Node)
- Controller Node에서 진행합니다.
전제 조건
- 유틸리티 패키지 설치
yum install lvm2 device-mapper-persistent-data
- LVM 메타 데이터 서비스를 시작하고 시스템이 부팅 될 때 시작되도록 구성
root@controller$ systemctl enable lvm2-lvmetad.service
root@controller$ systemctl start lvm2-lvmetad.service
- LVM 물리 볼륨 생성
pvcreate /dev/sdb

- LVM 볼륨 그룹 생성
vgcreate cinder-volumes /dev/sdb

- cinder-volumes 볼륨 그룹 을 포함하는 장치 만 스캔하도록 LVM을 재구성
- /etc/lvm/lvm.conf 파일 수정
- 장치 섹션에서 /dev/sdb 디바이스를 수락하고 다른 모든 디바이스를 거부하는 필터를 추가
- 스토리지 노드에서 운영 체제 디스크의 LVM을 사용하는 경우 필터에 연결된 디바이스도 추가해야 합니다. 예를 들어 /dev/sda 디바이스에 운영 체제가 포함되어 있는 경우
filter = [ "a/sda/", "a/sdb/", "r/.*/"]- 마찬가지로 컴퓨팅 노드에서 운영 체제 디스크의 LVM을 사용하는 경우 해당 노드의 /etc/lvm/lvm.conf 파일에 있는 필터도 운영 체제 디스크만 포함하도록 수정해야 합니다. 예를 들어 /dev/sda 디바이스에 운영 체제가 포함되어 있는 경우
filter = [ "a/sda/", "r/.*/"]
- 장치 섹션에서 /dev/sdb 디바이스를 수락하고 다른 모든 디바이스를 거부하는 필터를 추가
- /etc/lvm/lvm.conf 파일 수정
devices {
...
filter = [ "a/sdb/", "r/.*/"]
구성 요소 설치 및 구성
- 패키지 설치
yum install openstack-cinder targetcli python-keystone
/etc/cinder/cinder.conf파일 수정- [database] 섹션에서 데이터베이스 액세스 구성
[database]
# ...
connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
- [DEFAULT] 섹션에서 RabbitMQ 메시지 큐 액세스 구성
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller
- [DEFAULT]와 [keystone_authtoken] 섹션에서 Identity 서비스 액세스 구성
[DEFAULT]
# ...
auth_strategy = keystone
[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = CINDER_PASS
- [DEFAULT]에서 storage node의 관리용 IP 입력
[DEFAULT]
# ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
- [lvm] 섹션에서 LVM 드라이버, cinder-volume 볼륨 그룹, iSCSI 프로토콜 및 적절한 iSCSI 서비스를 사용하여 LVM 백엔드를 구성
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = lioadm
- [DEFAULT] 섹션에서 LVM 백엔드를 활성화
[DEFAULT]
# ...
enabled_backends = lvm
- [DEFAULT] 섹션에서 Image Service API의 위치를 구성
[DEFAULT]
# ...
glance_api_servers = http://controller:9292
- [osl_concurrency] 섹션에서 잠금 경로를 구성
[oslo_concurrency]
# ...
lock_path = /var/lib/cinder/tmp
설치 완료
- 종속성을 포함하여 Block Storage 볼륨 서비스를 시작하고 시스템이 부팅 될 때 시작되도록 구성
root@controller$ systemctl enable openstack-cinder-volume.service target.service
root@controller$ systemctl start openstack-cinder-volume.service target.service
백업 서비스 설치 및 구성
- Block Storage 노드에서 진행하지만 현재 Controller Node가 Block Storage이기 때문에 Controller Node에서 진행
- Swift가 필요하여 현재 환경에서는 넘어감
구성 요소 설치 및 구성
- 패키지 설치
yum install openstack-cinder
- /etc/cinder/cinder.conf
- [DEFAULT] 섹션에서 백업 옵션 구성
- SWIFT_URL을 Object Storage 서비스의 URL로 바꿉니다. URL은 개체 저장소 API 끝점을 표시하여 확인
openstack catalog show object-store
[DEFAULT]
# ...
backup_driver = cinder.backup.drivers.swift.SwiftBackupDriver
backup_swift_url = SWIFT_URL
설치 완료
- Block Storage 백업 서비스를 시작하고 시스템이 부팅 될 때 시작되도록 구성
root@controller$ systemctl enable openstack-cinder-backup.service
root@controller$ systemctl start openstack-cinder-backup.service
Cinder 작동 확인
- admin 권한으로 cli 명령을 쓰기 위해 admin 인증
. admin-openrc
- 서비스 구성 요소를 나열하여 각 프로세스가 성공적으로 시작되었는지 확인
openstack volume service list

반응형
'클라우드 > OpenStack' 카테고리의 다른 글
| OpenStack Availability Zone & Host Aggregate (0) | 2022.08.26 |
|---|---|
| OpenStack galera cluster 이슈 (0) | 2022.08.26 |
| OpenStack Manual Installation - Horizon (0) | 2022.08.19 |
| OpenStack Manual Installation - Neutron (0) | 2022.08.19 |
| OpenStack Manual Installation - Nova (0) | 2022.08.19 |
