centos_7_에_openstack_train_버전_설치_-_5._compute_service_nova_installation

CentOS 7 에 Openstack Train 버전 설치 - 5. Compute service – nova installation

Controller 노드 설치 및 구성

이 섹션에서는 Controller 노드에 코드 명 nova 인 Compute 서비스를 설치하고 구성하는 방법을 설명합니다.

이 작업은 controller 노드에서 수행합니다.

Compute 서비스를 설치 및 구성하기 전에 데이터베이스, 서비스 자격 증명 및 API 엔드 포인트를 생성해야합니다.

1. 데이터베이스를 작성하려면 다음 단계를 완료하십시오.

  • 데이터베이스 액세스 클라이언트를 사용하여 root사용자 로 데이터베이스 서버에 연결합니다 .
[root@controller ~]# mysql -u root -p
  • nova_api, nova 및 nova_cell0데이터베이스를 만들기:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
  • 데이터베이스에 대한 적절한 액세스 권한을 부여하십시오.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';

NOVA_DBPASS 부분을 적절한 암호로 교체하십시오 .

  • 데이터베이스 액세스 클라이언트를 종료하십시오.

2. admin자격 증명 관리자 전용 CLI 명령에 액세스하려면 :

[root@controller ~]# . admin-openrc
[root@controller ~] (admin-openrc):~#

3. Compute 서비스 자격 증명을 만듭니다.

  • nova사용자 생성 :
[root@controller ~] (admin-openrc):~# openstack user create --domain default --password-prompt nova

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 8a7dbf5279404537b1c7b86c033620fe |
| name                | nova                             |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
  • nova사용자 에게 admin역할을 추가하십시오 .
[root@controller ~] (admin-openrc):~# openstack role add --project service --user nova admin

이 명령은 출력을 제공하지 않습니다.

  • nova서비스 엔터티를 만듭니다 .
[root@controller ~] (admin-openrc):~# openstack service create --name nova \
  --description "OpenStack Compute" compute

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 060d59eac51b4594815603d75a00aba2 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

4. Compute API 서비스 엔드 포인트를 생성합니다.

[root@controller ~] (admin-openrc):~# openstack endpoint create --region RegionOne \
  compute public http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 3c1caa473bfe4390a11e7177894bcc7b          |
| interface    | public                                    |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 060d59eac51b4594815603d75a00aba2          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1               |
+--------------+-------------------------------------------+

[root@controller ~] (admin-openrc):~# openstack endpoint create --region RegionOne \
  compute internal http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | e3c918de680746a586eac1f2d9bc10ab          |
| interface    | internal                                  |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 060d59eac51b4594815603d75a00aba2          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1               |
+--------------+-------------------------------------------+

[root@controller ~] (admin-openrc):~# openstack endpoint create --region RegionOne \
  compute admin http://controller:8774/v2.1

+--------------+-------------------------------------------+
| Field        | Value                                     |
+--------------+-------------------------------------------+
| enabled      | True                                      |
| id           | 38f7af91666a47cfb97b4dc790b94424          |
| interface    | admin                                     |
| region       | RegionOne                                 |
| region_id    | RegionOne                                 |
| service_id   | 060d59eac51b4594815603d75a00aba2          |
| service_name | nova                                      |
| service_type | compute                                   |
| url          | http://controller:8774/v2.1               |
+--------------+-------------------------------------------+

1. 패키지 설치 :

[root@controller ~]# yum install openstack-nova-api openstack-nova-conductor \
  openstack-nova-novncproxy openstack-nova-scheduler

2. /etc/nova/nova.conf 파일을 편집하고 다음 조치를 완료하십시오.

  • [DEFAULT]섹션에서 컴퓨팅 및 메타 데이터 API를 활성화합니다
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
  • [api_database][database]섹션 에서 데이터베이스 액세스 구성 :
[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

NOVA_DBPASS부분을 앞에서 설정한 암호로 바꿉니다.

  • [DEFAULT]섹션에서 RabbitMQ메시지 큐 액세스 구성 :
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller:5672/

RABBIT_PASS부분을 앞에서 설정한 비밀번호로 바꿉니다.

  • [api][keystone_authtoken]섹션에서 아이덴티티 서비스 액세스 구성:
[api]
# ...
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 = nova
password = NOVA_PASS

NOVA_PASS 부분을 앞에서 설정한 비밀번호로 바꿉니다.

[keystone_authtoken] 섹션 에서 나머지 다른 옵션을 주석 처리하거나 제거 하십시오.

  • [DEFAULT]섹션에서 컨트롤러 노드의 관리 인터페이스 IP 주소를 사용하는 옵션 my_ip 구성:
[DEFAULT]
# ...
my_ip = 10.0.0.11
  • [DEFAULT]섹션에서 네트워킹 서비스에 대한 지원을 활성화 :
[DEFAULT]
# ...
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

기본적으로 Compute는 내부 방화벽 드라이버를 사용합니다. 네트워킹 서비스에는 방화벽 드라이버가 포함되어 있으므로 nova.virt.firewall.NoopFirewallDriver 방화벽 드라이버를 사용하여 Compute 방화벽 드라이버를 비활성화해야합니다.

[neutron]
# ...
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET

NEUTRON_PASS, METADATA_SECRET를 설정한 암호로 변경하세요

  • [vnc]섹션에서 컨트롤러 노드의 IP 주소 인터페이스 관리를 사용하도록 VNC 프록시를 구성 :
[vnc]
enabled = true
# ...
server_listen = $my_ip
server_proxyclient_address = $my_ip
  • [glance]섹션에서 이미지 서비스 API의 위치를 구성 :
[glance]
# ...
api_servers = http://controller:9292
  • [oslo_concurrency]섹션에서 잠금 경로를 구성 :
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
  • [placement]섹션에서 배치 서비스에 대한 구성 액세스 :
[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

PLACEMENT_PASS 부분에 앞에서 설정한 비밀번호로 바꿉니다. 섹션에서 나머지 다른 옵션을 주석 처리하거나 제거 하십시오.

3. nova-api 데이터베이스를 초기화 합니다.

[root@controller ~]# su -s /bin/sh -c "nova-manage api_db sync" nova

이 출력에서 ​​오류 메시지를 무시하십시오.

4. cell0데이터베이스 등록 :

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

5. cell1셀 만들기 :

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

6. nova 데이터베이스를 초기화 합니다.

[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova

7. nova cell0cell1이 올바르게 등록되었는지 확인하십시오.

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova
+-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
|  Name |                 UUID                 |                   Transport URL                    |                     Database Connection                      | Disabled |
+-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
| cell0 | 00000000-0000-0000-0000-000000000000 |                       none:/                       | mysql+pymysql://nova:****@controller/nova_cell0?charset=utf8 |  False   |
| cell1 | f690f4fd-2bc5-4f15-8145-db561a7b9d3d | rabbit://openstack:****@controller:5672/nova_cell1 | mysql+pymysql://nova:****@controller/nova_cell1?charset=utf8 |  False   |
+-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
  • Compute 서비스를 시작하고 시스템이 부팅 될 때 시작되도록 구성합니다.
[root@controller ~]# systemctl enable \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service
[root@controller ~]# systemctl start \
    openstack-nova-api.service \
    openstack-nova-scheduler.service \
    openstack-nova-conductor.service \
    openstack-nova-novncproxy.service

Compute 노드 설치 및 구성

이 섹션에서는 Compute 노드에 코드 명 nova 인 Compute 서비스를 설치하고 구성하는 방법을 설명합니다.

이 작업은 compute 노드에서 수행합니다.

1. 패키지 설치 :

[root@compute01 ~]# yum install openstack-nova-compute

2. /etc/nova/nova.conf파일을 편집하고 다음 조치를 완료하십시오.

  • [DEFAULT]섹션에서 컴퓨팅 및 메타 데이터 API를 활성화합니다
[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata
  • [DEFAULT]섹션에서 RabbitMQ 메시지 큐 액세스 구성:
[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

RABBIT_PASS 부분을 앞에서 설정한 암호로 변경합니다.

  • [api][keystone_authtoken]섹션에서 아이덴티티 서비스 액세스 구성:
[api]
# ...
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 = nova
password = NOVA_PASS

NOVA_PASS부분을 앞에서 설정한 암호로 변경합니다.
[keystone_authtoken] 섹션 에서 나머지 다른 옵션을 주석 처리하거나 제거 하십시오.

  • [DEFAULT]섹션에서 my_ip옵션 구성:
[DEFAULT]
# ...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

MANAGEMENT_INTERFACE_IP_ADDRESS부분을 컴퓨팅 노드에서 관리 네트워크 인터페이스의 IP 주소 (일반적으로 예제 아키텍처 의 첫 번째 노드에 대해 10.0.0.31)로 바꿉니다.

  • [DEFAULT]섹션에서 네트워킹 서비스에 대한 지원을 활성화 :
[DEFAULT]
# ...
use_neutron = true
firewall_driver = nova.virt.firewall.NoopFirewallDriver

기본적으로 Compute는 내부 방화벽 서비스를 사용합니다. 네트워킹에는 방화벽 서비스가 포함되어 있으므로 nova.virt.firewall.NoopFirewallDriver방화벽 드라이버를 사용하여 Compute 방화벽 서비스를 비활성화해야합니다.

[neutron]
# ...
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS

NEUTRON_PASS부분을 앞에서 설정한 암호로 변경하십시오.

  • [vnc]섹션에서 구성 원격 콘솔 액세스를 활성화 :
[vnc]
# ...
enabled = true
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

서버 구성 요소는 모든 IP 주소를 수신하고 프록시 구성 요소는 계산 노드의 관리 인터페이스 IP 주소 만 수신합니다. 기본 URL은 웹 브라우저를 사용하여이 컴퓨팅 노드에서 인스턴스의 원격 콘솔에 액세스 할 수있는 위치를 나타냅니다.

웹브라우저로 원격 VNC콘솔을 띄우기 위해서는 controller도메인에 대해 DNS질의가 가능해야 합니다. 웹브라우저 PC의 hosts파일에 등록을 하거나 url의 controller이름을 아이피로 변경하시기 바랍니다.

  • [glance]섹션에서 이미지 서비스 API의 위치를 구성 :
[glance]
# ...
api_servers = http://controller:9292
  • [oslo_concurrency]섹션에서 잠금 경로를 구성 :
[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp
  • [placement]섹션에서 배치 API를 구성 :
[placement]
# ...
region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = PLACEMENT_PASS

PLACEMENT_PASS부분을 앞에서 설정한 암호로 변경합니다. [placement]섹션의 나머지 다른 옵션을 주석 처리 하십시오.

1. 컴퓨팅 노드가 가상 머신에 대한 하드웨어 가속을 지원하는지 확인합니다.

[root@compute01 ~]# egrep -c '(vmx|svm)' /proc/cpuinfo

이 명령이 1 또는 그보다 큰값을 반환하면 컴퓨팅 노드는 일반적으로 추가 구성이 필요없는 하드웨어 가속을 지원하므로 KVM으로 설정합니다.
이 명령이 0 값을 반환하면 컴퓨팅 노드가 하드웨어 가속을 지원하지 않으므로 libvirt 항목을 KVM 대신 QEMU를 사용 하도록 구성해야합니다 .

  • 다음과 같이 /etc/nova/nova.conf파일의 [libvirt]섹션을 편집하십시오 .
[libvirt]
# ...
virt_type = kvm  # 하드웨어 가속을 지원하지 않으면 qemu로 설정

2. 종속성을 포함하여 Compute 서비스를 시작하고 시스템이 부팅 될 때 자동으로 시작되도록 구성합니다.

[root@compute01 ~]# systemctl enable libvirtd.service openstack-nova-compute.service
[root@compute01 ~]# systemctl start libvirtd.service openstack-nova-compute.service

nova-compute서비스가 시작되지 않으며 /var/log/nova/nova-compute.log 로그파일에 AMQP server on controller:5672 is unreachablenova-compute 오류가 발생하는 경우 controller 노드의 방화벽이 포트 5672에 대한 액세스를 차단하고 있음을 나타냅니다. controller 노드에서 포트 5672를 열고 컴퓨팅 노드에서 서비스를 다시 시작하도록 방화벽을 구성하십시오 .

controller 노드 에서 다음 명령을 실행합니다.

1. 관리자 자격 증명을 로딩하여 관리자 전용 CLI 명령을 활성화 한 다음 데이터베이스에 컴퓨팅 호스트가 있는지 확인합니다.

[root@controller ~]# . admin-openrc

[root@controller ~] (admin-openrc):~# openstack compute service list --service nova-compute
+----+-------+--------------+------+-------+---------+----------------------------+
| ID | Host  | Binary       | Zone | State | Status  | Updated At                 |
+----+-------+--------------+------+-------+---------+----------------------------+
| 1  | node1 | nova-compute | nova | up    | enabled | 2017-04-14T15:30:44.000000 |
+----+-------+--------------+------+-------+---------+----------------------------+

2. 컴퓨팅 호스트 검색 :

[root@controller ~] # su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc
Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc
Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3

새 컴퓨팅 노드를 추가 할 때 컨트롤러 노드에서 nova-manage cell_v2 discover_hosts 명령을 실행 하여 새 컴퓨팅 노드를 등록 해야합니다. 또한 /etc/nova/nova.conf파일을 아래와 같이 수정하여 적절한 간격을 설정할 수 있습니다.

[scheduler]
discover_hosts_in_cells_interval = 300

compute 노드가 정상 등록된 경우 아래와 같이 출력되어야 한다. (compute node 2대인 경우 예시)

[root@controller ~] (admin-openrc):~# openstack compute service list --service nova-compute
+----+--------------+-------------+------+---------+-------+----------------------------+
| ID | Binary       | Host        | Zone | Status  | State | Updated At                 |
+----+--------------+-------------+------+---------+-------+----------------------------+
| 15 | nova-compute | compute02   | nova | enabled | up    | 2019-11-06T13:57:27.000000 |
| 16 | nova-compute | compute01   | nova | enabled | up    | 2019-11-06T13:57:29.000000 |
+----+--------------+-------------+------+---------+-------+----------------------------+


[root@controller ~] (admin-openrc):~# nova hypervisor-list
+--------------------------------------+---------------------+-------+---------+
| ID                                   | Hypervisor hostname | State | Status  |
+--------------------------------------+---------------------+-------+---------+
| 0671b750-b4dc-4bd6-bbd4-58aeb2d4a492 | compute02           | up    | enabled |
| e63ccfc3-409d-450e-b5a9-a82a21e22beb | compute01           | up    | enabled |
+--------------------------------------+---------------------+-------+---------+

비정상적인경우 아래처럼 나올때가 있다.

[root@controller ~] (admin-openrc):~# openstack compute service list --service nova-compute
+----+--------------+-------------+------+---------+-------+----------------------------+
| ID | Binary       | Host        | Zone | Status  | State | Updated At                 |
+----+--------------+-------------+------+---------+-------+----------------------------+
| 15 | nova-compute | compute02   | nova | enabled | up    | 2019-11-06T13:57:27.000000 |
| 16 | nova-compute | compute01   | nova | enabled | up    | 2019-11-06T13:57:29.000000 |
+----+--------------+-------------+------+---------+-------+----------------------------+


## hypervisor 정보가 출력이 안됨
[root@controller ~] (admin-openrc):~# nova hypervisor-list
+----+---------------------+-------+--------+
| ID | Hypervisor hostname | State | Status |
+----+---------------------+-------+--------+
+----+---------------------+-------+--------+

이런경우 관련 설정을 다시 한번 확인하고 서비스를 재기동 해 준다.

1. Controller Node 서비스 재기동

[root@controller ~]# systemctl restart openstack-nova-api.service  \
  openstack-nova-scheduler.service  \
  openstack-nova-conductor.service  \
  openstack-nova-novncproxy.service \ 
  httpd

2. Compute node 서비스 재기동

[root@controller ~]# systemctl restart  libvirtd.service openstack-nova-compute.service

재기동 후 hypervisor를 다시한번 재등록 한다.

[root@controller conf.d] (admin-openrc)# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': 703c9f24-055d-44d6-859b-59af456b279d
Checking host mapping for compute host 'compute02': 0671b750-b4dc-4bd6-bbd4-58aeb2d4a492
Creating host mapping for compute host 'compute02': 0671b750-b4dc-4bd6-bbd4-58aeb2d4a492
Checking host mapping for compute host 'compute01': e63ccfc3-409d-450e-b5a9-a82a21e22beb
Creating host mapping for compute host 'compute01': e63ccfc3-409d-450e-b5a9-a82a21e22beb
Found 2 unmapped computes in cell: 703c9f24-055d-44d6-859b-59af456b279d

[root@controller ~] (admin-openrc):~# nova hypervisor-list
+--------------------------------------+---------------------+-------+---------+
| ID                                   | Hypervisor hostname | State | Status  |
+--------------------------------------+---------------------+-------+---------+
| 0671b750-b4dc-4bd6-bbd4-58aeb2d4a492 | compute02           | up    | enabled |
| e63ccfc3-409d-450e-b5a9-a82a21e22beb | compute01           | up    | enabled |
+--------------------------------------+---------------------+-------+---------+
로그인하면 댓글을 남길 수 있습니다.
  • centos_7_에_openstack_train_버전_설치_-_5._compute_service_nova_installation.txt
  • 마지막으로 수정됨: 2020/09/23 07:59
  • 저자 koov