OpenStack Ussuri : Cinder
OpenStack Ussuri : Cinder
----------------------- ----------------------- -----------------------
| [ Controller Node ] | | [ Compute Node ] | | [ Network Node ] |
| | | Libvirt | | Open vSwitch |
| MariaDB RabbitMQ | | Nova compute | | L2 Agent |
| Memcached Keystone | | Open vSwitch | | L3 Agent |
| httpd Cinder API | | L2 Agent | | metadata agent |
| Nova-API Compute | | Cinder-LVM | -----------------------
| L2 agent L3 agent | | NFS |
| metadata agent | -----------------------
| Neutron Server |
-----------------------
OpenStack Ussuri : Cinder
- Cinder는 OpenStack에서 전체적인 볼륨, 디스크를 관리하는 서비스입니다.
- Cinder 서비스는 다른 Storage Node들과 함께 사용하도록 NFS 서버 또한 구축하여 백업 서비스를 활성하할 수 있게 구성핟록 하겠습니다.
- Cinder에 대한 자세한 설명은 Cinder를 참조해주세요.
Cinder service 및 User 생성
$ controller ~(keystone)> openstack user create --domain default --project service --password qwer1234 cinder
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| default_project_id | 7c10c02365be496fb47f12bfd40fe4a7 |
| domain_id | default |
| enabled | True |
| id | 1f9dbcbb529a45c28b5bb8b035ea277a |
| name | cinder |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
$ controller ~(keystone)> openstack role add --project service --user cinder admin
$ controller ~(keystone)> openstack service create --name cinderv3 --description "OpenStack Block Storage" volumev3
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Block Storage |
| enabled | True |
| id | 225ceadb699d4e79adf30769cd872fef |
| name | cinderv3 |
| type | volumev3 |
+-------------+----------------------------------+
$ controller ~(keystone)> openstack endpoint create --region RegionOne volumev3 public http://controller:8776/v3/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | 6bf917232caa43eab3b83959fb19cb45 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 225ceadb699d4e79adf30769cd872fef |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(tenant_id)s |
+--------------+-----------------------------------------+
$ controller ~(keystone)> openstack endpoint create --region RegionOne volumev3 internal http://controller:8776/v3/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | c5987fc3d9eb4fb79a2e8cf73a274936 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 225ceadb699d4e79adf30769cd872fef |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(tenant_id)s |
+--------------+-----------------------------------------+
$ controller ~(keystone)> openstack endpoint create --region RegionOne volumev3 admin http://controller:8776/v3/%\(tenant_id\)s
+--------------+-----------------------------------------+
| Field | Value |
+--------------+-----------------------------------------+
| enabled | True |
| id | eff2398584944c0fa7575d1991d725fe |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 225ceadb699d4e79adf30769cd872fef |
| service_name | cinderv3 |
| service_type | volumev3 |
| url | http://controller:8776/v3/%(tenant_id)s |
+--------------+-----------------------------------------+
# Cinder의 Endpoint를 생성합니다.
Cinder 유저의 DB를 생성합니다.
$ controller> mysql -u root -p
$ MariaDB> create database cinder;
$ MariaDB> grant all privileges on cinder.* to cinder@'localhost' identified by 'qwer1234';
$ MariaDB> grant all privileges on cinder.* to cinder@'%' identified by 'qwer1234';
$ MariaDB> flush privileges;
$ MariaDB> exit;
Cinder 설치
$ controller> dnf --enablerepo=centos-openstack-ussuri,powertools,epel -y install openstack-cinder
# cinder 및 관련 모듈을 설치합니다.
$ controller> vi /etc/cinder/cinder.conf
[DEFAULT]
my_ip = controller
log_dir = /var/log/cinder
state_path = /var/lib/cinder
auth_strategy = keystone
transport_url = rabbit://openstack:qwer1234@controller
enable_v3_api = True
[database]
connection = mysql+pymysql://cinder:qwer1234@controller/cinder
[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 = qwer1234
[oslo_concurrency]
lock_path = $state_path/tmp
$ controller> su -s /bin/bash cinder -c "cinder-manage db sync"
$ controller> systemctl enable --now openstack-cinder-api openstack-cinder-scheduler
# cinder DB를 임포트 시키고, 서비스를 등록합니다.
$ controller> echo "export OS_VOLUME_API_VERSION=3" >> ~/admin_key
$ controller> source ~/admin_key
# key파일을 수정합니다.
$ controller> firewall-cmd --add-port=8776/tcp --permanent
$ controller> firewall-cmd --reload
# 방화벽을 설정합니다.
Cinder compute node 설치
$ compute> dnf --enablerepo=centos-openstack-ussuri,powertools,epel -y install openstack-cinder targetcli
# cinder 및 관련 모듈을 설치합니다.
$ compute> fdisk ...
# LVM의 타입으로 파티션을 추가합니다.
# cinder 이름으로 vg를 생성합니다.
$ controller> scp /etc/cinder/cinder.conf compute:/etc/cinder/cinder.conf
$ compute> vi /etc/cinder/cinder.conf
[default]
my_ip = compute
...
...
glance_api_servers = http://controller:9292
enabled_backends = lvm
[lvm]
target_helper = lioadm
target_protocol = iscsi
target_ip_address = compute
volume_group = cinder
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volumes_dir = $state_path/volumes
$ compute> vi /etc/nova/nova.conf
[cinder]
os_region_name = RegionOne
$ compute> systemctl restart openstack-nova-compute
$ compute> systemctl enable --now openstack-cinder-volume
$ compute> vi iscsiadm.te
module iscsiadm 1.0;
require {
type iscsid_t;
class capability dac_override;
}
#============= iscsid_t ==============
allow iscsid_t self:capability dac_override;
$ compute> checkmodule -m -M -o iscsiadm.mod iscsiadm.te
$ compute> semodule_package --outfile iscsiadm.pp --module iscsiadm.mod
$ compute> semodule -i iscsiadm.pp
$ compute> firewall-cmd --add-service=iscsi-target --permanent
$ compute> firewall-cmd --reload
# SELinux 및 방화벽을 설정합니다.
확인
$ controller ~/(keystone)> openstack volume service list
+------------------+-------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+-------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled | up | 2020-08-07T01:29:22.000000 |
| cinder-volume | compute@lvm | nova | enabled | up | 2020-08-07T01:29:22.000000 |
+------------------+-------------+------+---------+-------+----------------------------+
$ controller ~/(keystone)> openstack volume create --size 1 test
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2020-08-07T01:46:06.000000 |
| description | None |
| encrypted | False |
| id | aa07bf85-424d-478c-ae52-648ddc588465 |
| migration_status | None |
| multiattach | False |
| name | test |
| properties | |
| replication_status | None |
| size | 1 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | __DEFAULT__ |
| updated_at | None |
| user_id | 57ce8f772e374a7c9282f2674fda1ba7 |
+---------------------+--------------------------------------+
$ controller ~/(keystone)> openstack volume list
+--------------------------------------+------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+------+-----------+------+-------------+
| aa07bf85-424d-478c-ae52-648ddc588465 | test | available | 1 | |
+--------------------------------------+------+-----------+------+-------------+
오류가 있어 수정 중입니다 !
Cinder 백업 서비스 구성
$ compute> dnf --enablerepo=centos-openstack-ussuri,powertools,epel -y install nfs-utils
# nfs-utils을 설치합니다.
$ compute> vi /etc/exports
/nfs 10.10.10.0/24(rw,no_root_squash)
# ro: 마운트 된 볼륨의 데이터를 읽기만 가능
# rw: 마운트 된 볼륨에 쓰기 또한 가능
# no_root_squash: 루트 자격을 가진 사용자만 쓰기 가능
# noaccess: 디렉터리 접근 불가
$ compute> systemctl enable --now rpcbind nfs-server
# NFC-server 서비스를 등록 및 시작합니다.
$ vi /etc/cinder/cinder.conf
[default]
...
...
enabled_backends = lvm,nfs
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
volume_backend_name = NFS
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = $state_path/mnt_nfs
# cinder.conf 파일의 nfs를 추가합니다.
$ compute> vi /etc/cinder/nfs_shares
compute:/nfs
# 공유될 디렉토리를 지정합니다.
$ compute> chmod 640 /etc/cinder/nfs_shares
$ compute> chgrp cinder /etc/cinder/nfs_shares
$ compute> systemctl restart openstack-cinder-volume
$ compute> chown -R cinder. /var/lib/cinder/mnt_nfs
# cinder nfs 파일의 권한을 변경하고 cinder 서비스를 재시작합니다.
$ compute> firewall-cmd --add-service=nfs --permanent
$ compute> firewall-cmd --reload
# 방화벽을 설정합니다.
$ compute> vi iscsiadm.te
module iscsiadm 1.0;
require {
type iscsid_t;
class capability dac_override;
}
#============= iscsid_t ==============
allow iscsid_t self:capability dac_override;
$ compute> checkmodule -m -M -o iscsiadm.mod iscsiadm.te
$ compute> semodule_package --outfile iscsiadm.pp --module iscsiadm.mod
$ compute> semodule -i iscsiadm.pp
$ compute> systemctl restart openstack-nova-compute
# SELinux를 설정하고 compute 서비스를 재시작합니다.
Cinder 백업 서비스 구성
$ compute> vi /etc/cinder/cinder.conf
[default]
...
...
backup_driver = cinder.backup.drivers.nfs.NFSBackupDriver
backup_mount_point_base = $state_path/backup_nfs
backup_share = compute:/var/lib/cinder-backup
# ciner 백업 서비스를 활성화하기 이해 cinder.conf 파일의 설정을 추가합니다.
$ compute> systemctl enable --now openstack-cinder-backup
$ compute> chown -R cinder. /var/lib/cinder/backup_nfs
$ cinder backup 서비스를 활성화합니다.
확인
$ controller ~(keystone)> openstack volume service list
+------------------+-------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+-------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled | up | 2020-08-12T04:31:53.000000 |
| cinder-volume | compute@lvm | nova | enabled | up | 2020-08-12T04:31:46.000000 |
| cinder-volume | compute@nfs | nova | enabled | up | 2020-08-12T04:31:46.000000 |
+------------------+-------------+------+---------+-------+----------------------------+
$ controller ~(keystone)>
$ controller ~(keystone)>
$ controller ~(keystone)>
$ controller ~(keystone)>
<div style="text-align: center; margin-top: 1em;">
RSS Feed
</div>
마지막 수정일자