OpenStack Sunucularının Hazırlanması – Bölüm 3

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

Merhaba,

Bir önceki bölümde gereksinimler hakkında detaylı bilgi vermiştim. Bu yazımda, bir önceki bölümde yazmış olduğum gereksinimleri kullanarak kuruluma başlayacağım. OpenStack kurarken tüm sunucular üzerinde işlem yapacağınız için makaleyi iyi takip etmeniz gerekiyor.

Daha önceden kurmuş olduğum Ubuntu 14,04 sunucumu burada kullanacağım. Gereksinimlerde de belirttiğim gibi sunucular da bulunan ethernet sayılarını belirtmiştim. Ben sunucular üzerinde Management, Tunnel, ve Storage network kullanacağım. External network’u sadece Network node’unda kullanacağınız. Bunun yerine management trafiğini kullanacağım.

Benim bu iki sunucuda kullanacağım konfigurasyon aşağıdaki gibidir.

Ben  Compute, Controller ve Network  olarak kullanacağım sunucu üzerinde çalışmaya başlıyorum. İlk olarak network’unu ayarlamam gerekiyor bunun için aşağıdaki komutu çalıştırıyoruz. Network, hostname ile ilgili çeşitli işlemler yapacağım.

Controller sunucusunun hazırlanması:

 vi /etc/network/interfaces 

bölümüne giriş yapıyoruz.


root@controller:/home/tayfun# cat /etc/network/interfaces
iface lo inet loopback
auto lo

auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
up route add default gw 192.168.1.1
dns-search      tayfundeger.local
dns-nameservers 192.168.1.160 192.168.1.1 8.8.8.8

wq! ile vi editor’u kapatıyoruz. Interface’i save ettikden sonra, interface’leri up duruma getirmemiz gerekiyor. Bunun için aşağıdaki komutu kullanıyoruz.

 ifup eth0;ifup eth1

ifconfig komutu ile network’un durumunu kontrol ediyoruz.

Vermiş olduğumuz IP’ler geçerli oldu. IP işlemini tammaladıktan sonra bu node üzerinde hostname ayarlamamız gerekiyor. Ben sunucularda DNS ile uğraşmak istemediğim için host kayıtlarına compute ve controller’ın ve network’un bilgilerini yazacağım.

Bu işlemi gerçekleştirmek için aşağıdaki path’e giriş yapıyoruz.

vi /etc/hosts

Karşımıza açılan bölüme aşağıdaki bilgileri giriyoruz.

root@compute:/home/tayfun# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       compute.tayfundeger.local compute
192.168.1.100       controller.tayfundeger.local controller
192.168.1.101       network.tayfundeger.local network
192.168.1.103       compute.tayfundeger.local compute

Tabi burada ben DNS ile uğraşmak istemediğim için bu şekilde hosts dosyasını editliyorum. Host dosyasını editledikten sonra hostname’ide kontrol etmem gerekiyor. Bunun için aşağıdaki komutu çalıştırıyorum.


root@controller:/home/tayfun# cat /etc/hostname
controller

Sizde /etc/hostname’i kontrol ettiğinizde compute’u goruyorsanız sorun bulunmamaktadır. Eğer yok ise hostname’i eklemeniz gerekmektedir.

Compute sunucusunun hazırlanması:

 vi /etc/network/interfaces 

bölümüne giriş yapıyoruz.


192.168.1.103   compute.tayfundeger.local compute
root@compute:/home/tayfun# cat /etc/network/interfaces
iface lo inet loopback
auto lo

auto eth0
iface eth0 inet static
address 192.168.1.103
netmask 255.255.255.0
up route add default gw 192.168.1.1
auto eth1
iface eth1 inet static
address 10.0.1.31
netmask 255.255.255.0
auto eth2
iface eth2 inet static
address 10.0.2.31
netmask 255.255.255.0
dns-search      tayfundeger.local
dns-nameservers 192.168.1.160 192.168.1.1 8.8.8.8

wq! ile vi editor’u kapatıyoruz. Interface’i save ettikden sonra, interface’leri up duruma getirmemiz gerekiyor. Bunun için aşağıdaki komutu kullanıyoruz.

 ifup eth0;ifup eth1;eth2

ifconfig komutu ile network’un durumunu kontrol ediyoruz.

Yukarıda da gördüğünüz gibi vermiş olduğumuz IP’ler geçerli oldu. IP işlemini tammaladıktan sonra bu node üzerinde hostname ayarlamamız gerekiyor. Ben sunucularda DNS ile uğraşmak istemediğim için host kayıtlarına compute ve controller’ın ve network’un bilgilerini yazacağım.

Bu işlemi gerçekleştirmek için aşağıdaki path’e giriş yapıyoruz.

vi /etc/hosts

Karşımıza açılan bölüme aşağıdaki bilgileri giriyoruz.

root@compute:/home/tayfun# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       compute.tayfundeger.local compute
192.168.1.100       controller.tayfundeger.local controller
192.168.1.101       network.tayfundeger.local network
192.168.1.103       compute.tayfundeger.local compute

Tabi burada ben DNS ile uğraşmak istemediğim için bu şekilde hosts dosyasını editliyorum. Host dosyasını editledikten sonra hostname’ide kontrol etmem gerekiyor. Bunun için aşağıdaki komutu çalıştırıyorum.

Bu işlemi gerçekleştirmek için aşağıdaki path’e giriş yapıyoruz.

vi /etc/hostname
compute

wq! ile bunu kayıt ediyoruz ve bu sunucu üzerindeki işlemleri tamamlıyoruz.

Network sunucusunun hazırlanması:

 vi /etc/network/interfaces 

bölümüne giriş yapıyoruz.


root@network:/home/tayfun# cat /etc/network/interfaces
iface lo inet loopback
auto lo

auto eth0
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
up route add default gw 192.168.1.1
auto eth1
iface eth1 inet static
address 10.0.1.21
netmask 255.255.255.0
auto eth2
iface eth2 inet static
address 192.168.1.102
netmask 255.255.255.0
dns-search      tayfundeger.local
dns-nameservers 192.168.1.160 192.168.1.1 8.8.8.8

wq! ile vi editor’u kapatıyoruz. Interface’i save ettikden sonra, interface’leri up duruma getirmemiz gerekiyor. Bunun için aşağıdaki komutu kullanıyoruz.

 ifup eth0;ifup eth1;eth2

ifconfig komutu ile network’un durumunu kontrol ediyoruz.

Yukarıda da gördüğünüz gibi vermiş olduğumuz IP’ler geçerli oldu. IP işlemini tammaladıktan sonra bu node üzerinde hostname ayarlamamız gerekiyor. Ben sunucularda DNS ile uğraşmak istemediğim için host kayıtlarına compute ve controller’ın ve network’un bilgilerini yazacağım.

Bu işlemi gerçekleştirmek için aşağıdaki path’e giriş yapıyoruz.

vi /etc/hosts

Karşımıza açılan bölüme aşağıdaki bilgileri giriyoruz.

root@compute:/home/tayfun# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       compute.tayfundeger.local compute
192.168.1.100       controller.tayfundeger.local controller
192.168.1.101       network.tayfundeger.local network
192.168.1.103       compute.tayfundeger.local compute

Tabi burada ben DNS ile uğraşmak istemediğim için bu şekilde hosts dosyasını editliyorum. Host dosyasını editledikten sonra hostname’ide kontrol etmem gerekiyor. Bunun için aşağıdaki komutu çalıştırıyorum.

Bu işlemi gerçekleştirmek için aşağıdaki path’e giriş yapıyoruz.

vi /etc/hostname
network

wq! ile bunu kayıt ediyoruz ve bu sunucu üzerindeki işlemleri tamamlıyoruz.

Bütün işlemleri tamamladıktan sonra ntp’i kurmamız gerekiyor. Bunun için aşağıdaki komutu çalıştırıyoruz. Bu işlemi OpenStack’in servislerinin çalışacağı tüm sunuculara kurmamız gerekiyor.

 apt-get install ntp 

Yukarıdaki komutu çalıştırdıktan sonra ntp kurulumu yapılıyor. Eğer 404 found uyarıları ile karşılaşırsanız “apt-get update” komutu çalıştırmanız gerekir.


root@compute:/home/tayfun# apt-get install ntp
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libopts25
Suggested packages:
ntp-doc
The following NEW packages will be installed:
libopts25 ntp
0 upgraded, 2 newly installed, 0 to remove and 168 not upgraded.
Need to get 419 kB/474 kB of archives.
After this operation, 1,677 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu/ trusty-updates/main ntp amd64 1:4.2.6.p5+dfsg-3ubuntu2.14.04.8 [419 kB]
Fetched 419 kB in 1s (287 kB/s)
Selecting previously unselected package libopts25:amd64.
(Reading database ... 55709 files and directories currently installed.)
Preparing to unpack .../libopts25_1%3a5.18-2ubuntu2_amd64.deb ...
Unpacking libopts25:amd64 (1:5.18-2ubuntu2) ...
Selecting previously unselected package ntp.
Preparing to unpack .../ntp_1%3a4.2.6.p5+dfsg-3ubuntu2.14.04.8_amd64.deb ...
Unpacking ntp (1:4.2.6.p5+dfsg-3ubuntu2.14.04.8) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up libopts25:amd64 (1:5.18-2ubuntu2) ...
Setting up ntp (1:4.2.6.p5+dfsg-3ubuntu2.14.04.8) ...
* Starting NTP server ntpd                                                                                                                           [ OK ]
Processing triggers for libc-bin (2.19-0ubuntu6.5) ...
Processing triggers for ureadahead (0.100.0-16) ...
root@compute:/home/tayfun#

NTP’yi  3 sunucu yani Compute, Controller ve Network üzerinde gerçekleştirdik.

Controller üzerindeki NTP ayarları:

Controller üzerindeki NTP ayarlarını yapmak için aşağıdaki komutu çalıştırıyoruz.

 vi /etc/ntp.conf 

Burada aşağıdaki parametreleri eklememiz gerekmektedir.


# By default, exchange time with everybody, but don't allow configuration.
server controller iburst
restrict -4 default kod notrap nomodify
restrict -6 default kod notrap nomodify

NTP üzerindeki işlemleri tamamladıktan sonra ntp servisini restart etmemiz gerekiyor.


root@controller:/home/tayfun# service ntp restart
* Stopping NTP server ntpd                                                                                                           [ OK ]
* Starting NTP server ntpd                                                                                                           [ OK ]

Compute ve Network sunucuları üzerindeki NTP ayarları:


vi /etc/ntp.conf

Yukarıdaki conf dosyasına girdikten sonra server ile başlayan tüm ifadelerin önüne # işareti koyuyoruz. Node’ların controller’dan ntp’yi güncellemesi için bu işlemi yapıyoruz. Bu işlemi yaptıkdan sonra aşağıdaki parametreyi ekliyoruz.


server controller iburst

!wq ile ntp.conf dosyasını kayıt ediyoruz. Bütün işlemleri tamamladıktan sonra aşağıdaki komut ile servisleri restart ediyoruz.

 service ntp restart 

OpenStack repository’lerini enable duruma getirmek için aşağıdaki komutu çalıştırıyoruz. Bunu tüm sunucular üzerine çalıştıracağız.

apt-get install ubuntu-cloud-keyring
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu" \
"trusty-updates/kilo main" > /etc/apt/sources.list.d/cloudarchive-kilo.list

Yukarıdaki komutu çalıştırdıktan sonra paketleri upgrade etmek için aşağıdaki komutu kullanıyoruz.

 apt-get update && apt-get dist-upgrade 

OpenStack , verileri depolamak, bilgileri toplamak için bir database’e ihtiyaç duyar. Ben burada Controller üzerine MariaDB kuracağım. Database’i controller üzerine kurmak şarttır. Yapıda bulunan diğer OpenStack sunucularınada MySql’in client’ini kuracağız.

Sadece Controller:

 apt-get install mariadb-server python-mysqldb 

root@controller:~# apt-get install mariadb-server python-mysqldb
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl
libmariadbclient18 libmysqlclient18 libterm-readkey-perl mariadb-client-5.5
mariadb-client-core-5.5 mariadb-common mariadb-server-5.5
mariadb-server-core-5.5 mysql-common
Suggested packages:
libclone-perl libmldbm-perl libnet-daemon-perl libplrpc-perl
libsql-statement-perl libipc-sharedcache-perl mailx mariadb-test tinyca
python-egenix-mxdatetime mysql-server-5.1 mysql-server python-mysqldb-dbg
The following NEW packages will be installed:
libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl
libmariadbclient18 libmysqlclient18 libterm-readkey-perl mariadb-client-5.5
mariadb-client-core-5.5 mariadb-common mariadb-server mariadb-server-5.5
mariadb-server-core-5.5 mysql-common python-mysqldb
0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
Need to get 11.6 MB of archives.
After this operation, 118 MB of additional disk space will be used.

Y butonu ile database kurulumuna başlıyoruz.

mariadb

Database kurulumunda bizden password istenecektir. Unutmayacağımız bir password belirtiyoruz:)

Kurulum tamamlandıktan sonra aşağıdaki komutu uyguluyoruz. /etc/mysql/conf.d/mysqld_openstack.cnf dosyasını create etmemiz gerekiyor.

 vi /etc/mysql/conf.d/mysqld_openstack.cnf 

Yukarıdaki dosya içerisine aşağıdaki bilgileri yazıyoruz.


[mysqld]
bind-address = 192.168.1.100
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

Burada dikkat etmeniz gereken nokta; bind-address yazan bölüm internal IP adresi olmalıdır. Gerekli düzenlemeyi yaptıkdan sonra aşağıdaki komut ile database servisini restart ediyoruz.

root@controller:/etc/mysql/conf.d# service mysql restart
* Stopping MariaDB database server mysqld                                                                                                                     [ OK ]
* Starting MariaDB database server mysqld                                                                                                                     [ OK ]

Database kurulumunu tamamladıktan sonra default olarak gelen database config’i üzerinde çeşitli ayarlar değiştirmemiz gerekiyor. Bunun için aşağıdaki komutu kullanıyoruz.


mysql_secure_installation

Default olarak zaten tüm sorulara Y butonu ile cevap vermemiz gerekiyor.  Tüm işlemleri tamamladıktan sonra artık Message queue kurmamız gerekiyor. OpenStack servisler arasındaki operasyonlar ve durum bilgilerini koordine edebilmesi için message queue kullanır. Message queue servisi genellikle controller node üzerinde çalışır. OpenStack RabbitMQ, Qpid ve ZeroMQ dahil olmak üzere birçok message queue servisini destekler. Ben burada RabbitMQ kuracağım.

İşlemi controller üzerinde gerçekleştireceğim. Bunun için aşağıdaki komutu kullanarak RabbitMQ paketlerini yüklüyoruz.

 apt-get install rabbitmq-server 

Kurulum tamamlandıktan sonra RabbitMQ’ya openstack user’ı tanımlamamız gerekiyor. Bunun için aşağıdaki komutu kullanıyoruz.

 rabbitmqctl add_user openstack RABBIT_PASS 

RABBIT_PASS yazan bölüme user için kullanacağımız password’u belirtiyoruz. Daha sonra openstack user’ı için gerekli permission’ları ayarlamamız gerekiyor. Bunun için aşağıdaki komutu kullanıyoruz.

 rabbitmqctl set_permissions openstack ".*" ".*" ".*" 

openstack2

İşlemleri tamamladıktan sonra artık Identity Service kurulumuna başlayabiliriz.

Umarım faydalı olmuştur.

İyi çalışmalar.

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.