OpenStack Sunucularının Hazırlanması – Bölüm 3
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.
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 ".*" ".*" ".*"
İşlemleri tamamladıktan sonra artık Identity Service kurulumuna başlayabiliriz.
Umarım faydalı olmuştur.
İyi çalışmalar.