이 섹션에서는 Controller 노드에 코드 명 nova 인 Compute 서비스를 설치하고 구성하는 방법을 설명합니다.
이 작업은 controller 노드에서 수행합니다.
Compute 서비스를 설치 및 구성하기 전에 데이터베이스, 서비스 자격 증명 및 API 엔드 포인트를 생성해야합니다.
1. 데이터베이스를 작성하려면 다음 단계를 완료하십시오.
[root@controller ~]# mysql -u root -p
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 서비스 자격 증명을 만듭니다.
[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 | +---------------------+----------------------------------+
[root@controller ~] (admin-openrc):~# openstack role add --project service --user nova admin
이 명령은 출력을 제공하지 않습니다.
[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 방화벽 드라이버를 비활성화해야합니다.
/etc/nova/nova.conf
의 [neutron]
섹션을 구성하십시오 . 자세한 내용은 CentOS 7 에 Openstack Train 버전 설치 - 6. Networking service – neutron installation 를 참조하세요.[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
cell0
및 cell1
이 올바르게 등록되었는지 확인하십시오.
[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 | +-------+--------------------------------------+----------------------------------------------------+--------------------------------------------------------------+----------+
[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 노드에 코드 명 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 방화벽 서비스를 비활성화해야합니다.
/etc/nova/nova.conf
파일의 [neutron]
섹션을 구성하십시오 . 자세한 내용은 CentOS 7 에 Openstack Train 버전 설치 - 6. Networking service – neutron installation 를 참조하세요.[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 | +--------------------------------------+---------------------+-------+---------+