Monthly Archives: November 2015

KVM, Benim icin yeni bir baslangic – Sanal Sunucu Yaratma (ubuntu-vm-builder)

Simdi sira geldi sanal makine yaratmaya, normalde vmware veya hyper-v kullananlar birkez sanal makine yaratip isletim sistemine gore “sysprep” veya benzeri islemleri yapip daha sonra benzeri sanal makineleri yaratmak icin bu imajlari kullanip yollarina devam ederler , openstack dokumanlarina bakildiginda hazir indirilebilir imajlar mevcut ama nasil iliskilendiriliyor bir sonraki makalede inceleyecegim -> http://docs.openstack.org/image-guide/ubuntu-image.html, ek olarak birde virt-install uygulamasina bakacagim cunku openstack olayinda ilk ornekler virt-install ile 🙂

ubuntu-vm-builder

Burada fazla konusmaktansa direkt komut ve aldigi parametreleri gormek daha guzel olacak 🙂

->libvirt + bridge <-

noroot@kvmci:~$ sudo ubuntu-vm-builder kvm trusty –addpkg linux-image-generic –addpkg openssh-server –arch amd64 –hostname server4 –dest server4 –libvirt qemu:///system –bridge bridge1 –mem 1024 –cpus 1 –ip xxx.yyy.zzz.212 –mask 255.255.255.224 –net xxx.yyy.zzz.192 –bcast xxx.yyy.zzz.223 –gw xxx.yyy.zzz.193 –dns 8.8.8.8 ;

Burada onemli konular ;

  • ilk parametre (kvm|xen) gibi , burada hypervisor olarak kvm kullandigimiz icin kvm yazdim
  • isletim sistemi release adini vermelisiniz mesela “trusty” . Hazirda calistiginiz Ubuntu release adini ogrenmek icin “lsb_release -a” komutunu calistirabilirsiniz.
  • Burada onemli bir bug var , ubuntu trusty derlerken mutlaka “–addpkg linux-image-generic” paramteresini ekleyin aksi taktirde islem sonuclanmayacak, ilgili bug id ve link – > https://bugs.launchpad.net/ubuntu/+source/vm-builder/+bug/1037607
  • Ubuntu icin lutfen dikkat “–addpkg openssh-server” eklemezseniz SSH yapamazsiniz 😀
  • Eger sanal makineyi libvirt ile manage edecekseniz mutlaka bu parametreyi ekleyin “–libvirt qemu:///system”
  • Sanal makinenin sanal network interface’nin baglanacagi bridge’i belirtiyoruz “–bridge bridge1”
  • Memory/cpu gibi bilgiler set edilmis durumda
  • Bunun disinda geri kalan diger paramtereleri vermedik ve onlarin hepsi varsayili olanlar olacak, mesela ;
    • Disk 4 G
    • istenir ise ayretten /opt belirtilebilir ama parametreyi set etmedigimiz icin olmayacak
    • Kullanici adi varsayili olarak ubuntu sifre ubuntu
    • Dil UTC
  • Ek ne tip parametreler set edebilmek icin “sudo ubuntu-vm-builder kvm trusty –help” yazip kontrol edin lutfen
  • Kurulum asamasinda ne oldugunu gormek icin (eger temp path’ini  ubuntu-vm-builder komutunu calistirirken farkli bir yol tanimlamadiysaniz) tail -f /tmp/tmpnMt5S_ bakabilirsiniz
  • Islem bittikten sonra isletim sisteminin icersinde oldugu sanal makinenin qcow2 uzantili dosya ile ilgili ubuntu-vm-builder komutunu nerede calistirdiysaniz, orada olacatir. Islem sonunda tum isletim sistemleri paketleri temp dosyasi adinda ve qcow2 uzantili bir dosyada birlestirilecektir.

 

ubuntu-vm-builder yarattigi isletim sistemi imaji nerede ?

noroot@kvmci:~$ pwd

/home/noroot

noroot@kvmci:~$ ls -al server1/

total 751636

drwxr-xr-x 2 noroot noroot      4096 Nov 27 12:06 .

drwxr-xr-x 9 noroot noroot      4096 Nov 27 15:01 ..

-rwxrwxr-x 1 noroot noroot        68 Nov 27 12:03 run.sh

-rw-r–r– 1 noroot noroot 769720320 Nov 27 12:03 tmpSCgVIU.qcow2

Eger –libvirt qemu:///system eklemezseniz ne olur ? Sanal makineyi libvirt uzerinden yonetemezsiniz , makineyi calistirmak icin islem sonrasi yaratilan bash script’ini kullanmalisiniz.

noroot@kvmci:~$ cd server1/

noroot@kvmci:~/server1$ ls -al

total 751636

drwxr-xr-x 2 noroot noroot      4096 Nov 27 12:06 .

drwxr-xr-x 9 noroot noroot      4096 Nov 27 15:01 ..

-rwxrwxr-x 1 noroot noroot        68 Nov 27 12:03 run.sh

-rw-r–r– 1 noroot noroot 769720320 Nov 27 12:03 tmpSCgVIU.qcow2

run.sh icerigi ….

noroot@kvmci:~/server1$ cat run.sh

#!/bin/sh

exec kvm -m 1024 -smp 1 -drive file=tmpSCgVIU.qcow2 “$@”

Simdi sunucuyu gorelim, burada dikkat etmemiz gereken konu “–all” olayi eger bunu eklemezseniz ilgili makineyi goremezsiniz 😀

 

virsh # list –all

Id    Name                           State

—————————————————-

9     server6                        running

–     server5                        shut off

Calistiralim

noroot@kvmci:~$ virsh start server5

setlocale: No such file or directory

Domain server5 started

Not : Bu arada ben komutlari hep direkt calistiriyorum iserseniz ayni sekilde once “virsh” diyerek virsh# console’a sonrada geri kalan komutu yani “start server5” diyebilirsiniz

Ilgili sanal sunucuyu durdurmak icin , burada “destory” korkutucu gelmesin stop ediyor kendisi 🙂

noroot@kvmci:~$ virsh destroy server5

setlocale: No such file or directory

Domain server5 destroyed

veya

noroot@kvmci:~$ virsh shutdown server5

setlocale: No such file or directory

Domain server5 is being shutdown

Peki sanki bir VMware sanal sunucu gibi vmx dosyasini ve icergini gormek istesek 

noroot@kvmci:~$ virsh edit server5

setlocale: No such file or directory

<domain type=’kvm’>

<name>server5</name>

<uuid>649ccb80-622e-48d2-8a5c-28e5c6f444fd</uuid>

<memory unit=’KiB’>1048576</memory>

<currentMemory unit=’KiB’>1048576</currentMemory>

<vcpu placement=’static’>1</vcpu>

<os>

<type arch=’x86_64′ machine=’pc-i440fx-trusty’>hvm</type>

<boot dev=’hd’/>

</os>

<features>

<acpi/>

</features>

<clock offset=’utc’/>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>destroy</on_crash>

<devices>

<emulator>/usr/bin/kvm</emulator>

<disk type=’file’ device=’disk’>

<driver name=’qemu’ type=’qcow2’/>

<source file=’/home/noroot/server5/tmp9QV2Om.qcow2’/>

<target dev=’hda’ bus=’ide’/>

<address type=’drive’ controller=’0′ bus=’0′ target=’0′ unit=’0’/>

</disk>

<controller type=’usb’ index=’0′>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x01′ function=’0x2’/>

</controller>

<controller type=’pci’ index=’0′ model=’pci-root’/>

<controller type=’ide’ index=’0′>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x01′ function=’0x1’/>

</controller>

<interface type=’bridge’>

<mac address=’52:54:00:39:f8:8e’/>

<source bridge=’bridge1’/>

<model type=’virtio’/>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>

</interface>

<input type=’mouse’ bus=’ps2’/>

<input type=’keyboard’ bus=’ps2’/>

<graphics type=’vnc’ port=’-1′ autoport=’yes’ listen=’0.0.0.0′>

<listen type=’address’ address=’0.0.0.0’/>

</graphics>

<video>

<model type=’cirrus’ vram=’9216′ heads=’1’/>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x02′ function=’0x0’/>

</video>

<memballoon model=’virtio’>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x04′ function=’0x0’/>

</memballoon>

</devices>

</domain>

Bundan sonrasi vi editor kullanmak gibi, eger degisiklik yapicaginiz birsey var ise onu degisitip “wq” save edip sanal sunucuyu tekrardan calistiriyorsunuz.

Interface kismina dikkat, burada sanal sunucunun hangi bridge , sunucuya hangi MAC atandigina ve kart tipini gorebilirsiniz.
“virtio” bizim icin onemli cunku cunku yuksek performans’li network ve disk gereksinimleri icin gerekli, kendisini Xen paravirtualized device veya VMware Guest Tools gibi.

<interface type=’bridge’>

<mac address=’52:54:00:39:f8:8e’/>

<source bridge=’bridge1’/>

<model type=’virtio’/>

<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>

</interface>

Aaaaa network calisiyor mu diye kontrol etmeyi unuttuk 😦 

ubuntu@server6:~$ ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=1 ttl=49 time=36.1 ms

64 bytes from 8.8.8.8: icmp_seq=2 ttl=49 time=35.5 ms

64 bytes from 8.8.8.8: icmp_seq=3 ttl=49 time=35.4 ms

Guzel calisiyor… , birde bridge ve ifconfig gorunumune bakalim , asagida bridge’e bagli MAC adresleri aktif olup olmadiklari var

noroot@kvmci:~$ brctl showmacs bridge1

port no mac addr is local? ageing timer

1 00:17:a4:77:0c:95 yes   0.00

1 00:1f:9e:78:e8:87 no   0.32

1 00:24:38:99:bf:00 no   3.57

3 52:54:00:5b:f5:0c no   70.08

1 9c:b6:54:91:cb:2d no   21.43

1 c8:cb:b8:a5:7c:a9 no   0.57

3 fe:54:00:5b:f5:0c yes   0.00

vnet1 bridge e baglanmis , vnet’lerin her biri sanal sunucularin network interface’leri oluyor

noroot@kvmci:~$ brctl show

bridge name bridge id STP enabled interfaces

bridge1 8000.0017a4770c95 no em2

vnet1

ifconfig ciktilarida asagidaki gibi 

vnet1     Link encap:Ethernet  HWaddr fe:54:00:5b:f5:0c

inet6 addr: fe80::fc54:ff:fe5b:f50c/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:629 errors:0 dropped:0 overruns:0 frame:0

TX packets:26569 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:500

RX bytes:67253 (67.2 KB)  TX bytes:1662178 (1.6 MB)

Birde console a nasil dusuyoruzu yapar isek bu is biter 😀 basit anlamda islemleri yapmis olacagiz bunun icin bir iki ayari degisitirip sanal sunucuyu tekrardan calistiracagiz.

Oncelikle sanal sunucu konfograsyon dosyasindaki “graphics”  kisminda 127.0.0.1 yazan kismi asagidaki gibi degisitir ve sanal sunucuyu tekrardan baslatin

<graphics type=’vnc’ port=’-1′ autoport=’yes’ listen=’0.0.0.0′>
<listen type=’address’ address=’0.0.0.0’/>
</graphics>

Yok ise VNC Client indirip , calisitirin. Hangi VNC port’u kullanacaginizi asagidaki komut ile ogrenebilirsiniz

noroot@kvmci:~$ virsh vncdisplay server6

setlocale: No such file or directory

:1

KVM node’un ip adresinin yanina display numarasini ekleyin xxx.yyy.zzz.ttt:1 gibi yukardaki gibi ….

Screen Shot 2015-11-27 at 17.38.29

ve guzellllllll

Screen Shot 2015-11-27 at 17.34.50

Serial Console uzerinden baglanmak icin ; 

https://jaredkipe.com/blog/programming/general/ubuntu-kvm-3-virsh-console-fix/ veya https://help.ubuntu.com/community/KVM/Access

 

VNC Download for MAC : https://www.realvnc.com/download/get/1734/eula/

VM

Advertisements

KVM, Benim icin yeni bir baslangic – Networking 1

Network zamanimizda SDDC ile beraber degisime baslasmis ve VMware NSX , Openstack Networking Neutron , OpenDaylight gibi SDN yaklasimlariylada network alt yapilarini sekillendirme gereksinimlerini koruklemektedir.

Acikcasi o kadar cok VMware ile ilgilenmekten vSwitch , vDS , Virtual Port , Port group , Uplink Port ,  NSX derken KVM, Xen , Openstack networking e donunce soyle bir ne oluyor dedim kendi kendime , onun icin bu konu biraz genis.

Ubuntu dokumantasyonu KVM/Networking anlatirken iki tip seyden bahsediyor ;

  • Usermode Networking
    • Cok basitce guest OS lar network servislerine erisebilirken (NAT yapilmis bir ortam) mesela bir web sayfasini gezip bir yerlere FTP yapabilirken , host edilen ve disariya acik olan servislerin (mesela bir web server olarak calismak (google.com web sitesini host etmek gibi)) sunulmasina imkan verilmez.
  • Bridged Networking –> Bunu simdi uzun uzadiya anlatacagim fakat kisaca kendisi guest OS larin sanal network kartlarinin bagli oldugu bridge ve bu bridge uplink i konumunda olan fiziksel arabirim uzerinden dis network lere erisim saglar.

Oncelikle “Bridge” : Bridge aslinda cok eski bir network deyimi –> http://www.just2good.co.uk/bridgeSwitch.php

Bridge

Essentially, the problem with extending LANs with hubs and repeaters is that signals are amplified, but so too is the noise. Since these devices are dumb, all data is forwarded onto the rest of the network. With many nodes, the result is that the amount of network traffic becomes too volumous and the collision rate increases.

A way around this is to use a more intelligent device such as a bridge. It should be noted that a bridge can be a dedicated piece of hardware, or may also be a suitably configured workstation with two Ethernet network cards.

Bridges allow LANs to be split up into smaller ‘segments’ (called internetworking), yet all machines in the divided network still form a single IP network. A node within a segment in this internetwork will only see frames transmitted by nodes within the same segment, and not frames from nodes in other segments of the internetwork, unless they are forwarded from one segment to the other by the bridge. Hence the bridge performs the filtering of frames in order to limit the amount of network traffic. This is possible because bridges work at Layer 2 (Data Link) of the OSI model. This means that they can examine the data being sent and determine which segment the data needs to be forwarded to.

Gorevi transparan olarak iki network interface i arasinda trafigi gecirmek , OSI ye gore ikinci katmanda calisir yani MAC adresleri ile hasir nesir olur ,  bunu yaparkende protokol bagimsizdir IP , IPX , NetBEUI (heygidi hey) , STP destekler, multiple-bridge destekler

Linux da bridging kernel kodunda ve sanal olarak yapilmakla beraber hardware cihazlara gore birtakim avatajlarida vardir mesela filtering ve traffic shaping gibi . Mesela filtering e ornek olarak “ebtables” verilebilir. Iptables in L2 de calisani gibi dusumebilirsiniz neler yapabilir derseniz buna , ornek derseniz buna tiklayin. Traffic Shaping icin ise Linux da Traffic-Control (tc) ornek verilebilir.

KVM ve sanal makine gozunden baktigimizda bridge = vswitch veya bridge = L2 Switch , yani KVM uzerinde kosan sanal makineleri sanal network interface lerinin baglandigi yazilim tabanli switch. VMware gozunden vSS (vSphere Standard Switches) . Sonuc olarak hypervisor VM ler arasi ve dis networklere dogru trafigi bridge’ler sayesinde iletir.

Burada TUN/TAP , MacVLAN , MacVTap , VEPA diye kavramlar onu sonradan inceleyecegiz. (elde var bir)

Peki Open vSwitch ne ? 

Anahtar konular, elimizde eger birden fazla KVM nodu var ise , network islemlerini bir programatige kavusturmak istiyor isek ve standart trafik bilgi ve olcumleme araclarini  (NetFlow,IPFIX) kullanacaksaniz bu durumda adres Open vSwitch oluyor, biraz daha ayrintiya girecek olur isek.

Durumun Tasinabilirligi : Herhangi bir sanal sunucunun durumunun kolayca saptanabilmesi ve farkli bir KVM host a tasinabilir olmasi gerekir , bunu yaparkende halihazirda sistem calisirken ogrenilmis  L2 learning tablo’larinin , L3 Forwarding tablo’larinin ve set edilmis Access List , QoS , policy routing ve monitoring (NetFlow,IPFIX) ayarlarinin ayni sekilde sanal makinenin yeni yerinde calisiyor olmasi gerekir. Open vswitch bunu saglar.

Network Dinamiklerine cevap verme : Sanal ortamlarda sayisiz vm yaratma , silme , migrate etme gibi islemler yapilir , eger bu islemleri izleyip birseyler tetiklemek istiyorsaniz open vswitch size OVSDB (Network State Database) ve NetFlow gibi araclarla degisiklikleri izleyip aksiyon almanizi saglarlar. Mesela OVSDB sorgulayarak VM Migration lari izleyebilirsiniz. OpenvSwitch hakkinda daha sonra daha ayrintili bakacagim (elde oldu 2)

Baslangic icin bu kadar yeterli, zaten ilk basta linux bridging kullanacagimiz icin , openstack olaylarinida daha sonra girecegimden yola devam (Bu arada openstack e girdigimizde birde ML2 adli plugin le karsilasacagiz ki o da bize KVM host uzerinde networking icin linux bridge mi , openvswitch mi , cisco nexus mu artik ne kullanacagimizi belirleyen bir arabirim olacak) (elde oldu 3)

Simdi bir onceki “KVM, Benim icin yeni bir baslangic – Kurulum” uzerinden devam edelim ;

KVM icin gerekli seyler kurulduktan sonra birkac noktayi belirlemek lazim ;

Oncelikle bir “ifconfig” yapalim , goreceksiniz ki loopback ve ethernet interface’inden farkli bir interface daha var

virbr0    Link encap:Ethernet  HWaddr 76:81:28:9d:b2:05

inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0

UP BROADCAST MULTICAST  MTU:1500  Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Eger “cat /etc/network/interfaces” derseniz hic birsey goremeyeceksiniz 🙂

Bu arada ortada 192.168.122.0/24 bir network turemis ve sart olmasada bridge interface “virbr0” atanmis


Kurulum esnasinda “virbr0” adinda bir bridge yaratilmis ve KVM host uzerindeki herhangi bir fiziksel interface’e atanmamis.

noroot@kvmci:~$ brctl show

bridge name bridge id STP enabled interfaces

virbr08000.000000000000yes


 

Normalde ilk kurulumda herhangi firewall kurali aktif degil idi Ubuntu sunucuda , ne ufw (gufw) nede iptables fakat ilgili kurallar ilgili bridge interface icin otomatik olarak gelmis

noroot@kvmci:~$ sudo iptables -L -v -n

[sudo] password for noroot:

Chain INPUT (policy ACCEPT 236 packets, 20251 bytes)

pkts bytes target     prot opt in     out     source               destination

0     0 ACCEPT     udp  —  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:53

0     0 ACCEPT     tcp  —  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:53

0     0 ACCEPT     udp  —  virbr0 *       0.0.0.0/0            0.0.0.0/0            udp dpt:67

0     0 ACCEPT     tcp  —  virbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:67

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in     out     source               destination

0     0 ACCEPT     all  —  *      virbr0  0.0.0.0/0            192.168.122.0/24     ctstate RELATED,ESTABLISHED

0     0 ACCEPT     all  —  virbr0 *       192.168.122.0/24     0.0.0.0/0

0     0 ACCEPT     all  —  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0

0     0 REJECT     all  —  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

0     0 REJECT     all  —  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 160 packets, 18157 bytes)

pkts bytes target     prot opt in     out     source               destination

0     0 ACCEPT     udp  —  *      virbr0  0.0.0.0/0            0.0.0.0/0            udp dpt:68


 

Birde libvirt kurulumu ile beraber “dnsmasq” turemis durumda , boylece hizli bir sekilde DHCP , DNS , BOOTP/PXE boot gibi servisler hizlica kullanilabilir durumda.

noroot@kvmci:~$ ps -fe | grep dnsmasq

libvirt+  1647     1  0 18:39 ?        00:00:00 /usr/sbin/dnsmasq –conf-file=/var/lib/libvirt/dnsmasq/default.conf

noroot    1824  1714  0 19:04 pts/0    00:00:00 grep –color=auto dn


 

Libvirt api daha onceki makalemizde dedigimiz gibi sadece hypervisor’leri degil ayni zamanda storage, network gibi bilesenleride yonetiyor fakat makalenin bundan sonraki kisminda libvirt virtual networking ile ilgili herhangi birsey yazmayacagim, yapmak istedigim cok kabaca bir VM’e public ip adresi vermek ve onu internet e cikartmak yani bridge i sanki Pass-True cihaz gibi kullanmak.

Oncelikle su fazlaliklari bir atalim , yaratilan bridge , iptables rule lari falan hepsi bir gitsin . Burada libvirt varsayili olarak bu ayarlamalari yaptigindan kaldirmasida cok kolay.

Asagidaki komut  sayesinde libvirt kurulumunda varsayili olarak kurulan default network’unu acilista devreye girmemesini saglayacagiz

noroot@kvmci:~$ virsh net-autostart default –disable

setlocale: No such file or directory

Network default unmarked as autostarted

Durum bu sekilde olacak

noroot@kvmci:~$ virsh net-list

setlocale: No such file or directory

Name                 State      Autostart     Persistent

———————————————————-

default              active     no            yes

Simdi hersey temiz olsun makineyi bir reboot edelim bridge’in kayboldugunu ve iptables kurallarinin gittigini gorelim

Uzerinde calisacagimiz yapinin resmi asagidaki gibi olacak ;

Screen Shot 2015-11-27 at 14.39.02

Yukardaki resimde gordugunuz gibi bir KVM node mevcut ve iki adet network interface’i var, ilgili interface’ler “access mode” tanimli, burada ben ikinci interface’imi “bridge” gereksinimleri icin kullanacagim. Daha sonra sanal makineler yaratilacak ve bridge interface’i kullanaraktan yollarina devam edecekler.

Oncelikle herhangi bir ip adresi atanmamis olan ikinci interface’imi up ediyorum

noroot@kvmci:~$ sudo ifconfig em2 up

brctl” komutu ile “bridge1” adinda bir bridge yaratiyorum

noroot@kvmci:~$ sudo brctl addbr bridge1

[sudo] password for noroot:

Bridge’in kullanacagi network interface’ini set ediyorum

 

noroot@kvmci:~$ sudo brctl addif bridge1 em2

Kontrol edelim ….

noroot@kvmci:~$ brctl show

bridge name bridge id STP enabled interfaces

bridge1 8000.0017a4770c95 no em2

Bridge interface’ini up edelim

noroot@kvmci:~$ sudo ifconfig bridge1 up

Bu islemden sonra “ifconfig” dediginizde bridge interface’inizde gormeye baslayacaksiniz, elimizde henuz makine olmadigindan geri kalan sanal sunucu yaratma ve ilgili bridge interface baglanma olayini o zaman yapacagiz.

Son olarak burada bridge interface yarattigim network interface’i “trunk” ayarlida olabilir , bir baglanti uzerinden birden fazla bridge’de yaratabiliriz ama buradaki makale cok basit bir sekilde neyin ne oldugunu anlamak icin var.

Bu arada ilgili bridge konfigrasyonu KVM Node reboot edildiginde gidecek , kalici ayarlanmis degil.

Guzel Linkler

OVS Hakkinda bunuda izlemeden gecememek lazim bu arada 🙂 https://www.openstack.org/summit/openstack-paris-summit-2014/session-videos/presentation/migrating-production-workloads-from-ovs-to-linux-bridge-w-ml2

http://git.openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=blob_plain;f=FAQ;hb=HEAD
https://github.com/openvswitch/ovs/blob/master/WHY-OVS.md

 

KVM, Benim icin yeni bir baslangic – Kurulum

Biraz acyip olacak simdi /proc/cpuinfo dan islemcinin sanallastirma destegi var mi yokmuyu sorgulamak fakat guzel bir paket varmis “cpu-checker” hic ihtiyacim olmamisti , “kvm-ok” diye bir komut var bu da hos herseyi gosteriyormus ….


 

noroot@kvmci:~$ sudo apt-get install cpu-checker

 

 

noroot@kvmci:~$ kvm-ok

INFO: /dev/kvm exists

KVM acceleration can be used


 

KVM Kurulumuna baslamadan once “libvirt” nedir bi onu anlamak gerek , aslinda daha cok “virsh” komutunu goruyordum her yerde fakat “libvirt” tam olarak nedir pek dikkat etmemistim , simdi anliyorumki “libvirt” aslinda generic bir API , “virsh” komut satirinda calisan libvirt api sini kullanan bir executable, “libvirtd” ise calisan deamon’in adi.

Libvirt API sinin amaci tek bir kutuphane ile birden fazla sanallastirma platform’unun (KVM,VMware,Xen) ve diger network , storage  gibi bilesenleri  yonetmek.

Libvirt FAQ bence onu anlamak icin baslanmasi gereken en guzel yer http://wiki.libvirt.org/page/FAQ#What_is_libvirt.3F
Birde cok kafalara takilan (belkide sadece benim kafama takilmistir) QEMU , KVM-QEMU , KVM diye seyler var ; QEMU emulator olarak geciyor, islemcideki sanallastirma ile gelen ozelliklerini kullanamiyor (Intel-VT ile gelen CPU,RAM,SR-IOV gibi ) fakat virtualizer kullanarak (bu KVM olabilir Xen olabilir) beraber calismaya basladiginda bu kez guest diye adlandirilan sanal makinelerdeki process ler host in CPU sunda direkt calisabilir oluyor
Simdi KVM Kurulumu

vahric:~ vahricmuhtaryan$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Yukardaki kurulumda dikkatimi ceken paketlerden ikisi ; ubuntu-vm-builder ki kendisi Ubuntu tabali sanal makineler yaratmal icin kullaniliyor, birde “virt-install” var  ki kendisi python script olup Red-Hat tarafindan gelistirilmistir.

Bridge-utils , Linux uzerinde bridge yonetimi yapmak icin gerekli olan araclari kuracaktir.

Ubuntu da 14.04 ve sonrasi icin artik kullanici yaratmak ve bu kullaniciyi libvirtd gurubuna eklemek gibi seyler yapmaya gerek yok.

Kurulum bittikten sonra saglama yapalim ;

KVM modulu yuklenmis

noroot@kvmci:~$ lsmod | grep kvm

kvm_intel             143630  0

kvm                   452096  1 kvm_intel

Libvirtd calisiyor

noroot@kvmci:~$ ps -fe | grep libvirtd

root     11766     1  0 19:36 ?        00:00:00 /usr/sbin/libvirtd -d

noroot   12101 12008  0 19:53 pts/2    00:00:00 grep –color=auto libvirtd

Aslinda direkt ‘virsh’ yazip cli> a dusup’de “list” yazabilirsiniz fakat direk console dan -c ile localhost a baglanipda yazabiliyoruz

noroot@kvmci:~$ virsh -c qemu:///system list

setlocale: No such file or directory

Id    Name                           State

—————————————————-

noroot@kvmci:~$

Bundan sonra yonetmek icin eger krafik aramabirim istiyorsaniz “virt-manager” kurabilirsiniz …..

Bir sonraki adimda Networking ….

 

Guzel Linkler :

http://www.qemu.org

Yazilim/Sistem Terimleri ve Uygulamalari – Bir Sistemcinin Yazilim Dunyasiyla Imtahani – Episode 2

A


 

  • Ad-hoc Query : Bildigimiz SQL sorgusundan farki yok fakat kendisi anlik snapshot gibi , o andaki sorgunun sonucu anlaminda, bakiniz –> http://stackoverflow.com/questions/2460954/what-is-ad-hoc-query
  • Ant : Built tool . Java icin kullaniliyor , daha once “Unix Make” kullanilirken cikan problemleri bertaraf etmek icin uretilmis.

B


 

  • Bamboo : Jenkins alternatif (bkn. Jankins) -> Firma : Atlassian
  • Bitbucket : Enterprise surum kontrol sistemi -> Firma : Atlassian

C


 

  • Cruise Control : Jenkins alternatif (bkn. Jankins) Open Source

D


 

  • Developer Advocate : Yazilim gelistirici ile platform arasinda baglantiyi kuran kisi , dokuman yaziyor , isleri kolaylastirmaya calisiyor , iliski kuruyor yazilimcilarla , community guclendiriyor/destekliyor , super bi adam iste 🙂

 

E


 

  • Eclipse  : IDE

G


 

  • Git : Yazilim gelistiricileri icin surum kontrol sistemi . Kendini diger surum kontrolculerden farkli gordugu yerler var
    • Dosya degisikliklerini izlemektense snapshot ile o anki bir butunun durumunu kontrol ediliyor
    • Local de calisiyor , x bir andaki gecmise ait islemleri gormek icin network baglantisina ihtiyaciniz yok
    • Veriyi bir db de ( blob based / ->/Users/vahricmuhtaryan/.git/objects) , verinin degistirilememsi icin SHA1 ile hash lenmisitir
    • (Git ile dosyalarin durumu) -> Commit / Modified / Stage : Commit -> Dosyalar kaydedilmis ve Git deposunda, saglamda demek , Modified : Uzerinde degisiklik yapilmis fakat Stage area da degil demek (muhtemel working directory yani calisma dosyalarinizin oldugu yer),  Stage bir sonraki “commit” e hazir . Buradaki olay working directory ile commit arasinda bir katman daha yaratmak gerektiginde istediginiz dosyanin komit edilmemesinide saglayabilirsiniz , tum yonetim sizde.
  • GitHub : Web tabanli hosted git depo’su .
  • GitLab : Web tabanli hosted git depo’su .
    • Compare 1 : https://about.gitlab.com/2015/01/20/github-enterprise-vs-gitlab-enterprise-edition/
  • Gitter – Kendi community’ni kur , yazis deliler gibi https://gitter.im
  • Gradle : Build Tool

I


 

  • IDE (Integrated Development Environment) : Genelde grafik ara yuzu olan bir editor , icinde derleyici , debugger yani hata ayiklayicisi olan uygulama.
  • IVY : Dependecy Manager https://www.youtube.com/watch?v=DtkgAAT91E0

J


  • Jenkins (Hudson) : Continues Integration Software
    • Cok Moduler (Multiple Plugins)
    • Hem kod depo lari ile entegre ; github , gitlab , bitbucket
    • Hem IDE lerle entegre ; Eclips , Netbeans
    • Hem kod test urunleri ile entegre
    • Hem bug tracker larla entegre : MantisBT
      • Compare : https://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
  • Jar : Java archive . Iceriginde Java kutuphaneleri , gecici dosyalar (Properties File) ve kaynak (Resource File) dosyalari icerir.
  • JSP : html tag + java tag ve java kodu. Server tarafinda derlenir , dinamik web siteleri yaratir.

M


 

N


 

  • NAnt : Free .Net build tool.
  • Nutshell (In a nutshell) : In a few words , yani “KISACASI” veya “UZUN LAFIN KISASI”:)

O


 

P


  • Properties File : Java Properties File ,  bir projenin/uygulamanin konfograsyon verisi ve ayarlarini tutan bir dosya. Ornek : https://www.mkyong.com/java/java-properties-file-examples/

 

R


  • Reference Data : Kendisi bir nevi konfigrasyon datasi sayilabilir , uygulama tarafindan okunabilen (read only) fakat sadece bir admin arayuzu veya mudahelesi ile degistirilebilen , yayinlama (deployment) zamaninda tekrardan yaratilan , uygulamanin ilgili veri olmadan calisamayacagi tanimlama , belki drop-down list , belik vergi gibi x bir bilgiyi iceren veri veya veri kumesi.
  • Resource File : Imaj , video veya cesitli key/value ciflerinin oldugu dizin ve dosyalara verilen ad. https://developer.android.com/guide/topics/resources/providing-resources.html

 

S


 

T


 

 

U


 

V


 

  • Visiual Studio : Microsoft .NET Development IDE

W


  • War File : Java’da web arsiv dosyasi olarak bilinir. Icersinde Web Uygulamasini icerir. Servlet kutuphanelerini + JSP dosyalarini + Imaj Dosyalarini + HTML dosyalarini iceren jar dosyasi olup uzantisi .war’dir.
  • Web Crawler / Web Spider : Internet bot , Sistematik bir sekilde Web Indexing icin WWW tarayan bot.

 

 

Continuous Integration (CI) VE Continuous delivery (CD) – Bir Sistemcinin Yazilim Dunyasiyla Imtahani – Episode 1

Dunya donuyor, zaman akiyor ve “Cloud” sekilenmeye, bizleride yaninda degistirmeye devam ediyor. Hem Steve Ballmer hem market hemde “Cloud” bizi Amerikan firmalarina ozgu olan satisi cevrelemis diger halklarin merkezine simdide “Yazilimci” lari koyuyor, belki bir sure sonra o halkanin icinde onlarda olmayacak “Machine Learning” olayin icine edecek ama daha ona var belki bilinmez bekleyip gorecegiz ama su anda bildigimiz tek sey var ki artik “yazilimci” lar “sistemci” lerle BERABER/ENTEGRE/BAGLI olmak zorunda. Haliyle biz sistemcilerde onlarin dunyasini daha iyi anlamamiz ve daha yeni seyler ogrenmemiz gerekiyor ; Containers , DevOps , PAAS , API  ,  CI/CD ,  Monolithic Uygulamalar , Cloud Native Apps , Cloud Foundry , Kubernetis , Python , Ruby , Django , JSON liste boyle gidiyor

Madem anlamaya calisacagiz sirasi mi degil mi bilmiyorum ama ben kendime once CI (Continuous Integration )/CD (Continuous Delivery) sectim , zaten olay papatya fali gibi , birde yanina ogrendigim “uygulama” ve “terim” leri yazmaya basladim demeyin keyfime, belli olmaz belki cloud bizi yazilimci yapar ama hala yazilim ile iliski durumum karisik 🙂

CI/CD diyince onume ne yalan soyliyim “Jenkins” geldi , sonra bu CI/CD ne oldugunu , ne icin kullanildigini , bir suru ek bilesen ile zengilestirildigini gordum, bu arada ayni seyleri yapan birbirinden cokta farkli olmayan benzer yazilimlardanda bir suru oldugunu gordum.

Empoze edilmek istenen sey , artik tek buyuk yiginlar halinda kod lama yapmayalim , bunlari parcalara ayiralim , hatta Docker cilar var oyle ki laptop umda MAC imde yazdigim kod production da Docker sayesinde aynen calissin veya ben sadece kodumu yollayayim o derlesin IAAS yapilandirsin , kod parcalarini farkli guruplar gelistirsin , bir guncelleme tum programin genel calismasini etkilemesin , commit sayisi artsin, gunde birden fazla build ureteyim ki uygulamam hem musterimin isteklerine karsilik verebileyim hemde bug lari daha hizli duzeltebileyim, risk  azaltilabilinsin,  hem icerden hemde disardan katki verilebilsin , herkes tum process i gorsun ve sorumlu olsun, kod uzerinde konusalim/tartisalim, hatali kodlari tek bir noktadan izleyip kayda alalim, elle yapilan islerim var ise onlari otomatik hale getirelim , elle yapacagimiz veya test muhendisleri ile yapilacak checklist leri otomatiklestirelim ve daha kaliteli bir surum olsun. Iste bunlarin tamaminin bir araya gelerek olusturdugu calisma yonetimine CI/CD diyoruz 🙂 Bir paragrafta acikaldim sanirim , simdi bunu yazilimcilarin daha iyi bildigi biz sistemcilerin ogrenmesi gereken bir dizi uygulama ve bilesenle ornekleyelim.

Dedigim gibi CI olayinda gordugum, en cok ismi gecen sey Jenkins/Hudson . Open source , deli gibi bilesen destegi var , distributed build destegi var (yani bir master/slave ilisisi icerinde build isteklerini dagitabiliyor) , community iyi diyorlar. Jenkins e alternatif kimler var , gordugum kadariyla JetBrains in “TeamCity” si , Atlassian in “Bamboo” , CruiseControl , Snap-ci ve Travis CI gibi open source/Hosted/Ticari yazilimlar mevcut.

Iki ustteki paragrafi anlatan bir resim olsa , asagidakinden daha iyi olmazdi herhalde ; Jenkis tam gobekte 🙂

Screen Shot 2015-11-17 at 00.03.08

SCM (Software Configuration Managment) aslinda bir mekanizma, yazilimin hayati boyunca gecirdigi tum degisiklikleri izlemek ve kontrol etmek icin kullanilan bir teknik.

Diyelim ;

  • Bir veya daha fazla yazilimcimiz var , bunlar kendi IDE lerini kullarak (Eclipse , Virtual Studio , PyCharm) uygulama gelistiriyorlar.
  • Kod larinda yaptiklari degisikliklerin gecmisini tutmak, gerektiginde kodun bir onceki halini geri donmek icin projelerini “Git , CVS” gibi  open source “version control” uygulamalari kontrol ediyorlar (Storage bilenler icin Volume un snapshot ini almak veya Windows icin Shadow Copy gibi bisiy)
  • Daha sonra yazilimci kodunu birde ortak calistigi ve/veya elindeki kodlarinda bir anlamda yedegini tutacak olan bir depo ile entegre olmus olsun mesela bu GitHub , GitLab veya Bitbucket a koysun
  • Jenkins burada devreye girmeye basliyor , yazilimci , projeden sorumlu kisi ne ise “Jenkins” uzerinde bir “WorkSpace” aciyor, yani bir calisma alani , kodlarin duracagi yer ki buradan build edecek.
  • Jenkins bilesen destegi sayesinde GitHub , GitLab veya Bitbucket ile entegre oluyor
  • Yazilimci kodunu remote repo denilen yani GitHub , GitLab veya Bitbucket a “Push” ettiginde, yani gonderdiginde Jenkins bileseni mail ile veya farkli bir API call ile uyariliyor ve degisikligi “WorkSpace” e cekiyor
  • Yazilimicinin kullandigi dile gore mesela Java ise Ant/Maven/Gradle gibi build tool larini , Shell Script icin Python, Ruby , Groovy ve .Net icin MSBuild ve Powershell kullanabiliyor Jenkins
  • Buradaki amac kod degisikligi oldugunda yeni kaynak kodlarin derlenip yazilimin hazir hale gelmesini saglamaktir.
  • ****Bu noktadan sonra Continues Delivery olayina girmeye basliyoruz ****
  • Bunla beraber yazilimin yeni kullanilabilir kopyasini devreye alamadan once bir dizi kontrolden ve testden gecirmek gerekecektir ;
    • JUnit : Java Test Framework – http://www.mkyong.com/tutorials/junit-tutorials/
    • TestNG : Java
    • Findbug : Java static bug arama http://findbugs.sourceforge.net
    • Covertura : Yine Java
    • PMD : Kullanilmayan degiskenler , gereksiz object yaratimlari gibi seyler kontrol ediyormus
    • PyTest : Python icin http://pythontesting.net/start-here/
    • Checkstyle : Kodlama standartini kontrol ediyor ,hey yavrum benim
    • Selenium : Firefox browser kullanaraktan browser uzerindeki islemleri otomize edebiliyoruz
    • HP nin bir tool u var UFT -> https://wiki.jenkins-ci.org/display/JENKINS/HP+Application+Automation+Tools
      • –> Bu islemler sirasinda duruma gore Jenkins Job Status guncellenir (Success,Unstable,Broken,Disabled)
  • Yukardaki islemler sonrasinda yazilimci uyarilir 🙂 Email ,Twitter , RSS ….
  • Eger build asmasinda bir hata ile karsilasilir ise geriye dogru bilgilendirme yapilaraktan ilgili hatanin giderilmesi ve tekrar derleme safasina kadar islemin otomatik olarak tekrarlanmasi gerekir Screen Shot 2015-11-17 at 02.10.43
  • Hersey tamam olduktan sonra “Docker” veya farkli bir ortama “User Acceptance” almak icin yani kisaca onay almak icin kurulum yapabilir ve build icin approve bekleyebilirsiniz
  • Test muhedisleri , ilgili yazilimci veya kullanicidan test hakkinda olumlu donus aldiktan sonra uygulamanizi gercek ortam a release edebilirsiniz

Bu anlattiklarimizi bir iki resimle anlatmak istesek ;

Screen Shot 2015-11-17 at 02.24.49

veya bu ;

Screen Shot 2015-11-17 at 02.20.09

 

Bu arada Jenkins java disinda ; Python , .Net , Node.js , Ruby , Android , Scala , Perl , C++ gibi diger projeleride destekliyor.
Jenkins nerdeyse butun platformlari destekliyor mesela Windows , Ubuntu , MacOSX , FreeBSD , OpenBSD , Solaris, Gentoo
Her proje icin ayri ayri Jenkins instance larinin kurulmasina gerek yok , proje bazli erisim mevcut

 

Guzel Linkler ;

Bir abla anlatmis rackspace den bakmak isteyenlere http://blog.rackspace.com/diving-into-continuous-integration-as-a-newbie/
Bir suru guzel link var burada http://www.fullstackpython.com/continuous-integration.html

NSX 6.2 Kurulumu

Baslamadan once ;

  • Bir vCenter Server a sadece bir adet NSX Manager tanitilabilir (1:1)
  • Her bir ESXi host icin bir adet Guest Introspection olabilir (DLP, Activity Monitoring ve diger 3th party servisler icin )
  • Datacenter basina birden fazla NSX Edge olabilir (ESXi host basi max 250)
  • Eger ortaminizdaki her bir bileseni (vCenter,ESXi Host,PSC) FQDN kullanarak kurduysaniz reverse name cozumlemesine dikkat
  • NTP ayarlarina dikkat
  • NSX Manager ile ESX host , vCenter Server ve kurulacak diger NSX cihazlarin 443 uzerinden haberlesebildiklerini dogrulayin.
  • Port gereksinimleri icin ilgili adresi kontrol edin http://pubs.vmware.com/NSX-62/index.jsp?topic=%2Fcom.vmware.nsx.install.doc%2FGUID-E7C4E61C-1F36-457C-ACC5-EAF955C46E8B.html
  • Kurulum sirasinda ve erisimlerde kullanacaginiz vCenter Server kullanicisinin yeni sanal makine yaratma ve calistirabilme , datastore a erisme ve kopyalam haklarinin olmasi lazim
  • IPv4 ve/veya IP6 mi kullanicaksiniz onun kararini verin

Bu makelede kullanilacak bazi terimler ve aciklamalar ;

NSX Domain : NSX etki alani, Microsoft AD gibi , NSX Domain diyince aklimiza register oldugu vCenter Server , NSX Manager , NSX Controller ve hypervisor lar uzerinde kosan NSX vSwitch lerin tamami gelmeli.

NSX vSwitch : vSphere distributed switch (vDS) , distributed firewall ,  router ve logical switch aklimiza gelmeli. Hypervisor da kosan bir yazilim, amaci fiziksel dunya ile sanal dunya arasinda bir gecis noktasi veya bir ayrim noktasi yaratabilmek.

ToR : Top-of-rack , Veri merkezlerinde her bir sunucu kabininin uzerine koyulan L2 ve L2/L3 destegi saglayan bildigimiz fiziksel switchler.

Donanim Gereksinimi ;

Screen Shot 2015-10-16 at 17.40.40

256 Hypervisor uzeri 8vCPU ve 24 GB Ram oneriliyor , eger daha fazla hypervisor desteklenecek ise VMware Support a erismeniz oneriliyor 🙂

Yazilim Gereksinimi ;

Screen Shot 2015-10-16 at 17.43.21

Benim kurulumumda ESXi version 6.0 update 1 , VCSA 6.0 update 1 , NSX 6.2 kullanildi.

Universal Logical Switch, DLR ve Firewall testleri icin daha oncesinden cross-vCenter NSX icin gerekli olan asagidaki yapi hali hazirda kurulmustur

Cross vCenter vMotion

Yukardaki yapiyi aciklamak gerekir ise ;

  • Uc adet cluster var (Mng&Edge , Compute Cluster A ve Compute Cluster C)
  • Her cluster da iki adet fiziksel node
  • Her node da iki adet 10 Gbit lik ethernet arabirimi
  • Her bir cluster da bir adet vDS , ilgili fiziksel node lar bu vDS e eklenmis ve ikiser 10 Gbit lik ethernet arabirimleri Uplink portlari olarak eklenmistir
  • Yapi uzerinde hicbir vSS mevcut degil , vSphere kurulum asamasinda yaratilan yonetim vSS switch vDS e migrate edilmistir ve yonetim vmkernel portu ilgili vDS altindaki ilgili portgroup altina tasinmistir (Bu adim icin bir zorunlulugunuz yok)
  • Ilgili tum trafik tipleri icin farkli distributed port grouplar yaratilmistir (Management,vMotion,Internet Access)
  • Izolasyon saglamak icin tum trafik tipleri icin farkli VLAN lar set edilmistir
  • Uplink Portlari Trunk olarak ayarlanmistir
  • Henuz VTEP/VXLAN icin bir ayarlama yapilmamsitir, kurulum sirasinda islemler otomatik olarak yapilacaktir

Asagidak Clusterlarin vDS , port group ve Uplink gorunumleri mevcut

Screen Shot 2015-10-19 at 11.53.11

Komut satirindan bu islemleri gormek icin ;

Var olan vDS leri ve port group lari gormek icin –>

[root@compute1:~] esxcli network vswitch dvs vmware list
IST-COMPUTE-DS
Name: IST-COMPUTE-DS
VDS ID: 23 a4 15 50 8d c7 47 58-07 e5 a8 b5 aa a1 58 e4
Class: etherswitch
Num Ports: 2222
Used Ports: 7
Configured Ports: 512
MTU: 9000
CDP Status: listen
Beacon Timeout: -1
Uplinks: vmnic1, vmnic0
VMware Branded: true
DVPort:
Client: vmnic0
DVPortgroup ID: dvportgroup-79
In Use: true
Port ID: 16

Client: vmnic1
DVPortgroup ID: dvportgroup-79
In Use: true
Port ID: 17

Client: vmk0
DVPortgroup ID: dvportgroup-80
In Use: true
Port ID: 0

Client: vmk1
DVPortgroup ID: dvportgroup-81
In Use: true
Port ID: 13

NSX Kurulumu Icin Izleyecegimiz Islem Sirasi

Screen Shot 2015-10-19 at 13.41.57

Once NSX Manager i kuracagiz , bunu yapmadan once NSX Manager in tum ESXi node larin yonetim arabirimlerinden erisilebilir oldugunu dogrulayin. Ardindan NSX Manager i vCenter Server a link leyecegiz ki NSX Controller lari yukleyebilelim. NSX Controller larda NSX Manager gibi sanal makineler uzerinde kosacak. Daha sonra vSwitch e ek bilesenleri yukleyerekten dagitik swithing , routing ve firewalling ozelliklerini aktive edecegiz. Ardindan yeni VLAN araligimizi ki buna su andan itibaren Virtual Network Interface (VNI) diyecegiz , transparent zone ayarlarini yapip NSX platformunu test edebiliyor olacagiz. Ek olarak cross-vCenter NSX kurulumunuda bundan sonraki makalede anlatilacak.

NSX Manager

NSX Manager bize yapiyi merkezi olarak yonetmek icin bir arayuz, islemleri otomatize edebilmek icin REST API ve ek olarak NSX bilesenlerinin monitor edebilmemizi saglar. VMware tarafindan bir OVF sablon olarak gelir, ek bir uygulama kurulumuna ihtiyac duymaz.

NSX Manager in kurulacagi yer HA & DRS in aktif oldugu bir ESXi Cluster olacak, genelde onerilen workload lari olusturacak cluster in disinda bir cluster a yuklenmesi ve uygulama bazinda HA saglayacak bir yapisi yok.

NSX Manager sanal makinesi uzerinde VMware Tools kurulu olarak gelecektir, diger VM ler uzerine kurulan VMware Tools aksine NSX Manager sanal makinesine ait VMware Tools u upgrade etmeye , kaldirmaya veya yeniden kurmayi denemeyin.

Kuruluma Baslayalim

Oncelike NSX for vSphere 6.2.0 ova dosyasini indirin

Screen Shot 2015-09-12 at 22.18.17

Kurulumu “Edge_Cluster” uzerine yapiyorum

Screen Shot 2015-10-19 at 17.36.04

Download ettiginiz ova dosyasini gosterin

Screen Shot 2015-10-19 at 17.36.46

“Accept extra configuration options” secip Next

Screen Shot 2015-10-19 at 17.38.02

Accept

Screen Shot 2015-10-19 at 17.38.13

NSX Manager in kurulacagi “Datacenter” secildi

Screen Shot 2015-10-19 at 17.38.36

Ilgili DataStore u seciyorum kurulum icin, ek olarak “Thin” diye guncelledim yer sikintintisi olabilir diye

Screen Shot 2015-10-19 at 17.42.15

NSX Manager in kullanacagi network un port grubunu secin

Screen Shot 2015-10-19 at 17.42.45

Sirayla once NSX Manager in CLI ve GUI admin ve Privilege Mode sifre bilgilerini set edin

Screen Shot 2015-10-19 at 17.47.38

Simdi NSX Manager sanal makinesin bir hostname ve ip adresini verelim

Screen Shot 2015-10-19 at 17.51.27

DNS ve NTP ayarlari ek olarak bu sanal makineye SSH ile erismek istiyor ise ki isteyecegiz 🙂 ilgili kutucugu dolduralim

Screen Shot 2015-10-19 at 17.52.08

Herseyin ozeti, kisa bir kontrol

Screen Shot 2015-10-19 at 17.52.33

Kurulum basladi ve bitti 🙂

Screen Shot 2015-10-19 at 18.18.31

NSX Manager a login olup “show interface” ve “ping” ile test edelim

Screen Shot 2015-10-19 at 18.20.38

Web uzerinden eriselim , login olup “View Summary” dugmesine tiklayin

Screen Shot 2015-10-19 at 18.23.24

vPostgres, RabbitMQ and NSX Manager Servislerin calismasi gerekiyor

Screen Shot 2015-10-19 at 18.29.18

Simdi NSX Manager i vCenter Server ile iliskilendirelim ;

Daha onceden NSX Manager in tek bir vCenter Server ile iliskilendirilebilecegini belirtmistim. Ilgili islemi yapmak icin elimizde “administrator” role une sahip bir kullaniciya ihtiyac olacak ve bu kullanicinin sadece ASCII karakterlerden olusan bir sifresinin olmasi gerekecek.

Burada enteresan bir not dusmek istiyorum, diyelim vCenter Server 1 ile NSX Manager 1 iliskilendirildi , oldu ya arkasindan NSX Manager 2 yine ayni vCenter Server 1 ile iliskilendirdi bu durumda vCenter Server 1 -> NSX Manager 1 kaldirip iliskisini NSX Manager 2 ile kurar fakat NSX Manager 1 e login oldugunuzda hala vCenter Server 1 ile iliskili oldugunu gorecektir.

Bunu yapmadan once NSX imizi syslog server a tanitalim. NSX Manager arayuzune login olup “Manage Appliance Settings” e basin

Screen Shot 2015-10-20 at 10.20.22

Ardindan Syslog Server kismini “Edit” leyip asagidaki degerleri set edebiliriz

Screen Shot 2015-10-20 at 10.20.08

Gerekli syslog bilgilerini girin lutfen

Screen Shot 2015-10-20 at 10.19.44

Simdi vCenter Server a kayit olalim “Manage vCenter Registeration” kismini tiklayin

Screen Shot 2015-10-20 at 10.35.02

vCenter Server kismini “Edit” leyelim

Screen Shot 2015-10-20 at 10.35.41

vCenter bilgilerini verelim , bir kez daha dikkat “admin” role une sahip bir kullanici kullanmayi unutmayin

Screen Shot 2015-10-20 at 10.39.24

Sertifika Sertifika Sertifika

Screen Shot 2015-10-20 at 10.39.34

Sync oldugunu gorelim ve vCenter Server i kontrol edelim

Screen Shot 2015-10-20 at 10.40.22

Eger halihazirda vCenter Web Client uzerinden login durumdaysaniz lutfen cikip tekrar girin , Networking & Security ikonunu goruyorsaniz problem yok 🙂 devam

Screen Shot 2015-10-20 at 10.48.35

Isterseniz “Lookup Service” ini de ayarlayabilirsiniz, aslinda zorunlu bir adim degil direkt gecebiliresiniz. vSphere 5.1 ile beraber vCenter Single Sign On (SSO) servisi tanitildi, bu servis sayesinde VMware vSphere yazilimlarinin aralarinda bir token bircok bilesen icin ayri ayri kullanici dogrulama yapmadan daha guvenli ve hizli bir sekilde iletisime gecemleri saglandi. Bunla beraber NSX Manager i “Lookup Service” ile entegre ettiginizde AD , NIS , LDAP tabanli vCenter kullanilarininda NSX tarafindan dogrulanabilmesini saglarsiniz.

Lisans konusunda su andaki kurulumda deneme lisansi kullaniliyor, normalde yukardaki islemden sonra NSX lisansini eklemelisiniz.

NSX Controller Kurulumu

NSX Controller kurulumuna gecemeden once bir iki konu var ;

  • NSX Controller lar tum “control plane” dedigimiz yapiyi tutmak icin Apache ZooKeeper adli yazilim kullaniyor, sistem dagitik ve hizli bir disk yapisinda kosmasi gerekiyor
  • NSX Controller lari kurarken veya oncesinde Controller larin olacagi network den ip verebilmek icin IP Pool yaratabilirsiniz
  • Ilk Controller kurulumunda bize kullanici bilgileri sorulacak , bu kullanici bilgisi controller a login olabilimek icin kullanacagiz, bir sonraki controller kurulumlarinda ayni kullanici adi ve sifre kullanilacak
  • Controller lara verilen isimlendirme otomatik yapilmaktadir , mudahale edemesiniz ve/veya siralamyi degtiremezdiniz. Mesela controller-1, controller-2, controller-3 diye kurulum yaptiniz daha sonra  controller-1 i sildiniz bir tane daha yaratmak istediniz yeni isimlendirme  controller-4 olacaktir,  controller-1 ismi asla geri gelmeyecek

Evet baslayalim , “Networking & Security” tab indan “Installation” sekmesini tiklayin

Screen Shot 2015-10-20 at 18.31.06

NSX Controller in bagli olacagi NSX Manager , Datacenter , uzerinde kosacagi cluster , ilgili controller sanal sunucusunun vNIC inin bagli olacagi port group

Screen Shot 2015-10-20 at 18.38.41

Daha onceden belirtmistim , controller sanal makineler atanacak ip adres araligi

Screen Shot 2015-10-20 at 18.48.33

Yarattiginiz IP Pool u secin

Screen Shot 2015-10-20 at 18.49.27

Sadece ilk controller kurulumunda size sorulacak olan ssh sifre bilgisini girin

Screen Shot 2015-10-20 at 18.49.43

Kurulum baslasin

Screen Shot 2015-10-20 at 18.50.31

Kurulumu bitsin ve bir kontrol yapalim

Screen Shot 2015-10-20 at 18.59.00

SSH ile ilk controller node a baglanip “show control-cluster status” komutunu calistirin, tum rollerin aktif olduguna ve Join ve Majority durumlarinin “join complete” ve “cluster majority e connected” oldugunu gorun.

 

Linux nsx-controller 3.2.39-server-nn23 #1 SMP Mon Sep 23 16:01:54 PDT 2013 x86_64

VMware NSX Controller 4.0.6 (Build 44780)

nsx-controller # show control-cluster status

Type                Status                                       Since

——————————————————————————–

Join status:        Join complete                                10/20 18:51:31

Majority status:    Connected to cluster majority                10/20 18:51:16

Restart status:     This controller can be safely restarted      10/20 18:51:27

Cluster ID:         44ebde67-67a7-450e-948a-9c30289bb2c9

Node UUID:          44ebde67-67a7-450e-948a-9c30289bb2c9

Role                Configured status   Active status

——————————————————————————–

api_provider        enabled             activated

persistence_server  enabled             activated

switch_manager      enabled             activated

logical_manager     enabled             activated

directory_server    enabled             activated

Ardindan “show control-cluster roles” komutunu calistirin , ilk kurdugumuz controller node haliyle tum role lerin sahibi

nsx-controller # show control-cluster roles

Listen-IP  Master?    Last-Changed  Count

api_provider         Not configured      Yes  10/20 18:51:31      2

persistence_server              N/A      Yes  10/20 18:51:31      1

switch_manager            127.0.0.1      Yes  10/20 18:51:31      2

logical_manager                 N/A      Yes  10/20 18:51:31      2

directory_server                N/A      Yes  10/20 18:51:31      2

Simdi yukarda yaptigimiz islemi tekrarlayip controller-2 ve controller-3 u kuralim daha sonra asagidaki komutlari calistirip kontrol edelim

nsx-controller # show control-cluster startup-nodes

10.111.34.210, 10.111.34.211, 10.111.34.212

Uc controller da sistemde gozukuyor

nsx-controller # show control-cluster connections

role                port            listening open conns

——————————————————–

api_provider        api/443         Y         6

——————————————————–

persistence_server  server/2878     Y         2

client/2888     Y         0

election/3888   Y         0

——————————————————–

switch_manager      ovsmgmt/6632    Y         0

openflow/6633   Y         0

——————————————————–

system              cluster/7777    Y         0

Controller cluster node lari arasindaki kominikasyonu yukardaki komut ile gorebilirsiniz. Ufak bir anektot “persistence_server  server/2878     Y         2″    Y degerini gordugunuz cluster node u -cluster majority leader- olanidir.

Birde cluster node unun history sini gormek guzel birsey , ne zaman up oldu cluster a katildi katilmadi , role durumlari hepsini adim adim gosteriyor.

nsx-controller # show control-cluster history 

===================================

Host nsx-controller

Node b77e5677-83f6-4407-a8f4-e84dfa1e0263 (10.111.34.211, nicira-nvp-controller.4.0.6.44780)

  10/21 08:34:42: Node started for the first time

  10/21 08:34:46: Joining cluster via node 10.111.34.210

  10/21 08:34:46: Waiting to join cluster

  10/21 08:34:46: Role api_provider configured

  10/21 08:34:46: Role directory_server configured

  10/21 08:34:46: Role switch_manager configured

  10/21 08:34:46: Role logical_manager configured

  10/21 08:34:46: Role persistence_server configured

  10/21 08:34:47: Joined cluster; initializing local components

  10/21 08:34:47: Disconnected from cluster majority

  10/21 08:34:47: Connected to cluster majority

  10/21 08:34:47: Initializing data contact with cluster

  10/21 08:34:48: Interrupted connection to cluster majority

  10/21 08:34:56: Fetching initial configuration data

  10/21 08:34:58: Connected to cluster majority

  10/21 08:34:58: Role persistence_server activated

  10/21 08:35:03: Join complete

  10/21 08:35:03: Role api_provider activated

  10/21 08:35:03: Role directory_server activated

  10/21 08:35:03: Role logical_manager activated

  10/21 08:35:03: Role switch_manager activated

  10/21 08:38:42: Interrupted connection to cluster majority

  10/21 08:38:52: Connected to cluster majority

Devam etmeden once basit ama controller larin uzerinde kostugu cluster da VM startup/shutdown ayarlarini mutlaka yapin.

NSX platform u sadece logical switch ve routing degil ayni zamanda bize firewall serviside saglayacak fakat kurallari yazarken goruceksiniz kuralin uygulanacagi etki alanlari olacak mesela yazdigimiz kurali tum “datacenter” a belki bir “cluster” a belkide bir “resource group” a bu durumda dikkat etmemiz gereken bir takim onemli sanal makinelere firewall kurallarinin etkimemesini isteyecegiz, kimdir bunlar ;

  • vCenter Server
  • PSC (Eger ayri bir makineye kurulmus ise)
  • SQL Server (Eger Windows tabanli bir makineye kurulmus ise)
  • vCenter Web Server (Eger ayri bir makineye kurulmus ise)
  • Ucuncu parti servislerin kostugu NSX partner sanal makineleri

NSX Manager, NSX Controller ve NSX Edge makineleri otomatik olarak bu korumanin disinda tutulmaktdir.

Dikkat edilmesi gereken husus DFW (Distributed Firewall) vNIC bazinda uygulandigindan eger “Exclude List” e eklediginiz sanal makinelere yeni vNIC eklenmis ise bu durumda ilgili vNIC icin kurallara uygulanmaya baslanacaktir, bu problem gidermek icin asagidaki iki yolu denemelisiniz ;

  • Ilgili sanal makineyi sanal makineyi “Exclude List” den cikartip tekrar eklemek
  • Sanal makineyi “power off” yapip sonra tekrardan “power on” yapmak.

Asagida sirasi ile yapilanlari gorebilirsiniz ;

Screen Shot 2015-10-21 at 09.46.06

Screen Shot 2015-10-21 at 09.54.43

Screen Shot 2015-10-21 at 09.55.18

Screen Shot 2015-10-21 at 10.03.28

Host Cluster i NSX Icin Hazirlamak

Artik sira ESXi node larinda NSX den haberdar olmasina , logical switch (VXLAN Bridging) / routing ve firewall fonksiyonlarini desteklemek icin ilgili modullerin kurulmasina geldi.

Dokumanlarda eger ESX i stateless mode kurduysaniz diye bir ibare var yani eger vCenter Server “Auto Deploy” kullanarak ESXi disk uzerine degil direkt sunucunun memory sine yukluyorsaniz demek oluyor bu durumda ilgili NSX VIB lerini elle daha onceden download edip host imajina eklemelisiniz, bunun icinde NSX Manager a su sorguyu yaparsaniz indirmeniz gereken VIB dosyalarini ilgili ESXi version una gore ilgili linkden bulabilirsiniz.

https://10.111.34.200/bin/vdn/nwfabric.properties

Screen Shot 2015-10-21 at 10.52.40

Biz gerekli ayarlamalari “cluster” bazinda yapacagiz ve bundan sonra her cluster a eklenen ESXi node icin ilgili kernel modul leri otomatik olarak yuklenecek

Hatirlamak acisindan kisa bir checklist yapalim ;

  • vCenter Server ile NSX birbirine bagli
  • Tum yapi FQDN uzerinden kullaniliyor ise reverse IP kontrollerini yapiniz
  • DNS Cozumlemelerini kontrol edin
  • ESXi host lar vCenter a port 80 uzerinden baglanabiliyor olmali
  • NTP ayarlari global olarak tum sistemde ayarli olmali
  • Cluster daki tum ESXi host lar ayni vDS lere baglanmis olmali
  • Eger ortaminizda vSphere Update Manager var ise islem oncesi disable edilmesi gerekiyor (ilginc)
  • Cluster da reboot bekleyen bir node olmamali. Action list de “Resolve” opsiyonu cikmamali

Screen Shot 2015-10-21 at 11.10.46

Kurmaya baslayalim “Networking & Security” -> “Installation” sekmesinden NSX Modul lerini kuracagimiz cluster i secip “Install” diyelim

Screen Shot 2015-10-21 at 11.16.17

Screen Shot 2015-10-21 at 11.16.36

Screen Shot 2015-10-21 at 11.27.30

Ayni sekilde “Compute_Cluster” a da kurulumu yaptiktan sonra simdi ESXi CLI dan birde kontrol edelim

[root@compute1:~] esxcli software vib list | grep vsip

esx-vsip                       6.0.0-0.0.2984108                     VMware  VMwareCertified   2015-10-21

[root@compute1:~] esxcli software vib list | grep vxlan

esx-vxlan                      6.0.0-0.0.2984108                     VMware  VMwareCertified   2015-10-21

Bir dipnot, bu islem host reboot gerektirmemekte ve cluster a yeni eklenen ESXi node lar a otomatik olarak ilgili VIB ler kurulacak.

Eger bir sekilde ESXi node u farkli bir cluster a NSX Manager tarafindan NSX destegi icin iliskilendirilmemis bir cluster a tasirsaniz ilgili VIB ler kaldirilacak ve sunucuyu reboot etmeniz istenecektir eger olurda VIB ler kaldirilmaz ise asagidaki komutu calistirin ve host u reboot edin.

root@compute1:~] esxcli software vib remove –vibname=esx-vxlan

root@compute1:~] esxcli software vib remove –vibname=esx-vsip

VXLAN Kullanimini Aktive Edelim

Simdi sira L2 over L3,  yani logical networkleri yani VNI lari ayarlamaya, VTEP uzerinden Layer 2 logical switching yapmak icin son ayarlamalari yapmaya geldi.

VXLAN ayarlari cluster basina yapiliyor, bir onceki adimda yaptigimiz gibi yine cluster basina NSX bilesenleri kuruluyor ve ayin vDS lerin tum clusterdaki host lar tarafindan kullanabilir olmasi gerekiyor. Zaten ESXi hostlari vDS lere ekleyerek hypervisor i bir logical switch haline getirdik simdide NSX VIB leri ve VXLAN Transport paramterlerini konfigre ederek VXLAN kullanimini baslayacagiz.

Burasi aslinda bir yol ayrimi, sadece distributed firewall kullanmak isteyebilirsiniz eger amaciniz bu ise daha fazla ilerlemenize gerek yok, ama L2 over L3 yapicak isek devam …

Burada birkac onemli konu var devam etmeden once ;

  • NIC teaming policy inizi onceden belirleyin, bir vDS icersinde farkli port grouplar icin farkli teaming policy uygulamayin. Bu trafikte kesintiye ve logical router da routing problemlerine sebebiye verebilir.
  • NIC teaming ayari ayni cluster a uye tum node larda ayni olmali
  • VTEP interface lere vereceginiz IP blogunu belirleyin.
  • VTEP interface ler VLAN destekler yani isterseniz Tagged veya Untagged kullanabilirsiniz
  • ve MTU 1550 veya uzeri olmali , default 1600 olacaktir VTEP interface yaratirken gorecegiz fakat ESXi host un fiziksel portlarin bagli oldugu switch portunun MTU degerleri ve vDS in MTU degerleri yine 1600 ve/veya uzerin olmalidir.
  • Eger VDS MTU degeri VXLAN MTU degerinde dusuk ise otomatik olarak VDS degeri VTEP interface icin set edilmis degere yukseltilecektir
  • Multiple VTEP interface olabilir

VXLAN ayarlamalarini yaparken olasi yanlis vlan set etme ,  DHCP problemleri ile ilgili durumlarda kafaniz rahat olsun kolay bir sekilde “unconfigure” edebilir ve/veya problem giderildiginide mesela VTEP Interface ip alamadigini ve vxlan configrasyon’unun hataya dustugunde sadece DHCP den ip alimini duzeltip Web Client uzerinden refresh etmeniz yeterli.

Screen Shot 2015-11-10 at 13.25.05

Simdi ilgili islemleri yapmaya baslayalim ;

VXLAN kolonunuda “Not Configured” link ine tiklayin

Screen Shot 2015-11-10 at 13.06.54

Evet , VXLAN kosacagi VLAN im 865 , MTU 1600 , DHCP den ip aliyorum , Teaming Policy im “Fail Over” ve tek bir VTEP interface kullanacagim

Screen Shot 2015-11-10 at 13.28.55

Bekliyoruz

Screen Shot 2015-11-10 at 13.13.47

Tamamdir

Screen Shot 2015-11-10 at 13.14.38

ESX Host Cli dan bakalim yeni bir vmkernel interface eklenmis olmali

Screen Shot 2015-11-10 at 13.58.18

Bu islem sirasinda otomatik olarak bir distributed port group yaratildi

Screen Shot 2015-11-10 at 14.00.10

Segment ID / Yeni VLAN Araligimizi Belirtelim

Su ana kadar biliyoruz ki klasik fiziksel switch ortaminda 4096 VLAN limitimiz vardi ve VXLAN ile bu limit 16 milyon gibi bir rakam a kavusut. Burada dikkat etmemiz gereken konu 16 M su an vCenter ortami icin gercekci degil ve vCenter basina limitlenmis 10,000 dvPortgroup nedeniyle limitimiz simdilik 10,000 logical network/switch nasil adlandirirsaniz. Ek olarka farkli NSX kurulumlariniz olacak ise ilerde vermis oldugunuz araliklari farkli ortamlarda kullanmamaya calisin , ornegin 7000 ile 7999 araligini kullanmis iseniz bir sonraki NSX kurulumnda 8000 den baslayin.

Logical Network Preparation -> Segment ID -> Edit

Screen Shot 2015-11-10 at 14.11.16

Bol bulduk ….

Burada dikkat ederseniz “Enable Multicast addressing” secili degil , control plane mode umuz “unicast” olacak cunku

Eger control plane mode olarak “multicast” veya “hybrid” olacak ve switchlerinizde IGMP Snooping ayarlanmis ise o zaman multicast ip blogu set etmelsiniz , kullanilmayacak multicast ip blok larinida http://www.ietf.org/proceedings/59/I-D/draft-ietf-mboned-ipv4-mcast-unusable-01.txt adresinden bulabilirsiniz

Screen Shot 2015-11-10 at 14.14.07

Tamamdir …

Screen Shot 2015-11-10 at 14.15.03

Daha sonra goreceksiniz , her bir yaratilan logical switch icin bir adet segment id yi bu havuzdan cekecegiz

Transport Zone 

Transport Zone ayari hangi logical switch lerin (Segment ID lerin , VXLAN larin) hangi ESX hostlar tarafindan erisilebilecegini belirtir. Cluster lara yayilabilir.

Eskilerden ornek vermek gerekir ise , diyelim bir vSphere Cluster ortamimiz var , vDS kullaniliyor, bir sanal makine var clusterdaki ESX01 node u uzerinde ve bu sanal makinenin vNIC i bagli oldugu dvPortgroup 1000 VLAN inda,  vMotion yapicaksiniz , eger ilgili 1000 VLAN i gecis yapacaginiz ESX02 node un bagli oldugu switch portunda tanimli degil ise sanal makine erisilmez olacak , Transport Zone da bunun gibi ilgili Segment ID lerin cluster veya cluster lar arasinda kullanilabilir kiliyor.

Neler olabilir , Neler olamaz ; 

  • NSX ortaminda birden fazla Transport Zone tanimlanabilir
  • Bir cluster birden fazla  Transport Zone a uye olabilir
  • Logical switch sadece tek bir Transport Zone a atanabilir
  • Farkli Transport Zone lardaki VM ler ayni L2 Network unde olamaz
  • DLR farkli Transport Zone lardaki logical switch lere baglanamaz
  • ESG keza ayni

Yani 🙂

  • Eger L3 connectivity e gerek var ise Edge ve Compute cluster lari ayni Transport Zone da olmali
  • Iki farkli cluster mevcut ve buradaki VM lerin ayni L2 Domain i icersinde olmasi gerekiyor ise clusterlar ayni Transport Zone da olmali
  • Eger organisazyon icersinde erilmemesi gereken, gizlenilmesi gereken logical switch ler olacak ise FARKLI Transport Zone lar yaratilmali
  • vDS ile Transport Zone un uygulandigi aralik ayni olmali

Evet artik yaratalim ;

Logical Network Preparation -> Transport Zone  -> +

Screen Shot 2015-11-10 at 14.39.16

Bir isim ve replication mode u secelim benim icin “Unicast”
Transport Zone hangi cluster lara yayilacak ise onu belirleyelim

Screen Shot 2015-11-10 at 14.47.51

Hepsi bu …. : )

Bundan sonraki makalede bir ornek bir yapi uzerinden devem edecegim …. Artik platform uzerinde oynamaya haziriz …..

VM

Guzel Linkler

https://pubs.vmware.com/NSX-6/index.jsp#com.vmware.nsx.admin.doc/GUID-0748C166-5308-45D8-B98E-C46C5C1DADFC.html