Ceph Object Storage Kurulumu

Ceph Object Storage Kurulumu

Ceph; blok depolama, nesne tabanlı depolama ve dosya sistemi türündeki depolama ihtiyaçlarını tek bir platform üzerinden sağlayan bütünleşik bir çözümdür. Bu yazıda mevcut bir Ceph kümesine “object storage” servisinin eklenmesi ele alınacaktır.

Object Storage Servisi Hakkında

Ceph üzerinde “object storage” servisi Rados gateway sunucuları ile sağlanmaktadır. Yeni Ceph sürümlerinde “Rados Gateway – RGW” terimi yerini “Ceph Object Gateway”e bırakmıştır. Her ne kadar daha öncesinde RadosGW olarak anılsa da, bu yazıda da terminolojide farklılık olmaması açısından “Ceph Object Gateway – Object GW” kullanılacaktır.

“Object storage” servisi, ön tarafta çalışan, REST tabanlı, Amazon S3 ve OpenStack Swift API ile uyumlu Object GW sunucularından meydana gelmektedir. Object GW üzerinde çalışan web sunucusu, API üzerinden istekleri karşılayarak librados kütüphanesi kullanarak alt katmanda yer alan nesnelere erişmektedir. Aynı kullanıcıya ait erişim bilgileri ile hem S3, hem de Swift API üzerinden aynı alandaki objelere erişmek mümkündür. Amazon S3 literatüründe “bucket” olarak kullanılan terim OpenStack Swift tarafında “container” kavramına karşılık gelmektedir.

Object GW sunucuları monitör sunucular üzerinde çalışabileceği gibi istenmesi halinde farklı sunucularda da yer alabilir. Ceph aksi belirtilmediği sürece varsayılan olarak C/C++ tabanlı Civetweb sunucusunu kullanmaktadır. İhtiyaç halinde Apache ile kullanılmak üzere de yapılandırılabilmektedir. Bu yazıda Object GW sunucularının monitör sunucularda Civetweb ile çalışacak şekilde kurulumu anlatılacaktır. Birden fazla monitör sunucusunda kurulum yapıldığı için ön tarafta trafiği karşılayan bir “load balancer” tanımlanmalı, her Object GW sunucusu bu “load balancer”a ait havuza eklenmelidir. Böylece hem gelen yük dengelenecek, hem de sunuculardan birisi devre dışı kaldığında yedeklilik sağlanmış olacaktır.

Object Storage Servisinin Eklenmesi

Öncelikle Ceph kurulumunda kullanılan ve sistem tarafından rezerv edilen “ceph” kullanıcısından farklı olması gereken kullanıcıya geçiş yapılması ve kurulum sürecinde oluşturulan keyring ve konfigürasyon dosyalarının olduğu dizine geçilmesi gerekmektedir. Bu örnekte “ceph-admin” kullanıcısı baz alınmıştır. 

Bu dizin içerisinde kurulum esnasında kullanılan ceph.conf dosyası ve oluşturulan keyring dosyaları bulunmalıdır.

Daha sonra istenilen sürüm baz alınarak Object GW sunucusuna ait paketlerin ilgili sunuculara eklenmesi gerekmektedir.

Örnekte monitör sunucularının üçüne de ilgili paketlerin kurulması sağlanmıştır. Ardından bu paketlerde yer alan civetweb kullanılarak Object GW servisinin oluşturulması ve başlatılması için aşağıdaki komutun çalıştırılması gerekmektedir.

Ardından ilgili servise ait istenilen parametreler ceph.conf dosyası içerisinde değiştirilmelidir. Örneğin varsayılan olarak 7480 portunda çalışan web hizmetinin 80 portunda çalışması için aşağıdaki tanımların eklenmesi gerekir.

Eğer SSL üzerinden servis verilmek istenirse geçerli bir sertifika yolu belirtilmelidir. Sertifika dosyasının içeriğinde sunucuya ait private key, alan adına ait sertifika ve sertifika otoritesine ait root ve CA sertifikaları bulunmalıdır. Örnek bir SSL yapılandırması aşağıdaki gibi olmalıdır.

Bunun dışında S3 API kullanıldığında ilgili “bucket”lara subdomain olarak erişmek için aşağıdaki tanımların eklenmesi gerekmektedir. Örneğin test isimli bir “bucket”a “test.domain.com” adresi ile doğrudan erişmek için konfigürasyona “dns name” tanımı eklenmelidir. Tutulan günlük dosyaları için bir yol tanımı da eklemek de mümkündür.

S3 bucket subdomain erişimi için ayrıca ilgili alan adı için wildcard bir DNS tanımı yapılmalı, bu adres Object GW sunucularının çalıştığı havuza ait load balancer VIP adresi olmalıdır.

Benzer şekilde OpenStack entegrasyonu için bazı tanımlar yapılabilir ancak bu durumda OpenStack tarafında da yapılması gereken işlemler bulunduğundan bu konu ayrı bir yazıda ele alınacaktır.

Son olarak büyük bucket’larda performans kaybı yaşanmaması için konfigürasyon dosyasının [global] bölümüne aşağıdaki eklemenin yapılması önerilmektedir.

Tüm bu eklemeler yapıldıktan sonra konfigürasyon dosyası “ceph-deploy” komutu vasıtasıyla kümedeki tüm sunuculara gönderilir. Örnek komut aşağıda verilmiştir. Buradaki –overwrite-conf parametresi mevcut konfigürasyonun üzerine yazması için gereklidir. Aksi halde konfigürasyon dosyası mevcut olduğu için hata verecektir.

Kopyalama işlemi bittiğinde rgw servislerinin yeniden başlatılması sonrası değişiklikler etkili olacaktır. İlgili sunucular üzerinde çalıştırılması gereken örnek komutlar aşağıda verilmiştir.

Yeniden başlatma tamamlandığında Object GW servisleri kullanıma hazır hale gelmiştir. Servis için tanımlanan adrese erişildiğinde aşağıdakine benzer bir sayfa karşılamalıdır.

Bu servise API üzerinden erişip kullanabilmek için resmi sayfadan faydalanabilirsiniz. S3 API ve Swift API için ayrı ayrı Java, C#, Python, PHP, C++, Ruby ve Perl gibi bir çok dilde örnek mevcuttur. Bu tür örnekler başka bir yazının konusu olacaktır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir