Merhabalar,
Artık günümüzde bulut mimarileri yaygınlaşmaya başladı ve gelişimlerine bakarsak yakın bir gelecekte çok daha fazla tercih edilir durumda olacaklar. Ben de bu makalede açık kaynak kodlu OpenStack mimarisi hakkında bilgiler vermeye çalışacağım. Makalelerimi iki bölüm haline yayınlayacağım. Şu an okuduğunuz ilk bölümde OpenStack tanımını yaparak, geleneksel mimariyle aralarındaki farka değineceğim, ikinci makalemle ise bu platformların nasıl kurulup konfigüre edileceğiyle ilgili bilgiler aktaracağım.
OpenStack, 2010 yılında NASA destekli Nova ile Rackspace destekli Swift’in birleşmesiyle ortaya çıkmış, genel ve özel bulut yapıları için IAAS (Infrastructure-as-a-Service/hizmet olarak altyapı)’dan SaaS (Software-as-a-Service/hizmet olarak yazılım)’e kadar birçok alanda hizmet sağlayan, ücretsiz ve açık kaynaklı bir bulut yönetim platformudur. Yazılım geliştiriciler, açık API’lere sahip olması, geniş ticari yapılar için esnek mimarisi, yazılım geliştirme ve dağıtımı konusunda yeni paradigmalar sağlaması dolayısıyla, OpenStack’e ilgi duymaktadırlar.
OpenStack platformu, bir veri merkezinin donanım, depolama, ağ kaynaklarını havuz haline getirerek bir cloud platformu oluşturur. Bu kaynakların kontrolünü sağlamakla birlikte birbiriyle ilişkili birkaç servisten oluşur;
- Compute,
- Image Service,
- Block Storage,
- Identity Service,
- Networking,
- Object Storage,
- Telemetry,
- Orchestration
- Database
Ayrıca bunların dışında aşağıdaki ek servisleri de sunar.
- Load Balancer as a Service
- Firewall as a Service, Security Groups
- Object data storage, Amazon S3 ile uyumlu
Şimdi bu bileşenleri kısaca açıklamak iyi olacak…
Compute Service
IaaS bileşenlerini, yani altyapıyı oluşturan ve kaynak havuzlarını sağlayan tüm bileşenleri içerir. Yani sanallaştırma altyapısını sağlayan sunucular, storage, ağ katmanları gibi her türlü donanım kaynağı diyebiliriz. Önemli bir bileşendir çünkü oluşturulacak tüm sanal sunucular bu katmanla ilgili olacaktır.
Image Service
İmaj servisi, belli özellikte oluşturulan ve üzerinde belli yazılımların yüklü olduğu sanal sunuculardan template’ler oluşturmak için kullanılır.
Block Storage Service
Block Level Storage kaynağı sağlamak amacıyla kullanılır. Bu hizmet, block device’lar oluşturmak ve OpenStack altyapısına entegre etmeyi sağlar. Böylece kullanıcılar kendi depolama alanlarını da kendileri yönetebilir duruma gelirler.
Identity Service
OpenStack ailesindeki servisler tarafından kullanılmak üzere kimlik, token, katalog ve politika hizmetleri sağlar. Kimlik hizmeti, bir veya daha fazla uç noktaya maruz kalan bir grup dahili hizmet olarak düzenlenir.
Networking Service
OpenStack Networking (neutron), diğer OpenStack hizmetleri tarafından yönetilen arayüz cihazlarını oluşturmanıza ve ağlara eklemenize olanak tanır. Eklentiler, OpenStack mimarisine ve dağıtımına esneklik sağlayan farklı ağ ekipmanı ve yazılımlarını barındıracak şekilde uygulanabilir.
Object Storage
OpenStack Object Storage (swift), HTTP üzerinden yazılımsal olarak veri depolama alanı sağlar. Objeler (blobs of data), anonim salt okunur erişim, ACL tanımlı erişim veya hatta geçici erişim sunan bir kuruluş hiyerarşisinde depolanır.
Object Storage bileşenleri aşağıdaki gibidir:
- Proxy services
- Auth services
- Storage services
- Account service
- Container service
- Object service
Telemetry Service
Veri toplama hizmeti sağlar ve aşağıdaki görevleri yerine getirir.
- OpenStack hizmetleriyle ilgili ölçüm verilerini verimli bir şekilde gözlemler.
- Hizmetlerden gönderilen bildirimleri izleyerek olay ve ölçüm verilerini toplar.
- Toplanan verileri, veri depoları ve mesaj kuyrukları gibi çeşitli hedeflere yayınlar.
Orchestration Service
Orchestration servis, tüm otomasyonu sağlar. Çalışan bulut uygulamaları oluşturmak için OpenStack API çağrılarını çalıştırır ve bir bulut uygulamasını tanımlamak için şablon tabanlı bir orkestrasyon sağlar. Yazılım, OpenStack’ın diğer temel bileşenlerini tek dosyalı bir şablon sistemine entegre eder. Şablonlar, örnekler, değişken IP’ler, birimler, güvenlik grupları ve kullanıcılar gibi çoğu OpenStack kaynak türü oluşturmanıza olanak tanır. Ayrıca, yüksek kullanılabilirlik, otomatik ölçeklendirme ve iç içe yığınlar gibi gelişmiş işlevler de sağlar. Bu, OpenStack çekirdek projelerinin daha büyük bir kullanıcı tabanı almasını sağlar.
Database Service
Database servisi, hem ilişkisel hem de ilişkisel olmayan veritabanı motorları için ölçeklenebilir ve güvenilir bir Hizmet Olarak Bulut Veritabanı işlevselliği sağlar.
Load Balancer as a Service
Networking service, neutron-lbaas service plug-in vasıtasıyla iki türlü yük dengeleme sunar:
- LBaaS v1
- LBaaS v2
Her iki uygulama da agent kullanır. Agent’lar, HAProxy yapılandırmasını yönetir ve HAProxy arka plan programını yönetir. LBaaS v2, LBaaS v1 yük dengeleyicilerine dinleyici kavramını ekler. LBaaS v2, tek bir yük dengeleyici IP adresi üzerinde birden fazla dinleyici bağlantı noktası yapılandırmanıza olanak tanır.
Firewall-as-a-Service (FWaaS)
Firewall-as-a-Service (FWaaS) plug-in, güvenlik duvarı kurallarını, projeler, yönlendiriciler ve yönlendirici bağlantı noktaları gibi OpenStack nesnelerine uygular.
OpenStack güvenlik duvarlarına sahip merkezi kavramlar, güvenlik duvarı politikası ve güvenlik duvarı kuralı kavramlarından oluşur. Politika, düzenli bir kurallar derlemesidir. Kural, eşleşme ölçütlerini oluşturan bir öznitelik koleksiyonunu (bağlantı noktası aralıkları, protokol ve IP adresleri) ve eşleşen trafikte yapılacak (izin ver veya reddet) eylemi belirtir. Bir politika herkese açık hale getirilebilir, böylece projeler arasında paylaşılabilir.
Güvenlik duvarları, kullanılan sürücüye bağlı olarak çeşitli şekillerde uygulanır. Örneğin, bir iptables sürücüsü iptable kurallarını kullanarak güvenlik duvarı kurallarını uygular. OpenVSwitch sürücüsü, akış tablolarındaki akış girişlerini kullanarak güvenlik duvarı kurallarını uygular. Bir Cisco güvenlik duvarı sürücüsü NSX cihazlarını yönetir.
FWaaS v1 ve FWaaS v2 olarak iki versiyonu vardır.
Orijinal FWaaS uygulaması, v1, yönlendiriciler için koruma sağlar. Bir yönlendiriciye güvenlik duvarı uygulandığında, tüm dahili bağlantı noktaları korunur.
Aşağıdaki şema FWaaS v1 korumasını göstermektedir. VM2 örneği için giriş ve çıkış trafiğini gösterir:
Daha yeni FWaaS uygulaması, v2, çok daha ayrıntılı bir hizmet sunar. Güvenlik duvarı kavramı, güvenlik duvarının iki politikadan oluştuğunu belirtmek için güvenlik duvarı grubuyla değiştirilmiştir: bir giriş politikası ve bir çıkış politikası. Bir güvenlik duvarı grubu yönlendirici düzeyinde (yönlendiricideki tüm bağlantı noktaları) değil, bağlantı noktası düzeyinde uygulanır. Şu anda, yönlendirici bağlantı noktaları belirtilebilir. Ocata için VM bağlantı noktaları da belirtilebilir.
FWaaS v1 ve FWaaS v2 farkları
Object data storage
Object data storage, petabayt’lar seviyesinde erişilebilir verileri depolamak için standartlaştırılmış sunucu kümeleri kullanan yedekli, ölçeklenebilir veri depolama yapılarıdır. Geri alınabilen ve güncellenebilen büyük miktarlarda statik veri için uzun süreli bir depolama sistemidir. Object Storage, daha fazla ölçeklenebilirlik, artıklık ve kalıcılık sağlayan, merkezi kontrol noktası olmayan dağıtılmış bir mimari kullanır. Nesneler birden çok donanım aygıtına yazılır ve OpenStack yazılımı küme genelinde veri çoğaltma ve bütünlüğünü sağlamaktan sorumludur. Depolama kümeleri yeni node’lar ekleyerek yatay olarak ölçeklenir. Bir node başarısız olursa, OpenStack içeriğini diğer aktif node’lardan çoğaltmak için çalışır. OpenStack, farklı aygıtlar arasında veri çoğaltma ve dağıtımı sağlamak için yazılım mantığı kullandığından, daha pahalı ekipman yerine ucuz sabit diskleri ve sunucuları kullanılabilir.
Object data storage, uygun maliyetli, ölçeklenebilir depolama için idealdir. Doğrudan uygulamalara entegre edilebilen veya yedekleme, arşivleme ve veri saklama için kullanılabilen, tamamen dağıtılmış, API tarafından erişilebilir bir depolama platformu sağlar.
Buraya kadar anlattığım bileşenleri aşağıdaki gibi hayal etmeye çalışın.
OpenStack Mimarisi
Örneğin 3 Node’lu bir OpenStack mimarisi de aşağıdaki gibi olur.
Bunları ilerleyen makalelerde de detaylıca inceleyebiliriz.
Bu bileşenlerin yönetimi, web tabanlı arayüz üzerinden veya OpenStack komut satırı yardımıyla yapılabilmektedir.
Platform tarafından sağlanan kaynaklara erişim, web tabanlı self servis portalı üzerinden gerçekleşir. Platform kullanıcılarının, yalnızca birkaç tıklamayla sanal ağlar, yönlendiriciler, disk sürücüleri oluşturmalarına izin verilir ve OpenStack platformu, bu değişiklikleri bağımsız olarak altyapı düzeyinde uygulayarak çeşitli ağ ekipmanları ve depolama sistemleriyle entegrasyonu sağlar. OpenStack altyapısı yapılandırıldığında, sanal sunucuların önceden hazırlanmış sunucu şablonlarından, kullanıcılar tarafından yeni sanal sunucular oluşturulmasına ve yeni sunucuların deploy edilmesine izin verilir. Kullanıcı işlemlerinin çoğu temelde oldukça basittir ve altyapı teknolojilerinin yönetimi hakkında özel bir bilgi gerektirmemektedir. Tüm seçimler ve ayarlar web arabiriminden yapılır. Ilgili sunucu ve yazılım şablonu seçilerek, istenen özellikte ve istenen yazılımları içeren sunucuların oluşturulması, çok kısa bir süre içerinde gerçekleştirilebilmektedir.
OpenStack ayrıca, son zamanların popüler konularından olan Container teknolojisini de servis olarak sunabilme becerisine sahip.
OpenStack, kullanıcılarını belirli bir teknoloji, satıcı veya donanıma bağımlı olmaktan da kurtarmaktadır. Çünkü, çekirdek altyapıda ne olduğuyla ilgilenmez, genel veya herhangi bir üreticinin driver’ları ya da API’leri aracılığıyla çekirdek altyapı ile etkileşime girer.
OpenStack, API aracılığıyla, tüketilen kaynakların kaydını tutan kimlik yönetimi, düzenleme gibi ek hizmetleri de sağlamaktadır. OpenStack ayrıca DevOps, sürekli entegrasyon ve sürekli dağıtım metodolojisinin gelişimine de zemin sağlar.
OpenStack bir sanallaştırma teknolojisi değildir. Ancak VMware vSphere ile mevcut olan KVM, Xen, QEMU, Hyper-V gibi popüler hipervisor’leri içeren, bir soyutlama katmanı vasıtasıyla birden fazla hipervisor’ı destekleyen ve yukarıda da bahsettiğim gibi bu kaynakları ağ, depolama, yük dengeleme, firewall gibi servisler olarak destekleyen bir bulut yönetim platformudur.
OpenStack, dünya çapında 500’den fazla BT endüstrisi liderinden çok sayıda geliştiriciyi içeren büyük bir ekosistem oluşturdu. OpenStack için belirli sorunları çözen çok sayıda satıcıya özel modül vardır. Aktif olarak geliştiği için birçok şirket OpenStack’ı tercih ediyor.
OpenStack ile geleneksel IT altyapısı arasındaki fark nedir?
Geleneksel ve OpenStack bulut teknolojileri arasındaki farkı anlamak için öncelikle tasarım felsefelerindeki farkı açıklamak gerekir.
İlk olarak, VMware vSphere platformu (ya da Red Hat Enterprise Virtualization, Hyper-V vs) gibi geleneksel altyapıyı ele alalım. Bu teknolojiler, herhangi boyuttaki kaynaklara sahip altyapı sunucularını cluster altında toplayıp kaynaklarını birleştirmeye ve kaynak havuzları oluşturmaya yardımcı olarak, bir bulutla ortamıyla karşılaştırıldığında ise nisbeten sınırlı bir ortama ev sahipliği yapmaya odaklanır.
Uygulama sunucularının çoğunda, örneğin Oracle veya Microsoft Exchange gibi monolitik mimarideki sunucular için geleneksel çözüm daha iyi çalışır. Bu türdeki her örnek, bir hipervizör tarafından çalıştırılan bir sanal sunucunun ne kadar kaynağa sahip olacağı ile sınırlıdır.
Bu kalıtsal sistemlerin güvenilirliğini sağlamak için, altyapı dayanıklılığını artırma ve iş sürekliliği gibi işlevsel özellikler (örn. VMware FT, VMware High Availability ve VMware vMotion) kullanmak amacıyla, altyapıyı sağlayan sanallaştırma platformları cluster mantığıyla çalıştırılır. Genel olarak, tüm klasik sanallaştırma platformları, sanal sunucular için altyapı düzeyinde, iş sürekliliğini sağlayarak uygulama kullanılabilirliğini artıran ve uygulamada herhangi bir değişiklik gerektirmeyen, iyi test edilmiş yüksek erişilebilirlik araçları sunar.
OpenStack gibi bulut platformları, ölçeklendirme için tasarlanmış olan Apache Cassandra, MongoDB ve Hadoop gibi başka bir sınıf uygulama ile kullanılmak üzere tasarlanmıştır ve bu uygulamalar sanal makine hatalarına karşı dayanıklıdır. Yük dengelemeli tek tip sanal sunuculara daha fazla openstack uygulama sunucusu eklenerek kaynaklar genişletilebilir. Bu dağıtılmış uygulamalar, altta yatan altyapı ve hiper denetimcilerin gelişmiş özelliklerinden bağımsız olarak uygulama düzeyinde kendi hata toleranslarını sağlar.
OpenStack altyapısı tarafından, bir uygulamanın yüksek düzeyde kullanılabilirliği sağlanabilir. Donanım maliyetlerini en aza indirmek için arıza işleme, uygulama düzeyinde yapılır. Fakat, altyapı katmanında yüksek kullanılabilirlik, yüksek işlemci gücü, depolama kapasitesi ve ağ bant genişliği gibi değişiklikler, bir kullanıcı tarafından üçüncü taraf yazılım değişiklikleri gerektirebilir. Örneğin altyapıda VMware kullanılıyorsa, bütün bu iş sürekliliği ve yüksek erişilebilirlik özelliklerinin kullanılabilmesi için ortamda bir VMware vCenter sunucu olması gerekir.
Bulut platformları, uygulamaların esnekliğini yığının üstüne taşıyarak özel ekipman kullanımını (pahalı depolama, özel sunucu vb.) ortadan kaldırır. Standart ekipman, hızlı ölçeklendirme altyapısı sağlayan bir bulut platformu mimarisi çalıştırma seçeneği olarak kabul edilir.
OpenStack için giriş bölümümüz bu kadar olsun. İkinci makalede, bir OpenStack Cloud Platform sunucusu nasıl kurulur konusunu inceleyeceğiz.
Yararlı olması dileğiyle.
Yusuf İşleyen