17 Kasım 2014

oVirt(RHEV) ' de Active Directory Doğrulaması Ekleme

Son günlerde oVirt sanallaştırma platformunu kurumsal ortamlarda çalıştırılması ve entegre edilmesi konusunu test ediyorum. 

İlk kurulum sonrası kurulum scripti tarafından internal isimli bir domain ve buna bağlı admin isimli bir superuser oluşturuluyor. Tüm yönetim işlemleri bu kullanıcıyla yapılıyor başlangıçta. Ancak iş yeni bir kullanıcı ekleyip bu kullanıcıya yetkiler verip kullanıcı portaline erişmesine sağlamaya gelince oVirt (RHEV) sizden 3. parti bir kimlik doğrulaması istiyor. oVirt dokümanlarına göz attığımda desteklenen sistemler olarak; MS Active Directory ,  freeIPA (RedHat Identity), Redhat Directory Server (389 DS) , IBM Tivoli DS ve Open LDAP görünüyor. Buna bakınca gerçekten geniş bir doğrulama desteği sunulduğu görünüyor. Ancak dokümanda bu doğrulama sistemlerinin oVirt'e nasıl ekleneceğine dair ayrıntılı bir bilgi bulunmuyor garip bir şekilde. 

Bunun üzerine bir Google araştırması yapınca genel olarak internette de ciddi anlamda bu önemli konuyu açıkça anlatan bir doküman olmadığını gördüm. Sadece bir kaç mail listte ve forumda sorulmuş ancak cevabı tam alınamamış bir kaç soru var. Bunun üzerinde console üzerinde ovirt komutları help lerine biraz göz atınca işlemin oldukça basit olduğunu gördüm. Aşağıdaki komutu çalıtırıp yetkili bir kullanıcı ile parola vermek ilgili domain i çok kısa sürede oVirt'e ekliyor.

engine-manage-domains add --domain=stratus.local --provider=ad --user=administrator@stratus.local






12 Kasım 2014

Ubuntu'dan Yeni Bir Hypervisor: LXD

Geçen hafta içinde Ubuntu geliştirici şirketi Canonical, Paris'de yapılan OpenStack Design Summit etkinliğinde Nova-Flex kod adıyla yeni bir teknoloji geliştirme aşamasında olduğunu duyurdu. 

LXD (The Linux Container Daemon) adı verilen bu yeni teknoloji aslında uzun yıllardır var olan LXC (Linux Containers) teknolojisini daemonize edilip önemli bazı önemli özellikler eklenerek bir sonraki adıma taşınması olarak yorumlanabilir.

Canonical'ın tanımına göre (bu blogda daha önce bir kaç kez bahsettiğim bir diğer LXC uygulaması olan) Docker ın hız ve verimlilik özelliklerinin bare metal çalışabilecek gerçek bir sanallaştırma deneyimine dönüştürülmesi olarak belirtiliyor.

Aslında Hypervisor deniliyor ama gerçek anlamda bir Hypervisor olmadığı söyleyebiliriz. Temel mantık : Bir  Linux  host üzerinde yüzlerce farklı Linux (hosttan farklı distrolar çalışabiliyor) sunucuyu çok hızlı bir şekilde oluşturup , neredeyse fiziksel sunucu performansına yakın bir performansta kullanabilmeye dayanıyor. Yani bu teknoloji ile Linux içinde Linux çalıştırmak mümkün, eğer guest olarak başka işletim sistemleri, örneğin Windows çalıştırılacaksa yine KVM, VMware , HyperV ve Xen gibi bir sanallaştırma altyapısına ihtiyacınız var.

LXD'nin sağladığı temel faydaları sıralamaya çalışırsak Canonical'ın sağladığı aşağıdaki liste önümüze çıkıyor.
 
Temel Özellikler
  • Container lar içinde sade bir proses yerine tam bir işletim sistemi işlevselliği
  • Public Cloud içerisinde kullanımında host başına en yüksek sayıda guest yoğunluğunu sağlayarak maliyet avantajı sağlar 
  • Donanım kaynaklarının kolay paylaşılmasına ve yönetimine izin verir, müşteri proseslerinin host seviyesinden doğrudan kolayca izlenebilmesini de sağlar.
  • REST API, çok iyi dokümante edilmiş basit ve tek  komut satırı.
  • Tam sanallaştırma ile desteklenemeyen mimarilere destek verir.
  • Hızlı sanal sunucu oluşturma ve çok kısa boot süresi
  • OpenStack Glance gibi uzak imaj servisleriyle tam entegrasyon
  • AppArmor, user namespaces, SECCOMP ile baştan çok güvenli
  • Akıllı ve genişleyebilir depolama ve ağ yapısı
LXD şu anda Ubuntu 14.04. ve Ubuntu 14.10 da Openstack Juno ile birlikte NovaFlex Compute olarak kullanılabiliyor. Bence yeni bir sanallaştırma yaklaşımı olarak gelecekte önemli bir kullanım alanı bulacağını düşündüğüm bir teknoloji ve ilerleyen zamanlarda tek başına çalışan sürümlerin de gelmesini sabırsızlıkla bekliyorum.

Not : LXD'nin ayrıntılı teknik bir doküman için Ubuntu geliştiricilerinden Stéphane Graber'ın şu linkten erişelebilen mail list mesajı incelenebilir.

24 Mart 2014

Vmware Sanal Makinede SSD Disk Nasıl Emüle Edilir ?

Her ne kadar günümüzde fiyatları ucuzlamaya başlasa da büyük disk alanına sahip olan SSD ler, halen normal sabit disklerden 4-5 kat daha pahalı. Bu nedenle de pek çok kişi testlerin de SSD lere halen kolayca ulaşamıyor.

Nested virtualization denemelerimde Vmware'in SSD gerektiren yeni Swap to host cache özelliği ve daha da önemlisi ESXi 5.5 ile birlikte gelen ve oldukça ses getirsen vSAN özelliğini nested ESXi sistemlerimde deneyebilmek için sanal bir SSD çözümüne ihtiyaç oluyor.

Sanal bir SSD ye kavuşmanız için yapmanız gereken oldukça basit.

İlgili VM'in bulunduğu klasöre erişim vmx dosyasını bir text editör ile açın ve disklerin tanımlandığı bölüme gidin.

scsiX:Y.present = "TRUE"
scsiX:Y.fileName = "VMware ESXi 5-0.vmdk"

gibi satırlar olmalı. Burada X controller ID yi Y ise disk id sini gösterir.

Birden fazla diskiniz varsa birden fazla kez bu tip satırlar göreceksiniz.

SSD olarak görünmesini istediğiniz satırları seçin ve bir alt satıra (bu şart değil düzen açısından böyle yaptım)

scsiX:Y.virtualSSD = 1

parametrelerini girin ve vmx i kaydedip kapatın. İlgili sanal makineyi çalıştırın ve deneyin ( bu parametre versiyon 8 ve üzeri VM'ler için desteklenmektedir).

Sanal SSD ayarı yapılmış nested ESXi


Bu parametreler sayesinde ESX yanında SSD tanıyan Windows 8.1 , Windows 8, Windows 7 v.b. işlemlerde de SSD gerektiren testleri kolaylıkla yapabilirsiniz.

Unutmadan eğer amaçlananın tersine normal sabit disk yerine makinenizde sadece SSD var ise ESXi 5 bunu otomatik olarak tüm sanal diskler için SSD olarak tanıyacaktır. Bu durumda eğer sanal disklerinizden her hangi birini non-SSD göstermek isterseniz bu kez ilgili vmx de ilgili disk için:

scsiX:Y.virtualSSD = 0 parametresini girip kaydetmeniz yeterli olacaktır.




18 Mart 2014

Citrix XEN Server 6.2 SP1'e Manual Update

Bildiğiniz gibi Citrix, yaklaşık 6-7 ay kadar önce sunucusanallaştırma yazılımı XEN Server'ı açık kaynak kod yaptı ve ücretsiz kullanıma sundu. Ancak bu ücretsiz kullanıma XEnCenter üzerinden hostların update'i dahil değil. 

Bunun için Citrix'den subscription almanız gerekiyor. Eğer ücretsiz XEN Server kullanıyorsanız da komut satırından bağlanıp güncellemeleri yapmanız mümkün. 

Ben aşağıda yeni çıkan SP1 e geçişi için komutları verdim. Bu adımlar tüm güncellemeler için de geçerli.


  1. Citrix'den dosyayı indirin.
  2. Zip'i açın ve dosyaları sunucunun root home dizinine kopyalayın.
  3. Host'a SSH bağlantısı kurun ve aşağıdaki komutu çalıştırın
xe patch-upload file-name=XS62ESP1.xsupdate
4. Bir kaç dakika bekledikten sonra bir UUID çıkacaktır. Bu UUID yi ve XenCenter üzerinden erişebilecek host-UUID sini kullanarak aşağıdaki komutu çalıştırın.

xe patch-apply uuid=0850b186-4d47-11e3-a720-001b2151a503 host-uuid=5b280513-bfcf-4ce0-9d49-25aa61c110d9

11 Mart 2014

Sanallaştırma 2.0: Nested Virtualization

İlk tohumları yıllar önce atılmasına rağmen son 10 yılda Vmware ile pek çoğumuzun hayatına giren , sonrasında Microsoft'un HyperV'si , açık kaynak kökleri olan Citrix XEN ve Linux kernel ile tamamen açık kod KVM'nin gelişimleriyle artık iyice yaygınlaşan sunucu sanallaştırma  bilişim sektöründe en büyüğünden en küçüğüne herkesin vazgeçilmez konusu durumunda. 

Bir tarafta sunucu sanallaştırma sayesinde artık tek bir fiziksel sunucu üzerinde onlarca, her biri diğerinden farklı olabilen işletim sistemlerine sahip, sanal makine çalıştırmak oldukça kolay bir iş. Bu sayede enerji tasarrufundan yönetim kolaylığına , sunucu taşınabilirliğinden felaketten kurtarma kolaylığına kadar pek çok özelliğe ve güzelliği de sahip oluyoruz. 

Diğer tarafta ise Amazon Web Services ile başlayan , Rackspace Cloud , Gogrid , IBM SmartCloud (SoftLayer), Microsoft Azure v.b. ile firma ürün çeşitliliği kazanan, temel çıkış noktası ilk yatırım maliyetini azaltmak , kullandığın kadar öde prensibini temel prensibi yapan  public cloud (genel bulut) anlayışı, sanallaştırma teknolojilerini kullanarak bilişim kaynaklarını bir hizmet olarak sunarak ciddi bir talep görüyor ve gelişmesini sürdürüyor.

Bu iki tarafı "kabaca" private cloud (özel bulut - kurum içi host edilen Vmware ESX , MS HyperV, Xen ve KVM v.b. yapılar) 'a karşı public cloud ( genel bulut - kullandığın kadar benzeri modeller sunan AWS, Azure v.b. yapılar) niteleyebiliriz. 

Aslında bu iki kavram (ya da bulut çeşiti diyelim) birbirlerine rakip olmaktan ziyade, birbirlerini tamamlayarak farklı ihtiyaçlara yönelik çözümler olarak konumlandırılarak maksimum fayda sağlanabilir. Özellikle bu amaçla hem public cloud sağlayıcılar hem de sanallaştırma platformu sağlayan firmalar hybrid (karma) cloud kavramıyla bu iki cloud u birbiriyle haberleştirip entegre eden çözümler sunuyorlar.

Ancak her ne kadar bir entegrasyon çabası varsa da on-premise dediğimiz kendi yerlerimizde tuttuğumuz bilişim altyapılarını bulut ortamlarına taşımak ciddi zorluklar taşıyor. Örneğin: Public Cloud sağlayıcıları, doğal olarak hypervisor erişimi vermedikleri için özellikle taşıma işlemlerinde işimizi çok kolaylaştıracak aynı veya farklı hypervisorler arası hypervisor tabanlı çözümlerden mahrum kalıyoruz. Ağ yapılarımızı taşırken kendi IP yapımızı genelde koruyamıyor, public cloud sağlayıcının bize sunduğu sınırlı ağ yapısı ve VPN ile ciddi bir şekilde sınırlanıyoruz ve ek tasarım ve konfigürasyon sürecine katlanmak zorunda kalıyoruz.

Peki hem public cloud'un getirdiği nimetlerden faydalanırken hem de kendimize ait hypervisor rahatlığında çalışmak için ne gerekli ? Bunun cevabı: çok yeni gelişmeye başlamasına rağmen nested hypervisor ( hypervisor üzeri bağımsız hypervisor) teknolojisi gibi görünüyor. 




Düşünelim bir kere: Vmware ESX altyapımızı neredeyse hiç değiştirmeden hedef tarafta fiziksel bir makineye ihtiyaç duymadan ağ altyapısı , sanal makineler ve diğer ayarlar ile kolayca public bir cloud sağlayıcıya taşıyabilmek ne kadar da iyi olurdu değil mi ?  Public cloud'un getirdiği elastikiyet , kullandığın kadar öde avantajı v.b. alıştığımız altyapı ve yönetim yapısıyla. Kulağa oldukça hoş geliyor :) .

Aslında Nested Hypervisor teknolojsine kısmen aşinayız diyebilirim. Vmware Workstation üzerinde ESX Server ve HyperV Server çalıştırmak , ESX server üzerinde ESX Server ve HyperV çalıştırmak daha önce denediğimiz ya da denemeyi aklımıza getirdiğimiz en bilindik uygulamaları.

Teknik olarak Nested Hypervisor kavramı: seviyenlendirme yaparak Type0 bir HyperVisor üzerinde değiştirilmemiş bir Type1 ( örneğin KVM üzerinde KVM) çalıştırma tekniği olarak tanımlanabilir. Bu tekniğin uygulanması CPU ların sanallaştırma uzantı komutlaının gelişmesiyle uygulanabilir hale gelmiştir. Şu anda bu alanda ciddi anlamda test ve geliştirmeler olmasına rağmen henüz production ortamlarında kullanılabilecek stabiliteye sahip değil, ancak yakın bir zamanda özellikle Intel'in Haswell mimarisinde gelen özellikler ile hızlıca bazı production uygulamalarına hazır hale geleceğini düşünüyorum.

Sonuç olarak productiona hazır bir nested virtualization çözümü ile:


  • Tam kullanıcı kontrollü hypevisorler
  • Sanal makineler üzerinde Openstack ve Cloudstack uygulamaları
  • Test ve demolar için kolayca sanallaştırma ortamı hazırlamak
  • Hypervisorler arası live migration, vmotion
gibi kolaylıkların hayatımıza girmesi mümkün olacak.








17 Ocak 2014

Ubuntu 13.04 Üzerinde Docker Kurulumu


Docker LogoDaha önceki yazımda Docker'dan kısaca bahsetmiştim. Her bir uygulama için yeni bir sanal sunucu kurup bu sunucunun getirdiği yüklere katlanmak yerine tek bir işletim sistemi (Linux) üzerinde her bir uygulama için milisaniyeler içinde açılabilen hazır işletim sistemleri ve uygulama ortamları içeren konteynerlar kullanmak özellikle yazılım geliştiren firmalar için test , geliştirme ve sürekli entegrasyon (CI) ortamı oluşturmak için oldukça ideal görünen bir yöntem.
Docker, şu anda host işletim sistemi olarak sadece RHEL, Fedora, Arch, Gentoo gibi bir kaç Linux dağıtımı tarafından destekleniyor. Yaptığım testlerde gördüğüm kadarıyla Docker'ı kurup sorunsuz çalıştırabilmek için en uygun dağıtım Ubuntu 13.04 (ufak tefek sorunlar olsa da 13.10 da buna ekleyebiliriz). LXC deki bir bug nedeniyle ancak 3.8 kernel ve üzerinde sorunsuz çalıştığını söyleyebilirim.

Bu arada Docker pek çok büyük web girişiminde production da kullanılmasına rağmen daha 1.0 sürümüne ulaşmamış bir proje.

Docker sitesinde de yer alan Ubuntu 13.04 üzerinde kurulum adımları aşağıdaki gibidir:

Bağımlılıklar

Opsiyonel AUFS dosya sistemi desteği
AUFS yüklemek için aşağıdaki komutları çalıştırın:
sudo apt-get update
sudo apt-get install linux-image-extra-`uname -r`

Kurulum

Öncelikle Docker repo anahtarını yerel anahtarlarınız arasına ekleyin

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
Docker reposunu, apt kaynak listenize ekleyin ve lxc-docker paketini yükleyin
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"
sudo apt-get update
sudo apt-get install lxc-docker
Yüklemeyi doğrulamak için Ubuntu imajını indirin ve bir konteyner başlatın
sudo docker run -i -t ubuntu /bin/bash




15 Ocak 2014

Sanallaştırmaya Alternatif Bir Çözüm: Docker



Docker LogoSon günlerde sanallaştırmaya uygulama olarak servis (PaaS) çözümleri tarafından iyi bir alternatif olarak ortaya çıkan Docker üzerinde çalışıyorum. 
Docker, LXC ( Linux Containers) konteynerlarını ve imajlarını kolay yönetebilmek için geliştirilmiş oldukça yetenekli bir araç. Var olan bir imajdan hızlı bir şekilde konteyner başlatabiliyorsunuz , çalışan bir konteyner ‘a görevler ekleyebiliyorsunuz.
Docker temelde deniz taşımacılığında kullanılan konteynerları model alıyor. Konteynerlar keşfedilene kadar her ürün farklı ve verimsiz bir biçimde taşınırken konteynerlar sonrası deniz taşımacılığı standandardize olmuş ve neredeyse tüm ürünler konteyner hesabıyla taşınıyor.
Docker ve konteynerlarını kullanmakla kazandığınız en önemli şey; uygulamalarınız çalışması için temiz ve taşınabilir bir ortama hızlıca sahip olabilmeniz. Bu sayede uygulamanızı çalıştırırken oluşabilecek bağımlılık sorunları, eksik paketler ve diğer uygulama sorunlarından kurtuluyor ve bir yerden başka bir yere kolayca taşıyabiliyorsunuz.
Örneğin Python + Redis ile geliştirdiğiniz bir uygulamanız var ve bunu ortamıyla birlikte servis edebileceksiniz ve bir kaç komut ile ortamınız hazır olacak.
Docker ile ilgili ayrıntı bilgi için tıklayınız