일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- centos7
- microservices
- 마이크로서비스
- 가상 데스크탑 환경
- 객체지향
- 오픈스택
- no-param-reassign
- eslint
- xenserver app&desk
- AWS
- IaaS
- fargate
- sagemaker
- rocky
- app&desk
- 구축
- kubernetes
- OOP
- serverless
- 설치
- 쿠버네티스
- 머신러닝
- openstack
- eks
- 프로젝트
- 로키
- 젠킨스
- 서버 베이스 컴퓨팅
- server base computing
- jenkins
- Today
- Total
IT
[openstack] 3.7 블록 스토리지 설치(cinder) - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전) 본문
[openstack] 3.7 블록 스토리지 설치(cinder) - centos7 오픈스택 설치 및 구축 프로젝트 (rocky 버전)
abcee 2019. 3. 29. 06:583. 구성 과정
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