Openstack Networking Router , sadece cli !

Islemlere baslamadan once ilgili komutlari calistiracaginiz sunucuda veya client’da ilgili Openstack RC (environment variables) dosyasini ayarlayin ve calistirin. Daha fazla bilgi icin bakiniz Openstack Networking VXLAN , sadece cli!

Amacimiz elimizdeki VXLAN networklerini internete ve/veya birbirleri arasinda eristirebilmek. Openstack’de bu islem icin Network Node‘lar kullaniliyor. Network Node’lari ile Controller Node’lari ayni yerde kosabildikleri gibi birbirlerinden izole sekildede calisabilirler. DVR (Distributed Virtual Router) olmadan once tum trafigin Network Node’lar uzerinden gecmesi gerekiyor idi fakat DVR’dan sonra Computer Node’larda devreye girdi ve trafik artik dagitik bir sekilde islenmeye basladi fakat burada trafigi SNAT ve DNAT olarak ayirmakta fayda var, SNAT trafigi halen Network Node uzerinden, DNAT trafigi ise Compute Node uzerinden ilerlemekte.

Openstack networking router konusurken ayni zamanda linux networking namespaces hakkinda bilgimiz ve ip netns cli komutlarinin kullanimi bizim icin onemli. Linux Networking Namespace bizim tcp/ip stack’inin ayni isletim sistemi uzerinde clone’lanmasi , bu clone’lari domain olarak nitelendirsek , her domain icersinde overlap networkler gibi tamamen birbirinden bagimsiz , loopback interface’ler , ethernet interface’ler , iptables tablolari ve routing tablolari icermekte , ip komutunun netns parametreside bu farkli domainlerdeki/namespace’lerdeki tcp/ip stack’ini yonetmek icin kullandigimiz cli komutu.

Router diyince artik ML2 scope’undan cikmis oluyoruz , yeni scope’umuz L3. Konfigrasyonlarimiz Neutron Server (neutron.conf) ve L3_Agent(l3_agent.ini) uzerinde olacak.

  • Oncelikle /opt/stack/service/neutron-20160722T142043Z/etc/neutron.conf bakalim
    • Dikkat edilmesi gereken konu l3_router plugin’in set edilmis olmasi
    • [DEFAULT]
      service_plugins = neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
    • Eger service_plugin tanimli degil ise Horizon GUI’de my.sa goremeyebilirsiniz
  • Bir sonraki konfigrasyon dosyasi sudo vi /opt/stack/service/neutron-20160722T142043Z/etc/l3_agent.ini
    • Burada iki onemli parametre var biri interface_driver digeri ise external_network_bridge ek olarak agent_mode‘da bizim icin onemli.
    • interface_driver kullandiginiz mechanism_driver ne ise o set edilmis olmali ornegin linux bridge veya OpenvSwitch(OVS)
    • external_network_bridge onemli cunku sisteme disariya dogru cikisin hangi interface’den yapilacagini belirtiyor
    • agent_mode ile DVR kullanip kullanmayacaginizi belirtiyor
  • Cli’da Router yaratmak icin
    • Oncelikle bir halihazirda elimizde Router var mi bakalim ?
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-list
    • Simdi yaratalim bir tane, asagidaki ornekte demo projesi icin bu islem yapilmakta
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-create Router1_demoprj –tenant-id 68ca3d8aa2294bc1bc606acbb8b9405a
    • Eger silmek isterseniz router-delete paramteresini kullanabilirsiniz.
    • Bir sonraki adima gecmeden once yarattigimiz router’in id‘sini not edelim neutron router-list komutu ile –> d4fe02b8-0cc0-4662-8573-b3b3f783baaf
  • Yukarda belirttigimiz gibi Router hem farkli network’leri birbiri ile konusturmakta hemde internet’e dogru cikislari saglamakta.
    • Once network’ler arasi konusmayi gorelim. Bir onceki Openstack Networking VXLAN , sadece cli! da sadece Demo-WebServers-Network1 (10.10.1.0/24) networku icin instance yaratmistik, bir tanede Demo-DBServers-Network1(10.10.2.0/24) icin yaratalim. Bu kez port yaratmayacagiz , instance yaratilirken otomatik olarak yaratilacak.
      • Asagidaki komutu calistirmadan once ortam degiskeni olan  OS_PROJECT_NAME ‘i guncelelyin
      • stack@helion-cp1-c0-m1-mgmt:~$ nova boot –flavor m1.tiny –image cirros-0.3.3-x86_64 DBServer1 –nic net-id=bb8dd87f-466e-4082-b69b-c6436bb12a18
      • Elimizde iki adet instance var biri WebServer1 10.10.1.6 digeri ise DBServer1 10.10.2.4
      • Ek olarak daha sonra kullanacagimiz ilgili subnet’lerin id’lerini not edelim neutron subnet-list komutu ile
        • dbsubnet –> fcf2a7da-9cda-45f9-9c9b-51750ca6d1bf
        • web-subnet –> fdb33ffc-43d5-415a-a090-fc8ccb37684d
      • Baslamadan once durumu resmeder isek, iki network var , her ikisine birer instance bagli.
        DUNYA/Internet mevcut , birde biraz once yarattigimiz router’imiz . Bir sonraki adimda router’i DB ve WEB subnet’lerine baglayacagiz
        screen-shot-2016-10-17-at-11-43-57
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-interface-add d4fe02b8-0cc0-4662-8573-b3b3f783baaf fcf2a7da-9cda-45f9-9c9b-51750ca6d1bf
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-interface-add d4fe02b8-0cc0-4662-8573-b3b3f783baaf fdb33ffc-43d5-415a-a090-fc8ccb37684d
      • Yarattiginiz interface/port’lari silmek icin herzaman router-interface-delete komutunu kullanabilirsiniz.
      • Yeni resim asagidaki gibi oldu ,eger Security Group bazinda bir sikinti yok ise DB ile Web sunuculari birbirleri ile konusabilecekler
        screen-shot-2016-10-17-at-12-01-53
      • Ayni goruntuyu cli’danda alabiliriz
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-port-list d4fe02b8-0cc0-4662-8573-b3b3f783baaf
    • Neutron Router sadece neutron networkler arasinda degil ayni zamanda instance’larin internet erisimleri icinde kullanilmakta ki buna Openstack’de external network olarak adlandiriliyor. Genelde bu network daha onceden yaratilmistir , eger hangi network’un external network oldugunu bilmiyorsaniz oncelikle neutron net-list yapip neutron net-show komutu ile router:external parametresi True olan network external network olacaktir.
    • Yukardaki eforu harcamaktansa sadece benim floating ip pool’um var mi acaba diyede bakabiliriz , buda bize ilgili external networkleri direkt verecektir.
    • stack@helion-cp1-c0-m1-mgmt:~$ nova floating-ip-pool-list
      • Simdi yukarda yaptigimiz gibi benzer bir islem yapacagiz , sadece bu kez komut biraz degisecek ama yine bizim router_id‘sine , external_network_id‘sine ihtiyac olacak . Ilgili komutu calistirdigimizda external network’den bir ip adresi alacagiz ve bu ip adresi bizim instance’larimiz icin SNAT konfigrasyonu tanimlanmis olacak fakat bunun disinda internet’den instance’larimiza dogru hicbir erisim acilmayacak
      • Router_id –> d4fe02b8-0cc0-4662-8573-b3b3f783baaf
      • External_Network_id –> efb5448d-7593-46f7-90ad-bd33206c2c7b
      • stack@helion-cp1-c0-m1-mgmt:~$ neutron router-gateway-set d4fe02b8-0cc0-4662-8573-b3b3f783baaf efb5448d-7593-46f7-90ad-bd33206c2c7b
      • Yaptiginiz konfigrasyonu geri almak icin her zaman neutron router-gateway-clear parametresini kullanabilirsiniz.
      • Iste , yeni network baglanti semamiz , time to ping google.comscreen-shot-2016-10-17-at-14-47-51
    • Bu islemlerden sonra sira eger disaridan ilgili instance’a erisilmek istenir ise ne olacak konusu var. Burada floating ip denilen bir kavram isin icine giriyor.
      • Floating IP adresi direkt instance‘a atanabildigi gibi bir proje icin yaratilip instance’a atanmaya hazir halde bulundurulabilir.
      • Once sistem uzerinde halihazirda floating ip var mi bakalim
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-list
      • Bir tane yaratalim , ext-net bizim enternal network’un adi
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-create ext-net
      • Silmek icin floating ip id’sine ihtiyac var , floatingip-list diyerek elde edebilirsiniz
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-delete 89ce7905-0fb5-445c-b8b6-f8f5ff45a166
      • Bundan sonra ilgili floating ip adresini ilgili instance’a atamaya geldi sira. Bunun icin ilgili instance’in hangi port’una karsilik gelen id bilgisini kullanacagiz , diyelimki bizim web server’a floating ip atayacagiz. Ilgili sunucu ip adresi 10.10.1.6 idi, once bu ip adresinin atandigi neutron port id_sini bulalim
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron port-list | grep 10.10.1.6
        • –> 9759d23d-7863-497d-88c3-02067af12714
      • Atayacagimiz floating ip adresinin id’sini bulalim.
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-list
        • –> 54096c72-64f2-4133-984c-2061d4ba2b5a
      • Birbirlerine baglayalim
        • stack@helion-cp1-c0-m1-mgmt:~$ neutron floatingip-associate 54096c72-64f2-4133-984c-2061d4ba2b5a 9759d23d-7863-497d-88c3-02067af12714
        • Daha sonra eger security group’lardan ilgili izinler mevcut ise ilgili servis icin ilgili erisimler acilmis olacak.
      • Floating ip baglantisini kaldirmak icin neutron floatingip-disassociate

Kolay gelsin

VM

Posted on 03/11/2016, in Neutron Networking, Openstack and tagged , , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: