구축/Openstack

openstack 구축 8 cinder

KidAnt 2024. 1. 10. 14:26


  • OpenStack Block Storage 서비스 Cinder는 가상 머신에 영구 스토리지를 추가한다.
  • 블록 스토리지는 볼륨 관리를위한 인프라를 제공하고 OpenStack Compute(nova)와 상호 작용하여 인스턴스 볼륨을 제공한다. 또한 이 서비스를 통해 볼륨 스냅 샷 및 볼륨 유형을 관리 할 수 ​​있다.
  • 해당 구축은 컨트롤러 노드와 스토리지 노드로 나누어지며 단일노드일경우 한 노드에 다 넣으면 된다.

컨트롤러 노드

DB, 서비스 사용자 등록 및 API 엔드포인트 생성

sudo su root
#root 권한 습득

mysql
#mariadb 접속

MariaDB [(none)]> CREATE DATABASE cinder;
#cinder 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';
#CINDER_DBPASS에 설정한 비밀번호 기입

MariaDB [(none)]> exit
#종료

. admin-openrc
#어드민 권한 엑세스

openstack user create --domain default --password-prompt cinder
#cinder 사용자 등록

User Password: #CINDER_PASS
Repeat User Password: #CINDER_PASS
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 9d7e33de3e1a498390353819bc7d245d |
| name                | cinder                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
#출력결과(예시)

openstack role add --project service --user cinder admin
#admin cinder 역활 부여

openstack service create --name cinderv3 \
--description "OpenStack Block Storage" volumev3
#엔터티 생성

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | ab3bbbef780845a1a283490d281e7fda |
| name        | cinderv3                         |
| type        | volumev3                         |
+-------------+----------------------------------+
#출력값(예시)

#API 엔드포인트 생성
openstack endpoint create --region RegionOne \
volumev3 public http://controller:8776/v3/%\(project_id\)s
#public

+--------------+------------------------------------------+
| Field        | Value                                    |
+--------------+------------------------------------------+
| enabled      | True                                     |
| id           | 03fa2c90153546c295bf30ca86b1344b         |
| interface    | public                                   |
| region       | RegionOne                                |
| region_id    | RegionOne                                |
| service_id   | ab3bbbef780845a1a283490d281e7fda         |
| service_name | cinderv3                                 |
| service_type | volumev3                                 |
| url          | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
#결과값(예시)

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

+--------------+------------------------------------------+
| Field        | Value                                    |
+--------------+------------------------------------------+
| enabled      | True                                     |
| id           | 94f684395d1b41068c70e4ecb11364b2         |
| interface    | internal                                 |
| region       | RegionOne                                |
| region_id    | RegionOne                                |
| service_id   | ab3bbbef780845a1a283490d281e7fda         |
| service_name | cinderv3                                 |
| service_type | volumev3                                 |
| url          | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
#결과값(예시)

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

+--------------+------------------------------------------+
| Field        | Value                                    |
+--------------+------------------------------------------+
| enabled      | True                                     |
| id           | 4511c28a0f9840c78bacb25f10f62c98         |
| interface    | admin                                    |
| region       | RegionOne                                |
| region_id    | RegionOne                                |
| service_id   | ab3bbbef780845a1a283490d281e7fda         |
| service_name | cinderv3                                 |
| service_type | volumev3                                 |
| url          | http://controller:8776/v3/%(project_id)s |
+--------------+------------------------------------------+
#결과값 (예시)

구성 요소 설치 및 구성

apt-get update
#최신화

apt install cinder-api cinder-scheduler
#cinder 패키지 설치

vi /etc/cinder/cinder.conf

[database]
#connection = sqlite:////var/lib/cinder/cinder.sqlite

connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
#설정한 CINDER_DBPASS로 기입

[DEFAULT]
...(생략)

transport_url = rabbit://openstack:RABBIT_PASS@controller
#설정한 RABBIT_PASS 기입
auth_strategy = keystone
#추가

my_ip = local ip
#해당 부분 local ip에 controller IP 직접 기입

[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
#해당 부분 추가
#설정한 CINDER_PASS 기입

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

wq
#저장

su -s /bin/sh -c "cinder-manage db sync" cinder
#DB에 설정값 등록

vi /etc/nova/nova.conf
#해당부분 변경

[cinder]
...(생략)
os_region_name = RegionOne

wq
#저장

설치 마무리

service nova-api restart
#노바 재시작

service cinder-scheduler restart
service apache2 restart
#스토리지 서비스 다시 시작

스토리지 노드

사전 파일 설치 및 논리적 스토리지 생성

apt-get update
#최신화

apt install lvm2 thin-provisioning-tools
#지원 유틸리티 설치

pvcreate /dev/sdb
#PV생성
#끝부분의 sdb는 해당하는 연결된 디스크로 수정

Physical volume "/dev/sdb" successfully created
#출력값(예시)

vgcreate cinder-volumes /dev/sdb
#VG 생성
#끝부분의 sdb는 해당하는 연결된 디스크로 수정

Volume group "cinder-volumes" successfully created
#출력값(예시)

vi /etc/lvm/lvm.conf

devices {
...
filter = [ "a/sdb/", "r/.*/"]
#sdb부분에 해당하는 논리적 디스크로 수정

구성 요소 설치 및 구성

apt install cinder-volume tgt
#cinder volume 및 tgt 설치

vi /etc/cinder/cinder.conf

[database]
#connection = sqlite:////var/lib/cinder/cinder.sqlite

connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
#설정한 CINDER_DBPASS로 기입

[DEFAULT]

my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
#설치하는 노드이 IP 주소 입

transport_url = rabbit://openstack:RABBIT_PASS@controller
#설정한 RABBIT_PASS 기입

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
#해당 부분 추가
#설정한 CINDER_PASS 기입

enabled_backends = lvm
#백엔드 활성

[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
target_protocol = iscsi
target_helper = tgtadm
#해당 부분 추가

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp
#해당 부분 추가

설치 마무리

service tgt restart
service cinder-volume restart
#tgt cinder 재시작

작동확인

. admin-openrc
#어드민 권한 습득

openstack volume service list
#등록된 voluem(신더) 서비스 목록 확인

+------------------+------------+------+---------+-------+----------------------------+
| Binary           | Host       | Zone | Status  | State | Updated_at                 |
+------------------+------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled | up    | 2023-11-30T02:27:41.000000 |
| cinder-volume    | block@lvm  | nova | enabled | up    | 2023-11-30T02:27:46.000000 |
| cinder-backup    | controller | nova | enabled | up    | 2023-11-30T02:27:41.000000 |
+------------------+------------+------+---------+-------+----------------------------+
#결과값 (예시)

'구축 > Openstack' 카테고리의 다른 글

openstack 구축 7 horizon  (0) 2024.01.09
openstack 구축 6 neutron  (0) 2024.01.05
openstack 구축 5 nova  (2) 2024.01.03
openstack 구축 4 placement  (0) 2023.12.28
openstack 구축 3 glance  (0) 2023.12.28