OpenStack Compute Node Kurulumu – Bölüm 7

tarafından 29 Mayıs 2016 tarihinde Openstack kategorisine yazıldı.

Merhaba,

Compute, IAAS sisteminin en önemli parçasıdır. Openstack Compute, cloud computing system’in yönetimini yapar. Compute birden fazla bileşenle çalışmaktadır. Zaten kurulum esnasında da bunu göreceğiz. Birden fazla bileşen ile çalıştığı için hem controller üzerinde hemde compute sunucusu üzerinde çeşitli işlemler yapacağız. Tabi ilerleyen bölümlerde Neutron kurulumunda da hem controller hemde compute üzerinde çeşitli işlemler yapacağız. Compute service’in code name’i nova’dır.

İlk olarak controller üzerinde yapılacak işlemlerden başlayacağız. Her servisi kurarken yeni bir database oluşturuyoruz. Aynı işlemi bu makalede de yapacağız.

Controller Node üzerinde yapılacak işlemler:

 mysql -u root -p 

root kullanıcısı ile database server’e connect oluyoruz.

 CREATE DATABASE nova; 

nova isimli bir database oluşturuyoruz.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
->   IDENTIFIED BY 'Password1';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
->   IDENTIFIED BY 'Password1';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller' \
->   IDENTIFIED BY 'Password1';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'compute' \
->   IDENTIFIED BY 'Password1';
Query OK, 0 rows affected (0.00 sec)

nova database’ine erişim haklarını düzenliyoruz. NOVA_DBPASS yazan bölümleri kullanmak istediğiniz şifreler ile değiştirmeyi unutmayın. İşlemi tamamladıktan sonra exit ile buradan çıkabilirsiniz.

source admin-openrc.sh

User’ları oluşturmadan önce admin-openrc.sh’i çalıştırmamız gerekiyor.


root@controller:/home/tayfun# openstack user create --password-prompt nova
User Password:
Repeat User Password:
+----------+----------------------------------+
| Field    | Value                            |
+----------+----------------------------------+
| email    | None                             |
| enabled  | True                             |
| id       | 1562485790dd4648a63458fb8115aac5 |
| name     | nova                             |
| username | nova                             |
+----------+----------------------------------+

nova user’ı oluşturuyoruz.


root@controller:/home/tayfun# openstack role add --project service --user nova admin
+-------+----------------------------------+
| Field | Value                            |
+-------+----------------------------------+
| id    | b5a70251e6e645dabdabea75e44ddeeb |
| name  | admin                            |
+-------+----------------------------------+

Bir önceki bölümde oluşturmuş olduğumuz nova user’ına admin role’unu ekliyoruz.


root@controller:/home/tayfun# openstack service create --name nova \
>   --description "OpenStack Compute" compute
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Compute                |
| enabled     | True                             |
| id          | 1e56f3189f9944a99e7edd68b9c50c83 |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+

nova için yeni bir service oluşturuyoruz.


root@controller:/home/tayfun# openstack endpoint create \
>   --publicurl http://controller:8774/v2/%\(tenant_id\)s \
>   --internalurl http://controller:8774/v2/%\(tenant_id\)s \
>   --adminurl http://controller:8774/v2/%\(tenant_id\)s \
>   --region RegionOne \
>   compute
+--------------+-----------------------------------------+
| Field        | Value                                   |
+--------------+-----------------------------------------+
| adminurl     | http://controller:8774/v2/%(tenant_id)s |
| id           | bfcab7a63e9a4c878c00628a6e6d4e4d        |
| internalurl  | http://controller:8774/v2/%(tenant_id)s |
| publicurl    | http://controller:8774/v2/%(tenant_id)s |
| region       | RegionOne                               |
| service_id   | 1e56f3189f9944a99e7edd68b9c50c83        |
| service_name | nova                                    |
| service_type | compute                                 |
+--------------+-----------------------------------------+

Nova için API endpoint’lerini oluşturuyoruz. Kurulum gereksinimlerini tamamladıktan sonra artık Compute service’in ihtiyaç duyacağı diğer paketleri kuracağız.


apt-get install nova-api nova-cert nova-conductor nova-consoleauth \
nova-novncproxy nova-scheduler python-novaclient

Yukarıdaki komut ile gerekli paketleri yüklüyoruz. Paket kurulumları tamamlandıktan sonra artık nova.conf dosyasını editlemeye başlayabiliriz.

vi /etc/nova/nova.conf 

nova.conf dosyasını yukarıdaki komut ile editliyoruz.


[database]

connection = mysql://nova:NOVA_DBPASS@controller/nova

database bölümüne yukarıdaki bölümü ekliyoruz. Burada NOVA_DBPASS yazan bölüme nova için oluşturmuş olduğunuz database password’unu belirtmeyi unutmayın.


[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

Default ve oslo_messaging_rabbit bölümlerini editliyoruz. Burada RABBIT_PASS yazan bölüme rabbitmq message queue servisine erişim için gerekli olan password’u yazın. Bir önceki bölümde bunu belirtmiştim.


[DEFAULT]
...
auth_strategy = keystone

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = NOVA_PASS

Default ve keystone_authtoken bölümlerine yukarıdaki verileri ekliyoruz. NOVA_PASS yazan bölüme Identity service’de oluşturmuş olduğumuz nova user’ının password’unu yazıyoruz. [keystone_authtoken] bölümünde yer alan diğer değerleri silebilirsiniz.

[DEFAULT]
...
my_ip = 192.168.1.100
vncserver_listen = 192.168.1.100
vncserver_proxyclient_address = 192.168.1.100

Default bölümü altına controller’ınızın IP adresini ekliyoruz. Burada my_ip sekmesine controller’ın management IP’sini yazıyoruz. VNC proxy içinde IP belirtmemiz gerekiyor. Onun içinde controller’ın management IP’sini belirtiyoruz.

[glance]
...
host = controller

Image service’in nerede çalıştığını belirtiyoruz. Benim kullandığım yapıda Image service yani glance controller üzerinde kurulu olduğu için host olarak controller’ı belirtiyorum.

[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp

lock path’i belirtiyoruz.


[DEFAULT]
...
verbose = True

Bunu opsiyonel olarak yazabilirsiniz. Troubleshooting işlemlerini kolaylaştırmak için verbose logging’i enable ediyor bu komut.

 su -s /bin/sh -c "nova-manage db sync" nova 

Son aşamada nova database’ini sync ediyoruz.

Bütün işlemleri tamamladık bu aşamadan sonra artık servislerimizi restart etmemiz gerekiyor.


# service nova-api restart
# service nova-cert restart
# service nova-consoleauth restart
# service nova-scheduler restart
# service nova-conductor restart
# service nova-novncproxy restart

Servislerimizi başarılı bir şekilde restart olduysa, bu bütün işlemleri doğru yaptığımız anlamına gelmektedir.

Default olarak Ubuntu paketleri ile SQLite database’i kurulmaktadır. Bunu silmek için aşağıdaki komutu kullanıyoruz.

rm -f /var/lib/nova/nova.sqlite

Default database’ide kaldırdıktan sonra artık Compute node üzerindeki ayarlarımıza başlayabiliriz.

Compute Node üzeirnde yapılacak işlemler:

Compute node üzerinde compute servisi çalışmaktadır. Bu servis birçok hypervisor’u support etmektedir. Bu servis saysesinde VM deploy edebilir veya instance’lar deploy edebilirsiniz.

Comput enode üzerinde tüm ntp konfigurasyonlarının yapılması gerekmektedir. Ben zaten ilk bölümde bunları yaptığım için direk kuruluma başlayacağım.


apt-get install nova-compute sysfsutils

Yukarıdaki komut ile paketlerin kurulumunu yapıyoruz. Daha sonra nova.conf dosyasını editlememiz gerekiyor.

vi /etc/nova/nova.conf

Yukarıdaki komut ile nova.conf dosyasını editlemeye başlıyoruz.


[DEFAULT]
...
rpc_backend = rabbit

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS

İlk olarak Default veoslo_messaging_rabbit bölümlerini editliyoruz. RabbitMQ’nun erişimi için bunu yapmamız gerekiyor. RABBIT_PASS yazan bölüme RabbitMQ için oluşturmuş olduğumuz openstack account’unun şifresini yazıyoruz.


[DEFAULT]
...
auth_strategy = keystone

[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = NOVA_PASS

Default ve keystone_authtoken bölümlerini editliyoruz. Identity service’in erişimi için bunu yapmamız gerekli. NOVA_PASS yazan bölüme nova user’ı için Identity service oluştururken vermiş olduğumuz şifreyi yazıyoruz. Keystone_authtoken bölümünde yazan diğer seçenekleri remove edebilirsiniz.


[DEFAULT]
...
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS

MANAGEMENT_INTERFACE_IP_ADDRESS yazan bölüme, compute node’umuzun management network’unu yazıyoruz.


[DEFAULT]
...
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = MANAGEMENT_INTERFACE_IP_ADDRESS
novncproxy_base_url = http://controller:6080/vnc_auto.html

Yine bu bölümde MANAGEMNET_INTERFACE_IP_ADDRESS yazan yere  compute node’umuzun managemnet network ‘unu yazıyoruz.


[glance]
...
host = controller

glance’in çalıştığı sunucuyu belirtiyoruz.


[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp

lock path’i belirtiyoruz.


[DEFAULT]
...
verbose = True

Opsiyonel olarak, troubleshooting işlemlerini kolaylaştırmak için verbose logging’i enable duruma getirebilirsiniz.

egrep -c '(vmx|svm)' /proc/cpuinfo

Yukarıdaki komutun sonucunda 1 veya üzeri bir sayı karşınıza çıkarsa, hardware acceleration support edildiği anlamına gelir. Ekstra bir konfigurasyon yapmanıza gerek bulunmamaktadır.

service nova-compute restart

Yukarıdaki komut ile servisleri restart ediyoruz.

Ubuncu’nun default paketleri ile SQLite database’i kurulmaktadır. Bunu aşağıdaki komut ile siliyoruz.

rm -f /var/lib/nova/nova.sqlite

Tüm işlemleri tamamladıktan sonra artık yaptığımız işlemleri doğrulmamız gerekiyor. Bunun için controller node’a login oluyoruz.

source admin-openrc.sh

Yukarıdaki script ile admin credentials’leri yüklüyorum.

root@controller:/home/tayfun# nova service-list
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-cert        | controller | internal | enabled | up    | 2016-05-29T12:16:42.000000 | -               |
| 2  | nova-consoleauth | controller | internal | enabled | up    | 2016-05-29T12:16:42.000000 | -               |
| 3  | nova-scheduler   | controller | internal | enabled | up    | 2016-05-29T12:16:52.000000 | -               |
| 4  | nova-conductor   | controller | internal | enabled | up    | 2016-05-29T12:16:42.000000 | -               |
| 5  | nova-compute     | compute    | nova     | enabled | up    | 2016-05-29T12:16:51.000000 | -               |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+

nova servis’inin düzgün çalıştığını görüyoruz. Endpoint’lerin düzgün çalıştığını görmek için ise;

nova endpoints

3

Yukarıdaki görüntüden de anlayacağınız üzere endpoint’lerimizde başarılı bir şekilde çalışıyor.

Bir sonraki bölümde networking’in kurulumuna başlayacağız.

Umarım faydalı olmuştur.

İyi çalışmalar.

 

email

Bu yazı blog üzerinde Tayfun DEĞER tarafından paylaşılmıştır. 2009 yılında açılan blog kısa zaman içerisinde büyük bir izleyici kitlesine sahip olmuştur.Tayfun DEĞER danışmanlık ve eğitimler vermektedir. vExpert 2013-2015, VCP5, VCP5-DT, VCP-Cloud ve MCSE sertifikalarına sahiptir.Twitter 'dan @tayfundeger veya RSS ile sitedeki değişiklikleri takip edebilirsiniz.