티스토리 뷰

728x90
반응형

본 포스팅은 OpenStack의 구성요소들을 수동으로 설치하는 방법에 대한 가이드입니다.


오픈스택은 Core 프로젝트 즉 주요 구성요소로 10가지를 채택하고 있습니다. 이들은 각자의 VM으로 구성되며 VM간의 연결을 위해 하이퍼바이저를 사용합니다. 본 포스팅에서는 각 구성요소들을 하나씩 수동으로 구성해 보고 연결과정에 대해 알아보겠습니다.


★Cloud★/OpenStack [OpenStack] Part 1. kestone (아이덴티티 서비스)

★Cloud★/OpenStack [OpenStack] Part 2. glance (이미지 서비스)

★Cloud★/OpenStack [OpenStack] Part 3. nova (컴퓨트)

★Cloud★/OpenStack [OpenStack] Part 4. neutron (네트워크)

★Cloud★/OpenStack [OpenStack] Part 5. horizon (대시보드)


여섯번째 시간으로 설치할 구성요소는 블록 스토리지 cinder입니다.

앞선 포스팅은 위 URL을 참고하세요.

OpenStack 블록스토리지(cinder)는 블록 스토리지 장치를 게스트 인스턴스에 제공하는 역할을 담당합니다. 스토리지가 프로비저닝되고 소비되는 방식은 블록 스토리지 드라이버 도는 여러 백엔드 구성에 의해 결정됩니다. NAS/SAN, NFS, iSCSI, Ceph등 사용 가능한 다양한 드라이버가 있습니다. 사용하는 드라이버에 따라, 볼륨 서비스는 컨트롤러, 독립된 스토리지는 Compute노드 또는 스토리지 노드에서 동작합니다.

OpenStack 블록 스토리지 서비스(Cinder)는 가상 시스템에 영구 스토리지를 추가합니다. 블록 스토리지는 볼륨 관리를 위한 인프라를 제공하고 OpenStack Compute와 상호 작용하여 인스턴스에 볼륨을 제공합니다. 또한 이 서비스를 통해 볼륨 스냅샷 및 볼륨 유형을 관리할 수 있습니다.


cinder는 다음과 같은 구성 요소가 포함되어 있습니다.


- cinder-api

API 요청을 수락하고 작업을 위해 해당 요청을 cinder-volume으로 라우팅합니다.

- cinder-volume

메시지 큐를 통해 블록 스토리지 서비스 및 cinder-스케줄러와 같은 프로세스와 직접 상호 작용합니다. cinder-volume 서비스는 상태를 유지하기 위해 블록 스토리지 서비스로 전송된 읽기 및 쓰기 요청에 응답합니다. 드라이버 아키텍처를 통해 다양한 스토리지 공급업체와 상호 작용할 수 있습니다.

- cinder-scheduler daemon

볼륨을 생성할 최적의 스토리지 제공자 노드를 선택합니다. nova-scheduler와 유사한 구성 요소를 지닙니다.

- cinder-backup daemon

cinder-backup 서비스는 모든 유형의 볼륨을 백업 스토리지 제공자에 백업합니다. cinder-volume 서비스와 마찬가지로 드라이버 아키텍처를 통해 다양한 스토리지 공급업체와 상호 작용할 수 있습니다.

- message queue

블록 스토리지 프로세스 간에 정보를 라우팅합니다.



OpenStack cinder Service Installation

Block Storage Service는 cinder라는 프로젝트로 개발되었습니다. OpenStack은 오픈소스로써 이러한 프로젝트들이 핵심프로젝트로 올라가면 이를 실제 OpenStack에 반영하여 사용하고 실제 프로젝트 Name은 Module Name 및 CLI 환경에서 Command로 사용할 수 있습니다.


- 본 테스트는 다음과 같은 환경에서 작성되었습니다.

[nrson@nrsonLinux~$]uname -a
Linux nrsonLinux 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[nrson@nrsonLinux~$]

- 본 포스팅에서는 다양한 설치가 이루어짐에 따라 필수로 설치되어야 하는 mysql, rabbitMQ등의 Install과정으 과감히 제거하였습니다. 별도의 포스팅에서 사전에 준비되야 하는 Package의 설치 과정을 설명드리겠습니다.

- 본 포스팅에서 설치되는 패키지들은 apt-get package manager를 통해 수행됩니다.


cinder 설치 이전 선행 작업

1. Database 생성


root@nrsonLinux:~# mysql -u root -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1519

Server version: 5.7.23-0ubuntu0.16.04.1 (Ubuntu)


Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> CREATE DATABASE cinder;

Query OK, 1 row affected (0.00 sec)


mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'cinder';

Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cinder';

Query OK, 0 rows affected, 1 warning (0.00 sec)


mysql>


2. admin 권한 부여


root@nrsonLinux:~# source nrsonOpenrc.sh

root@nrsonLinux:~#


3. cinder User 생성


root@nrsonLinux:~# openstack user create --domain default --password-prompt cinder

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | fda4275fbe204df0afdaa20cee2a5803 |

| name      | cinder                           |

+-----------+----------------------------------+

root@nrsonLinux:~#


4. cinder Role 부여


root@nrsonLinux:~# openstack role add --project service --user cinder admin

root@nrsonLinux:~#


5. cinder, cinderv2 서비스 엔티티 생성


root@nrsonLinux:~# openstack service create --name cinder --description "OpenStack Block Storage" volume

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Block Storage          |

| enabled     | True                             |

| id          | f3086a24da844e768086357356ab0fc3 |

| name        | cinder                           |

| type        | volume                           |

+-------------+----------------------------------+

root@nrsonLinux:~# openstack service create --name cinderv2 --description "OpenStack Block Storage" volumev2

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Block Storage          |

| enabled     | True                             |

| id          | faece425d966434a905bd8e9b9ae681d |

| name        | cinderv2                         |

| type        | volumev2                         |

+-------------+----------------------------------+

root@nrsonLinux:~#


6. 블록 스토리지 Service API 엔드포인트 생성


root@nrsonLinux:~# openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 65cd614908f945ecb80f68759fdf3c27        |

| interface    | public                                  |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | f3086a24da844e768086357356ab0fc3        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

root@nrsonLinux:~# openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 40a0d5cf09cd4f859e6182dbf2389bd3        |

| interface    | internal                                |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | f3086a24da844e768086357356ab0fc3        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

root@nrsonLinux:~# openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | b34dfa79c2ec4537b7af8e5adcbf497f        |

| interface    | admin                                   |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | f3086a24da844e768086357356ab0fc3        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

root@nrsonLinux:~# openstack endpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | b87b11314c1b4dff89e8d6a554e60290        |

| interface    | public                                  |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | faece425d966434a905bd8e9b9ae681d        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

root@nrsonLinux:~# openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 0f36d985d8ae4ee3ab22ba40d4d7c4a5        |

| interface    | internal                                |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | faece425d966434a905bd8e9b9ae681d        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

root@nrsonLinux:~# openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 21e9bab671be48eca7a4b33e0c43ad8c        |

| interface    | admin                                   |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | faece425d966434a905bd8e9b9ae681d        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

root@nrsonLinux:~#


cinder Controller Node 구성

1. 구성요소 설치


root@nrsonLinux:~# apt-get install cinder-api cinder-scheduler python-cinderclient

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

...

...

cinder-api is the newest version (2:8.1.1-0ubuntu3).

cinder-scheduler is the newest version (2:8.1.1-0ubuntu3).

python-cinderclient is the newest version (1:1.6.0-2ubuntu1).

root@nrsonLinux:~#


2. /etc/cinder/cinder.conf 구성

짧으니 전체를 넣도록 하겠습니다.


root@nrsonLinux:~# vi /etc/cinder/cinder.conf

[DEFAULT]

rootwrap_config = /etc/cinder/rootwrap.conf

api_paste_confg = /etc/cinder/api-paste.ini

iscsi_helper = tgtadm

volume_name_template = volume-%s

volume_group = cinder-volumes

verbose = True

auth_strategy = keystone

state_path = /var/lib/cinder

lock_path = /var/lock/cinder

volumes_dir = /var/lib/cinder/volumes


=======>


[DEFAULT]

rootwrap_config = /etc/cinder/rootwrap.conf

api_paste_confg = /etc/cinder/api-paste.ini

iscsi_helper = tgtadm

volume_name_template = volume-%s

volume_group = cinder-volumes

verbose = True

# keystone_authtoken 섹션에서 identity 서비스 접근을 구성

auth_strategy = keystone

state_path = /var/lib/cinder

lock_path = /var/lock/cinder

volumes_dir = /var/lib/cinder/volumes

# oslo_messaging_rabbit 섹션에서 RabbitMQ 메시지 큐 접근을 구성

rpc_backend = rabbit

# 컨트롤러 노드의 관리 인터페이스 ip주소를 사용하기 위한 my_ip 옵션을 구성

my_ip = 172.21.70.22


# 데이터베이스 접속을 위한 connection을 추가

[database]

connection = mysql+pymysql://cinder:cinder@172.21.70.22:3306/cinder


# oslo_messaging_rabbit 섹션에서 RabbitMQ 메시지 큐 접근을 구성

[oslo_messaging_rabbit]

rabbit_host = 172.21.70.22

rabbit_userid = openstack

rabbit_password = openstack


# keystone_authtoken 섹션에서 identity 서비스 접근을 구성

[keystone_authtoken]

auth_uri = http://172.21.70.22:5000

auth_url = http://172.21.70.22:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = cinder

password = cinder


# lock 경로를 구성

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp


3. 설치 마무리

a. cinder databse 초기화


root@nrsonLinux:~# su -s /bin/sh -c "cinder-manage db sync" cinder

Option "verbose" from group "DEFAULT" is deprecated for removal.  Its value may be silently ignored in the future.

2018-08-27 18:09:18.443 13411 WARNING py.warnings [-] /usr/lib/python2.7/dist-packages/oslo_db/sqlalchemy/enginefacade.py:241: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported

  exception.NotSupportedWarning


2018-08-27 18:09:18.450 13411 WARNING py.warnings [-] /usr/lib/python2.7/dist-packages/pymysql/cursors.py:158: Warning: '@@tx_isolation' is deprecated and will be removed in a future release. Please use '@@transaction_isolation' instead

  result = self._query(query)


2018-08-27 18:09:18.931 13411 INFO migrate.versioning.api [-] 0 -> 1...

2018-08-27 18:09:34.664 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:34.664 13411 INFO migrate.versioning.api [-] 1 -> 2...

2018-08-27 18:09:36.713 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:36.713 13411 INFO migrate.versioning.api [-] 2 -> 3...

2018-08-27 18:09:37.158 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:37.158 13411 INFO migrate.versioning.api [-] 3 -> 4...

2018-08-27 18:09:41.061 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:41.061 13411 INFO migrate.versioning.api [-] 4 -> 5...

2018-08-27 18:09:41.988 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:41.989 13411 INFO migrate.versioning.api [-] 5 -> 6...

2018-08-27 18:09:42.706 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:42.706 13411 INFO migrate.versioning.api [-] 6 -> 7...

2018-08-27 18:09:43.635 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:43.636 13411 INFO migrate.versioning.api [-] 7 -> 8...

2018-08-27 18:09:44.003 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:44.004 13411 INFO migrate.versioning.api [-] 8 -> 9...

2018-08-27 18:09:44.530 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:44.530 13411 INFO migrate.versioning.api [-] 9 -> 10...

2018-08-27 18:09:44.939 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:44.939 13411 INFO migrate.versioning.api [-] 10 -> 11...

2018-08-27 18:09:45.848 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:45.848 13411 INFO migrate.versioning.api [-] 11 -> 12...

2018-08-27 18:09:46.526 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:46.526 13411 INFO migrate.versioning.api [-] 12 -> 13...

2018-08-27 18:09:47.185 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:47.185 13411 INFO migrate.versioning.api [-] 13 -> 14...

2018-08-27 18:09:47.838 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:47.838 13411 INFO migrate.versioning.api [-] 14 -> 15...

2018-08-27 18:09:48.125 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:48.126 13411 INFO migrate.versioning.api [-] 15 -> 16...

2018-08-27 18:09:49.025 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:49.026 13411 INFO migrate.versioning.api [-] 16 -> 17...

2018-08-27 18:09:51.552 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:51.553 13411 INFO migrate.versioning.api [-] 17 -> 18...

2018-08-27 18:09:53.516 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:53.517 13411 INFO migrate.versioning.api [-] 18 -> 19...

2018-08-27 18:09:54.223 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:54.223 13411 INFO migrate.versioning.api [-] 19 -> 20...

2018-08-27 18:09:54.662 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:54.662 13411 INFO migrate.versioning.api [-] 20 -> 21...

2018-08-27 18:09:54.996 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:54.996 13411 INFO migrate.versioning.api [-] 21 -> 22...

2018-08-27 18:09:55.864 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:55.865 13411 INFO migrate.versioning.api [-] 22 -> 23...

2018-08-27 18:09:56.274 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:56.274 13411 INFO migrate.versioning.api [-] 23 -> 24...

2018-08-27 18:09:58.062 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:09:58.062 13411 INFO migrate.versioning.api [-] 24 -> 25...

2018-08-27 18:10:02.043 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:02.043 13411 INFO migrate.versioning.api [-] 25 -> 26...

2018-08-27 18:10:02.205 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:02.205 13411 INFO migrate.versioning.api [-] 26 -> 27...

2018-08-27 18:10:02.285 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:02.285 13411 INFO migrate.versioning.api [-] 27 -> 28...

2018-08-27 18:10:02.343 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:02.344 13411 INFO migrate.versioning.api [-] 28 -> 29...

2018-08-27 18:10:02.452 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:02.453 13411 INFO migrate.versioning.api [-] 29 -> 30...

2018-08-27 18:10:02.510 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:02.510 13411 INFO migrate.versioning.api [-] 30 -> 31...

2018-08-27 18:10:02.569 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:02.569 13411 INFO migrate.versioning.api [-] 31 -> 32...

2018-08-27 18:10:03.715 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:03.715 13411 INFO migrate.versioning.api [-] 32 -> 33...

2018-08-27 18:10:05.389 13411 WARNING py.warnings [-] /usr/lib/python2.7/dist-packages/sqlalchemy/sql/schema.py:2999: SAWarning: Table 'encryption' specifies columns 'volume_type_id' as primary_key=True, not matching locally specified columns 'encryption_id'; setting the current primary key columns to 'encryption_id'. This warning may become an exception in a future release

  ", ".join("'%s'" % c.name for c in self.columns)


2018-08-27 18:10:06.103 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:06.103 13411 INFO migrate.versioning.api [-] 33 -> 34...

2018-08-27 18:10:06.856 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:06.856 13411 INFO migrate.versioning.api [-] 34 -> 35...

2018-08-27 18:10:07.575 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:07.575 13411 INFO migrate.versioning.api [-] 35 -> 36...

2018-08-27 18:10:08.446 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:08.447 13411 INFO migrate.versioning.api [-] 36 -> 37...

2018-08-27 18:10:09.208 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:09.208 13411 INFO migrate.versioning.api [-] 37 -> 38...

2018-08-27 18:10:09.983 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:09.983 13411 INFO migrate.versioning.api [-] 38 -> 39...

2018-08-27 18:10:10.692 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:10.692 13411 INFO migrate.versioning.api [-] 39 -> 40...

2018-08-27 18:10:14.722 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:14.722 13411 INFO migrate.versioning.api [-] 40 -> 41...

2018-08-27 18:10:15.383 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:15.383 13411 INFO migrate.versioning.api [-] 41 -> 42...

2018-08-27 18:10:15.433 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:15.434 13411 INFO migrate.versioning.api [-] 42 -> 43...

2018-08-27 18:10:15.484 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:15.484 13411 INFO migrate.versioning.api [-] 43 -> 44...

2018-08-27 18:10:15.544 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:15.544 13411 INFO migrate.versioning.api [-] 44 -> 45...

2018-08-27 18:10:15.602 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:15.603 13411 INFO migrate.versioning.api [-] 45 -> 46...

2018-08-27 18:10:15.680 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:15.681 13411 INFO migrate.versioning.api [-] 46 -> 47...

2018-08-27 18:10:15.836 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:15.837 13411 INFO migrate.versioning.api [-] 47 -> 48...

2018-08-27 18:10:16.519 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:16.519 13411 INFO migrate.versioning.api [-] 48 -> 49...

2018-08-27 18:10:17.789 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:17.789 13411 INFO migrate.versioning.api [-] 49 -> 50...

2018-08-27 18:10:18.528 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:18.529 13411 INFO migrate.versioning.api [-] 50 -> 51...

2018-08-27 18:10:19.222 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:19.223 13411 INFO migrate.versioning.api [-] 51 -> 52...

2018-08-27 18:10:19.941 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:19.941 13411 INFO migrate.versioning.api [-] 52 -> 53...

2018-08-27 18:10:22.496 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:22.497 13411 INFO migrate.versioning.api [-] 53 -> 54...

2018-08-27 18:10:23.100 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:23.100 13411 INFO migrate.versioning.api [-] 54 -> 55...

2018-08-27 18:10:24.203 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:24.203 13411 INFO migrate.versioning.api [-] 55 -> 56...

2018-08-27 18:10:24.288 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:24.289 13411 INFO migrate.versioning.api [-] 56 -> 57...

2018-08-27 18:10:24.347 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:24.347 13411 INFO migrate.versioning.api [-] 57 -> 58...

2018-08-27 18:10:24.405 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:24.406 13411 INFO migrate.versioning.api [-] 58 -> 59...

2018-08-27 18:10:24.464 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:24.464 13411 INFO migrate.versioning.api [-] 59 -> 60...

2018-08-27 18:10:24.520 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:24.520 13411 INFO migrate.versioning.api [-] 60 -> 61...

2018-08-27 18:10:25.826 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:25.826 13411 INFO migrate.versioning.api [-] 61 -> 62...

2018-08-27 18:10:26.829 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:26.829 13411 INFO migrate.versioning.api [-] 62 -> 63...

2018-08-27 18:10:26.887 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:26.887 13411 INFO migrate.versioning.api [-] 63 -> 64...

2018-08-27 18:10:27.588 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:27.588 13411 INFO migrate.versioning.api [-] 64 -> 65...

2018-08-27 18:10:29.454 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:29.454 13411 INFO migrate.versioning.api [-] 65 -> 66...

2018-08-27 18:10:32.035 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:32.036 13411 INFO migrate.versioning.api [-] 66 -> 67...

2018-08-27 18:10:32.104 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:32.105 13411 INFO migrate.versioning.api [-] 67 -> 68...

2018-08-27 18:10:32.195 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:32.195 13411 INFO migrate.versioning.api [-] 68 -> 69...

2018-08-27 18:10:32.280 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:32.281 13411 INFO migrate.versioning.api [-] 69 -> 70...

2018-08-27 18:10:32.338 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:32.339 13411 INFO migrate.versioning.api [-] 70 -> 71...

2018-08-27 18:10:32.396 13411 INFO migrate.versioning.api [-] done

2018-08-27 18:10:32.397 13411 INFO migrate.versioning.api [-] 71 -> 72...

2018-08-27 18:10:32.455 13411 INFO migrate.versioning.api [-] done

root@nrsonLinux:~#


b. /etc/nova/nova.conf 구성


root@nrsonLinux:~# vi /etc/nova/nova.conf

...

[cinder]

os_region_name = RegionOne

...


c. service 재시작


root@nrsonLinux:~# service nova-api restart

root@nrsonLinux:~# service cinder-scheduler restart

root@nrsonLinux:~# service cinder-api restart

root@nrsonLinux:~#


d. cinder sqlite 제거


root@nrsonLinux:~# rm -f /var/lib/cinder/cinder.sqlite

root@nrsonLinux:~#


cinder Storage Node 구성

이번 가이드에서는 한 개의 스토리지 노드에 비어있는 로컬 블록 스토리지 장치(/dev/sdb)를 사용하지만, 특정 환경에서는 다른 값으로 대체할 수 있습니다.

해당 서비스는 LVM 드라이버를 사용하는 장치 위에 논리 볼륨을 프로비저닝하고 iSCSI 전송을 통해 인스턴스에 제공합니다.

1. 스토리지 장치 설치 및 구성


root@nrsonLinux:~# apt-get install lvm2

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

lvm2 is the newest version (2.02.133-1ubuntu10).

root@nrsonLinux:~#


2. LVM 물리 볼륨 /dev/sdb 생성


root@nrsonLinux:~# pvcreate /dev/sdb1

  Physical volume "/dev/sdb1" successfully created

root@nrsonLinux:~# pvdisplay

  --- Physical volume ---

  PV Name               /dev/sda3

  VG Name               cl_nrson

  PV Size               237.28 GiB / not usable 0

  Allocatable           yes

  PE Size               4.00 MiB

  Total PE              60743

  Free PE               1

  Allocated PE          60742

  PV UUID               ch7ODQ-Fqgt-bgPe-DoTH-57d1-2cLt-iVdrhj


  --- Physical volume ---

  PV Name               /dev/sdb2

  VG Name               cl_nrson

  PV Size               931.04 GiB / not usable 0

  Allocatable           yes (but full)

  PE Size               4.00 MiB

  Total PE              238347

  Free PE               0

  Allocated PE          238347

  PV UUID               ug1VOw-4UkL-cVGh-3R03-iA6P-RMQH-e0LLph


  "/dev/sdb1" is a new physical volume of "479.88 MiB"

  --- NEW Physical volume ---

  PV Name               /dev/sdb1

  VG Name

  PV Size               479.88 MiB

  Allocatable           NO

  PE Size               0

  Total PE              0

  Free PE               0

  Allocated PE          0

  PV UUID               MJPxBg-hHs3-ZHTH-gRzp-yzgk-fk2f-OhetHr


root@nrsonLinux:~#


3. LVM 볼륨 그룹 cinder-volumes를 생성


root@nrsonLinux:~# vgcreate cinder-volumes /dev/sdb1

  Volume group "cinder-volumes" successfully created

root@nrsonLinux:~#


OS에서 볼륨에 연결된 장치를 관리하지만 인스턴스에서만 블록 스토리지 볼륨에 접근할 수 있습니다. 디폴트로 LVM 볼륨 검색 도구는 볼륨이 포함된 블록 스토리지 장치에 대해 /dev 디렉토리를 검색합니다. 프로젝트에서 LVM을 볼륨으로 사용하는 경우엔 검색 도구는 해당 볼륨을 감지하고 캐싱을 하려고 시도하는데, 이는 OS와 프로젝트 볼륨에 다양한 문제를 일으킬 수 있습니다. LVM cinder-volumes 볼륨 그룹을 포함하는 장치만 검색하도록 재구성해야 합니다.

4. /etc/lvm/lvm.conf 파일 편집


...

devices {

...

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

...


필터 배열 내 각 항목은 accept 에 대한 a 또는 reject 에 대한 r 로 시작하고 장치 이름에 대한 정규 표현식을 포합합니다. 배열은 그 외 다른 장치를 거부하기 위해 r/.*/ 로 끝나야 합니다. vgs -vvvv 명령어를 사용하여 필터를 테스트할 수 있습니다.

5. 구성요소 설치


root@nrsonLinux:~# apt-get install cinder-volume python-mysqldb

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

...

...

python-mysqldb is the newest version (1.3.7-1build2).

cinder-volume is the newest version (2:8.1.1-0ubuntu3).

root@nrsonLinux:~#


6. /etc/cinder/cinder.conf 설정


root@nrsonLinux:~# vi /etc/cinder/cinder.conf

[DEFAULT]

rootwrap_config = /etc/cinder/rootwrap.conf

api_paste_confg = /etc/cinder/api-paste.ini

iscsi_helper = tgtadm

volume_name_template = volume-%s

volume_group = cinder-volumes

verbose = True

# Identity 서비스 접근 구성

auth_strategy = keystone

state_path = /var/lib/cinder

lock_path = /var/lock/cinder

volumes_dir = /var/lib/cinder/volumes

# rabbitMQ 메시지 큐 접근 구성

rpc_backend = rabbit

# my_ip 옵션 구성

my_ip = 172.21.70.22

# LVM 드라이버와 함께 LVM 백엔드, cinder-volumes 볼륨 그룹, iSCSI 프로토콜 등의 서비스 구성

enabled_backends = lvm

# Image Service의 위치 구성

glance_host = 172.21.70.22


# database 접근 구성

[database]

connection = mysql+pymysql://cinder:cinder@172.21.70.22:3306/cinder


# rabbitMQ 메시지 큐 접근 구성

[oslo_messaging_rabbit]

rabbit_host = 172.21.70.22

rabbit_userid = openstack

rabbit_password = openstack


# Identity 서비스 접근 구성

[keystone_authtoken]

auth_uri = http://172.21.70.22:5000

auth_url = http://172.21.70.22:35357

auth_plugin = password

project_domain_id = default

user_domain_id = default

project_name = service

username = cinder

password = cinder


# LVM 드라이버와 함께 LVM 백엔드, cinder-volumes 볼륨 그룹, iSCSI 프로토콜 등의 서비스 구성

[lvm]

volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group = cinder-volumes

iscsi_protocol = iscsi

iscsi_helper = tgtadm


# lock 경로 구성

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp


7. 설치 마무리

a. service 재기동


root@nrsonLinux:~# service tgt restart; service cinder-volume restart

root@nrsonLinux:~#


b. cinder SQLite 제거


root@nrsonLinux:~# rm -f /var/lib/cinder/cinder.sqlite

root@nrsonLinux:~#



검증과정
1. admin 권한 부여

root@nrsonLinux:~# source nrsonOpenrc.sh

root@nrsonLinux:~#


2. 서비스 구성요소 확인


root@nrsonLinux:~# cinder service-list

+------------------+----------------+------+---------+-------+----------------------------+-----------------+

|      Binary      |      Host      | Zone |  Status | State |         Updated_at         | Disabled Reason |

+------------------+----------------+------+---------+-------+----------------------------+-----------------+

| cinder-scheduler |   nrsonLinux   | nova | enabled |   up  | 2018-08-28T08:49:25.000000 |        -        |

|  cinder-volume   |   nrsonLinux   | nova | enabled |  down | 2018-08-28T08:47:10.000000 |        -        |

|  cinder-volume   | nrsonLinux@lvm | nova | enabled |   up  | 2018-08-28T08:49:32.000000 |        -        |

+------------------+----------------+------+---------+-------+----------------------------+-----------------+

root@nrsonLinux:~#


지금까지 OpenStack 구성요소인 신더(cinder) 블록 스토리지를 구성해 보았습니다. 다음시간에는 스위프트(swift) 오브젝트 스토리지에 대해 알아보겠습니다.



728x90
반응형