OpenStack Compute Node Kurulumu – Bölüm 7
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
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.