Şu zamanlar tez konum ve iş yerinde verilen görev sebebi ile Openstack ile ilgileniyorum. Neutron’un kompleks olması sebebi ile bazı işleri nova-network üzerinde yapmak zamandan tasarruf oluyor.
Nova network nedir diye az biraz bahsetmek gerekirse Openstack’in temel bileşenlerinden biri olan nova sanallaştırma katmanı ile birlikte çalışan bazı basit(Neutron’a göre) network işlemlerinin gerçekleştirildiği yapıdır.
Novanın esas geliştirilme amacı networkten ziyade gerek API gerek komut satırı ile gelen istekleri sizin ve sanallaştırıcınızın(ESX,QEMU,Hyper-V) arasında mekik dokumak ve orada olan işlerde sanallaştırıcılara görev vermektir. Yani oluşturulan makinelerdeki karmakşık internet işlemleri(Load balancing, Layer 2, Layer 3 ) kontrol etmek veya düzenlemek üzerine tanımlanmamıştır. Daha sonra isteklere göre sonra Nova orjini üzerine container yapıları ile birlikte çalışabilen Magnum veya sanallaştırılmamış makineler için Ironic gibi başka modüller ortaya çıkmıştır ama hiç bir zaman bu projeye dahil edilmemiştir.
Nova’nın ne olduğundan bahsettikten sonra işlemimize başlayabiliriz.
Ben bu blog yazısında nova-network, Devstack ,VMware ESX kullanarak basit Nova ile oluşturulan ve gerçek IP işlemlerinin novanın yönettiği dnsmasq servisinden alan bir sistem paylaşacağım. Bu sistem ile birlikte ayarlamış olduğunuz veya kullanıma hazır olarak indirilen sanal makineleri VDS mantığında kullanabilirsiniz.
http://tr.enisozgen.com/openstack-devstack-kurulum/ sayfasında yazdığım ./stack.sh komutuna kadar olan kısmına kadar olan kısmı hazırlıyoruz ve sistemin o kısmından Devstack’in özelleştme dosyası olan local.conf dosyasını kendi işimiz için özelleştireceğiz.
git clone ile indiridiğimiz klasörün içine girdikten sonra touch komutu ile bir dosya oluşturup. içine kullanacağımız ve yasaklayacağımız openstack servislerini yazacağız.
1 2 |
touch local.conf nano local.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-cpu,n-net,n-cond,n-sch,rabbit,mysql,horizon VIRT_DRIVER=vsphere VMWAREAPI_IP=<ESX veya Vspehere IPniz> VMWAREAPI_USER=<ESX veya VMware vSphere parolaniz> VMWAREAPI_PASSWORD=<ESX veya VMware vSphere parolaniz> VMWAREAPI_CLUSTER=<Cluster Nameniz> DATABASE_PASSWORD=<Password> RABBIT_PASSWORD=<Password> SERVICE_TOKEN=<Password> SERVICE_PASSWORD=<Password> ADMIN_PASSWORD=<Password> HOST_IP=<Kurulacak Makinemizin IPSI> enable_service n-net # Bizim ihtiyacımız olmayacak Neutron(Quantum) servisleri disable_service q-svc disable_service q-agt disable_service q-dhcp disable_service q-l3 disable_service q-meta disable_service neutron |
IP atama işlemleri
Servislerimiz yüklendikten sonra her birini screen komutu ile kontrol ediniz ve hatalı kısım var ise hatasını arayınız. Şimdiki kısımda esas kısımda yapmayı istediğimiz nova-network ile yapacağımız IP’i atamalarını yapacağız. Nova network bize otomatik olarak IP olarak 10.0.0.0/24 olarak atıyor ve işlemlere lokalde NATlama üzerinden çıkmamıza imkan sağlıyor. Tabiki bizim isteğimiz bu değil.
- Network elemanlarımızı listeleyelim
1 2 3 |
nova-manage network list id IPv4 IPv6 start address DNS1 DNS2 VlanID project uuid 1 10.0.0.0/24 None 10.0.0.2 8.8.4.4 None None None 73ce8a71-955c-4642-b7d5-c22d71 |
- Network aralığını sorun çıkarmaması ve otomatik olarak buradan atama yapması için kendi IP aralığımızı silelim
1 |
nova-manage network delete --fixed_range 10.0.0.0/24 |
- Kendi listemiz olan IP aralığını ekleyelim
1 |
nova-manage network create --fixed_range_v4 IP/24 --label enis --gateway GATEWAY |
Bu ayarlardan sonra nova ile açacağımız her makine bu aralıktan açılacak ve gerçek IP’ler ile işlem yapılacaktır. Ana Node’n bozulması veya servislerin birinden bozulması hiç bir sıkıntı çıkarmayacaktır.
Çalışma mantığına gelirsek Openstack makinelere, tümleşik çalıştığı dnsmasq servisi ile bire bir MAC adresi ve IP eşlemesi yaparak DHCP ile dağıttığı makinelerin IP çakışma sorunu hiç yaşanmayacak.
Gerekli durumda dnsmasq-nova.conf dosyasından manuel olarak müdahale edilebilir IP taşıma işlemi yapılabilir.
Veya verdiğiniz aralıkta kullanılan servisiniz var ise gerekli IP’leri rezerve edebilirsiniz.
1 |
nova-manage fixed reserve --address IP_ADDRESS |
Özet
Bu blog sayfasinda dnsmasq , devstack nova-network hakkında yazdım. Bu işlemlerin hepsi IPv4 üzerinde yapılan konfigürasyonlar idi. Bu işlemler aynı şekilde IPv6 hakkındada aynı şekilde yapılabilmektedir. Bunun için yapılacak işlemlerin olduğu Openstack dökümanların olduğu yeri Linkler kısmında verdim umarım işinize yarayacak test ortamı yaratabilirsiniz. İyi günler 🙂