Serbest Yazılar

19 Ocak 2017

Solaris Zone ile Sanallaştırma

Bu yazıda öğrenecekleriniz:


Solaris işletim sisteminde sanallaştırma yapmak için farklı alternatiflerimiz mevcut. Bu yazımda, Zone kullanımından biraz bahsedeceğim.

İster x86, isterseniz SPARC mimariyle çalışın, aynı adımları birebir uygulayabilirsiniz. Bu testleri yapmak için fiziksel bir makineye de ihtiyacınız yok. Kullandığınız bilgisayar üzerine VirtualBox ile sanal bir Solaris kurabilir ve sanal makinenizin içinde, yeni sanal makineler oluşturabilirsiniz. Solaris işletim sistemini de, Oracle Solaris Downloads bağlantısından indirebilirsiniz.

Anlatıma başlamadan önce VirtualBox kullanacaklar için bir uyarı yapmak istiyorum. Sanal bir makinenin içinde, sanal makineler oluşturup, bunların içinde sanal network kartları oluşturduğunuzda, VirtualBox ağ trafiğini kesiyor. Bu sebeple, işlemlere başlamadan, network kartınızda Promiscuous Mode kısmını Allow All yapın.


[VirtualBox Network Configuration]

Bu işlemi yaptıktan sonra, Solaris işletim sistemini başlatın ve root kullanıcısına geçip, aşağıdaki komutu çalıştırın. (Dediğim gibi aşağıdaki işlem, sadece VirtualBox ile ilgili bir durum.)

[email protected]:~$ sudo -s
Password:
[email protected]:/export/home/ccebi# nohup snoop -d net1 > /dev/null &
[1] 2182
Sending output to nohup.out

Bu anlatımda, iki adet sanal makine oluşturacağım. Oluşturacağım her makineye birer network kartı atamak istiyorum. Bunun için var olan bir ağ kartının üzerinden, sanal kartlar hazırlayacağım.

# ONCELIKLE HANGI KARTLAR VE IP ADRESLERINE BAKIYORUZ
# STATIK OLAN net1 ARAYUZUNU, SANAL AG KARTLARIMIZDA 
# KULLANACAGIZ
[email protected]:~$ ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net0/v4address    dhcp     ok           10.0.2.15/24
net1/v4address    static   ok           192.168.1.199/24
lo0/v6            static   ok           ::1/128

# net1 KARTINDAN BESLENEN 2 (IKI) ADET 
# SANAL AG KARTI OLUSTURUYOR VE KONTROL EDIYORUZ
[email protected]:~$ sudo dladm create-vnic -l net1 vnic1
Password:
[email protected]:~$ sudo dladm create-vnic -l net1 vnic2
Password:

[email protected]:~$ dladm show-vnic
LINK            OVER           SPEED  MACADDRESS        MACADDRTYPE IDS
vnic1           net1           1000   2:8:20:ae:61:ea   random      VID:0
vnic2           net1           1000   2:8:20:a2:25:7a   random      VID:0

İki adet sanal makine oluşturacağımı söylemiştim. Makine IP ve isimleri bilgileri aşağıdaki gibi olacak. Bu bilgileri şimdiden hosts dosyasına ilave ediyorum:

[email protected]:~$ tail -2 /etc/hosts
192.168.1.201   zone1
192.168.1.202   zone2

Şimdi birinci sanal makinemiz için temel yapılandırmayı gerçekleştirelim:

[email protected]:~$ sudo zonecfg -z zone1
zonecfg:zone1> create
zonecfg:zone1> set zonepath=/zones/zone1
zonecfg:zone1> set autoboot=false
zonecfg:zone1> set ip-type=exclusive
zonecfg:zone1> add net
zonecfg:zone1:net> set physical=vnic1
zonecfg:zone1:net> end
zonecfg:zone1> verify
zonecfg:zone1> commit
zonecfg:zone1> exit

# GIRDIGIMIZ AYARLARI KONTROL EDIYORUZ
[email protected]:~$ zonecfg -z zone1 info

Bu noktada,"sudo zoneadm -z zone1 install" komutu verip, kuruluma başlayabilirim. Fakat direkt kurmak yerine, bir profil dosyası oluşturmak ve kurulumu onunla yapmak daha ideal. Böylece, konfigüre ederken, hata yaparsanız, en başa dönmek gerekmez.

# PROFIL OLUSTURMAYA BASLIYORUZ
[email protected]:~$ sudo sysconfig create-profile -o zone1-profile

[System Configuration Tool - 1]

[System Configuration Tool - 2]

[System Configuration Tool - 3]

[System Configuration Tool - 4]

[System Configuration Tool - 5]

[System Configuration Tool - 6]

[System Configuration Tool - 7]

[System Configuration Tool - 8]

[System Configuration Tool - 9]

[System Configuration Tool - 10]

[System Configuration Tool - 11]

[System Configuration Tool - 12]

[System Configuration Tool - 13]

[System Configuration Tool - 13]

[System Configuration Tool - 14]

[System Configuration Tool - 15]

[System Configuration Tool - 16]

[System Configuration Tool - 17]

[System Configuration Tool - 18]

Bu ekranların sonunda, profile dosyası hazırlanmış olacak. Akabinde kurulumu tetikleyebiliriz.

# KURULUM ASISTANI ISINI TAMAMLADIGINDA 
# OLUSAN PROFILE DOSYASINA AIT PATH ASAGIDA GOZUKECEKTIR
...

SC profile successfully generated as:
./zone1-profile/sc_profile.xml

Exiting System Configuration Tool. Log is available at:
/system/volatile/sysconfig/sysconfig.log.3904
 
# KURULUM ASISTANI ISINI TAMAMLADIGINDA 
# YUKLEME SURECINE BASLIYORUZ
[email protected]:~$ sudo zoneadm -z zone1 install -c  /export/home/ccebi/zone1-profile/sc_profile.xml
Password:
The following ZFS file system(s) have been created:
    rpool/zones/zone1
Progress being logged to /var/log/zones/zoneadm.20170115T191755Z.zone1.install
       Image: Preparing at /zones/zone1/root.

 Install Log: /system/volatile/install.4445/install_log
 AI Manifest: /tmp/manifest.xml.TQaiQi
  SC Profile: /export/home/ccebi/zone1-profile/sc_profile.xml
    Zonename: zone1
Installation: Starting ...

        Creating IPS image
Startup linked: 1/1 done
        Installing packages from:
            solaris
                origin:  http://localhost:1008/solaris/45347d2f5986961996b87fae6543eaa5c1e32178/
DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                            280/280   49526/49526  341.4/341.4  324k/s

PHASE                                          ITEMS
Installing new actions                   67415/67415
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done
Updating package cache                           1/1
Installation: Succeeded

        Note: Man pages can be obtained by installing pkg:/system/manual

 done.

        Done: Installation completed in 1305.328 seconds.


  Next Steps: Boot the zone, then log into the zone console (zlogin -C)

              to complete the configuration process.

Log saved in non-global zone as /zones/zone1/root/var/log/zones/zoneadm.20170115T191755Z.zone1.install

Makinenin kurulumu tamamlandı. Şimdi zone1'i başlatıyoruz.

# ASAGIDAKI KOMUTLA ZONE BASLATILIYOR
[email protected]:~$ sudo zoneadm -z zone1 boot
Password:
# CALISAN ZONE'LARI GORUYORUZ
[email protected]:~$ zoneadm list -vc  
  ID NAME             STATUS      PATH           BRAND      IP    
   0 global           running     /              solaris    shared
   4 zone1            running     /zones/zone1   solaris    excl

Bu arada çok etkileyici bir konuyu paylaşmadan geçemeyeceğim. VirtualBox üzerinde kurulu, Solaris işletim sistemine sadece tek işlemci çekirdeği verdim. Zone kapalıyken, açılması 4-5 saniye, kapanması ise 3-4 saniye sürüyor. Keza, reboot işlemi de toplamda 9 saniyeyi geçmiyor. Böyle düşük bir sistemde, sanal makinenin bu derece hızlı başlaması hâyli etkileyici!

zone1'e konsol üzerinden bağlanıyoruz:

# ZONE'A KONSOLDAN BAGLANMAK ICIN ASAGIDAKI KOMUT GIRILIR
# ARDINDAN TEKRAR ENTER'A BASIP, KONSOL GIRISI ALINIR
[email protected]:~$ sudo zlogin -C zone1
Password:
[Connected to zone 'zone1' console]

# SOLARIS GUVENLIK KONUSUNDA OLDUKCA HASSASTIR
# ISLETIM SISTEMI, root GIRISLERINE DIREKT KAPALIDIR
zone1 console login: root
Password:
Roles can not login directly
Login incorrect

# OLUSTURDUGUMUZ zoneadm1 KULLANICISYLA GIRIS YAPILIR
zone1 console login: zoneadm1
Password:
Oracle Corporation      SunOS 5.11      11.3    September 2015
[email protected]:~$ hostname
zone1
# MAKINEYE VERILEN IP ADRESLERINI VE ARAYUZLERI LISTELIYORUZ
# 192.168.1.201 ADRESINDEN, zone1 SUNUCUSUNA ERISIM OLDUGUNU
# BASKA SUNUCULARDAN ARTIK DENEYEBILIRIZ
[email protected]:~$ ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1
vnic1/v4          static   ok           192.168.1.201
lo0/v6            static   ok           ::1/128
vnic1/v6          addrconf ok           fe80::8:20ff:feae:61ea/10 

Ufak bir operasyon daha yapıyoruz ve standart olarak gelmeyen "top" paketini, zone1 sunucusuna kuruyoruz.

# BU ARADA STANDART OLARAK GELMEYEN top PAKETINI DE KURALIM
[email protected]:~$ sudo pkg install top
Password:
           Packages to install:  1
       Create boot environment: No
Create backup boot environment: No

DOWNLOAD                           PKGS    FILES    XFER (MB)   SPEED
Completed                           1/1      6/6      0.1/0.1  780k/s

PHASE                                          ITEMS
Installing new actions                         27/27
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done
Updating package cache                           1/1

[email protected]:~$ top -v
top: version 3.8beta1

Konsoldan çıkmak için, klavyeden sırasıyla "~." tuşlarına basmak yeterlidir. Fakat bu durum ssh bağlantınızı da kopartabilir. SSH bağlantınız kalsın istiyorsanız, "~~." yazmanız gerekir.

İki sanal makine oluşturacağımdan bahsetmiştim. İkinci makineyi de, birebir aynı şekilde oluşturabilirim. Fakat bu sefer, klon alarak, yeni makineyi oluşturacağım.

# TIPKI BIR ONCEKI ZONE'DA YAPTIGIMIZ GIBI 
# IKINCI SANAL MAKINEYI OLUSTURUYORUZ
[email protected]:~$ sudo zonecfg -z zone2
Password:
Use 'create' to begin configuring a new zone.
zonecfg:zone2> create
create: Using system default template 'SYSdefault'
zonecfg:zone2> set zonepath=/zones/zone2
zonecfg:zone2> set autoboot=false
zonecfg:zone2> set ip-type=exclusive
zonecfg:zone2> add net
zonecfg:zone2:net> set physical=vnic2
zonecfg:zone2:net> end
zonecfg:zone2> verify
zonecfg:zone2> commit
zonecfg:zone2> exit

# AYARLARIMIZI KONTROL EDIYORUZ
[email protected]:~$ zonecfg -z zone2 info

# BIR ONCEKI SEFERDE OLDUGU GIBI PROFILE DOSYASINI OLUSTURUYORUZ
[email protected]:~$ sudo sysconfig create-profile -o zone2-profile
SC profile successfully generated as:
./zone2-profile/sc_profile.xml

Exiting System Configuration Tool. Log is available at:
/system/volatile/sysconfig/sysconfig.log.14719

Profil oluştururken, aynı ekranlar geleceğinden her birini tekrar koymadım. zone2 ayarları tamamlandığında, birinci makineyi (zone1) kapatıyoruz. Sunucu kapanınca, klon işlemine başlıyoruz.

# zone1 MAKINESI KAPATILIR VE KONTROL EDILIR
[email protected]:~$ sudo zoneadm -z zone1 halt
Password:
[email protected]:~$ zoneadm list -vc  
  ID NAME             STATUS      PATH                         BRAND      IP    
   0 global           running     /                            solaris    shared
   - zone1            installed   /zones/zone1                 solaris    excl  
   - zone2            configured  /zones/zone2                 solaris    excl

# KLON ISLEMINE BASLANIR
[email protected]:~$ sudo zoneadm -z zone2 clone -c /export/home/ccebi/zone2-profile/sc_profile.xml zone1
Password:
The following ZFS file system(s) have been created:
    rpool/zones/zone2
Progress being logged to /var/log/zones/zoneadm.20170115T202027Z.zone2.clone
Log saved in non-global zone as /zones/zone2/root/var/log/zones/zoneadm.20170115T202027Z.zone2.clone

# MAKINENIN KURULUMU KONTROL EDILIYOR
[email protected]:~$ zoneadm list -vc  
  ID NAME             STATUS      PATH                         BRAND      IP    
   0 global           running     /                            solaris    shared
   - zone1            installed   /zones/zone1                 solaris    excl  
   - zone2            installed   /zones/zone2                 solaris    excl

Klon tamamlanınca, her iki makineyi açıyor ve farklı bir sunucudan, her iki makineye ssh yapıyoruz:

# SANAL MAKINELER ACILIYOR
[email protected]:~$ sudo zoneadm -z zone1 boot
[email protected]:~$ sudo zoneadm -z zone2 boot

# MAKINELERDE BASIT BAZI KOMUTLAR CALISTIRIP, TEST EDIYORUZ
[email protected]:~$ sudo zlogin zone1 "hostname;uptime"
Password:
zone1
 10:35pm  up 13 min(s),  1 user,  load average: 0.02, 0.06, 0.16
[email protected]:~$ sudo zlogin zone2 "hostname;uptime"
Password:
zone2
 10:35pm  up 13 min(s),  1 user,  load average: 0.02, 0.06, 0.15

# BIR BASKA SUNUCUDAN ssh ILE IKI SUNUCUYA
# ERISIM DENIYORUZ
[email protected]:~$ ssh 192.168.1.201 -l zoneadm1
Password:
Last login: Sun Jan 15 22:22:36 2017 from ora1744-tr
Oracle Corporation      SunOS 5.11      11.3    September 2015

[email protected]:~$ ssh 192.168.1.202 -l zoneadm2
Password:
Last login: Sun Jan 15 22:24:18 2017 from ora1744-tr
Oracle Corporation      SunOS 5.11      11.3    September 2015

İkinci sanal makineyi neden ilki gibi kurmadığımı merak etmiş olabilirsiniz. İlk makine gerçekten bir kurulumdu ve nispeten uzun sürmüştü. İkinci sanal makinenin oluşturulmasıysa, gerçek bir kurulum değildi ve saniyeler içinde tamamlandı. Bunun nedeni, ilk sanal makinenin klonlanmasıydı. Hatta zone1'de kurduğum için "top" komutunu, zone2'de tekrar kurmam gerekmedi; paket kendiliğinden geldi. Yani bir baz imaj (template) oluşturup, klon alarak çok daha hızlı provizyonlama yapabilirsiniz.

İki saniyelik aralıklarla, hem sistemin hem de ana ortamın performans durumunu aşağıdaki gibi görebilirsiniz:

# ZONESTAT KOMUTUYLA GENEL GORUNUMU ALABILIRIZ
[email protected]:~$ zonestat 2
Collecting data for first interval...
Interval: 1, Duration: 0:00:02
SUMMARY                   Cpus/Online: 1/1       PhysMem: 0      VirtMem: 0
                    ----------CPU---------- --PhysMem-- --VirtMem-- --PhysNet--
               ZONE  USED %PART  STLN %STLN  USED %USED  USED %USED PBYTE %PUSE
            [total]  0.05 5.03%  0.00 0.00%     0 0.00%     0 0.00%   228 0.00%
           [system]  0.01 1.70%     -     -     0 0.00%     0 0.00%     -     -
             global  0.03 3.15%     -     -     0 0.00%     0 0.00%   228 0.00%
              zone1  0.00 0.08%     -     -     0 0.00%     0 0.00%     0 0.00%
              zone2  0.00 0.08%     -     -     0 0.00%     0 0.00%     0 0.00%
...

Solaris çok güçlü bir işletim sistemi. Sanallaştırma konusundaki en büyük başarısı ise, neredeyse sıfır ek yükle, bunu yapabilmesi. Üstelik x86 ve SPARC işlemciler üzerinde aynı bilgi birikimiyle çalışabiliyorsunuz. Ayrıca, Oracle ürünlerini koşturduğunuzda, kullandığınız kadar lisanslama şansınız da var. (Muadil sanallaştırma çözümlerinin aksine, Solaris üzerindeki yöntemler, Hard Partitioning olarak geçiyor. Detaylı bilgi için Oracle Partitioning Policy dökümanına bakabilirsiniz.)

Kaynakça

  1. Hands on Lab - Oracle Solaris 11 Networking and Virtualization
  2. Installing WebLogic in a Zone
  3. How to get Solaris 11 VNICs in a Virtualbox VM to work - kind of
  4. How to clone a solaris 11 zone
Çağatay ÇEBİ