GlusterFS – Heketi ve Cluster Kurulumu
Gluster yatayda büyüyebilen, ücretsiz ve açık kaynak kodlu bir network dosya sistemidir. Günümüzün değişen depolama ihtiyaçları göz önüne alınalarak dağıtık, bulut depolama çözümü olarak ortaya çıkmıştır.
Detayları aşağıda yer alan adımlar takip edilerek Centos 7 minimal işletim sistemi üzerine Gluster kümesi (cluster) kurulumu yapılabilir. Bu makalede 2 sunucudan oluşan bir küme üzerine nasıl Gluster Cluster’ı kurulacağına dair detayları paylaşacağım. Kurulum yapılan sunucularda sadece GlusterFS kullanımına verilecek /dev/sdb diskleri olduğu varsayılmaktadır. Gluster Cluster’ın topolojisi ve disk sayısı ihtiyaçlar doğrultusunda çeşitlilik gösterecektir. Aşağıdaki kurulum adımlarını takip ederek ve topoloji dosyasını güncelleyerek kendi ihtiyaçlarınız doğrultusunda bir kurulum yapabilirsiniz. Gluster Cluster kurulumu için farklı yöntemlerle ilerlenebilmektedir. Bu makalede detaylarını paylaştığım adımlar Heketi üzerinden nasıl kurabileceğinizi gösterecektir. İlerleyen makalelerde farklı yöntemleri de bulabilirsiniz.
Kuruluma başlarken sunucuların birbirlerini gördüğü ve dns üzerinden gidebildikleri, /etc/hosts dosyasında kayıtları olduğu kontrol edilmelidir.
GlusterFS tarafından kullanılacak olan dm_thin_pool Kernel modülü aşağıdaki komutla yüklenir;
modprobe dm_thin_pool
dm_thin_pool modülünün restartlar sonrası da aktif olması için /etc/modules-load.d altına girdi eklenmelidir.;
echo dm_thin_pool >> /etc/modules-load.d/dm_thin_pool.conf
Redhat sunucularda aşağıdaki içerikle /etc/yum.repos.d/Gluster.repo adresinde bir repo tanımı yapılmalıdır;
[gluster6]
name=Gluster 6 Repository
baseurl=http://mirror.centos.org/centos/7/storage/$basearch/gluster-6/
gpgcheck=0
enabled=1
Centos 7’de ise aşağıdaki komutla gerekli RPM depolarının kurulumu kolaylıkla yapılabilir;
yum install -y centos-release-gluster
Depo tanımları ardından aşağıdaki komutlar yardımıyla Gluster kurulumu ve servisinin başlatılması sağlanır;
yum install -y glusterfs-server
systemctl start glusterd
systemctl enable glusterd
İşletim sisteminde firewall aktif ise aşağıdaki komutla kapatılır;
systemctl stop firewalld
systemctl disable firewalld
Firewall’u tamamen kapatmayı tercih etmiyorsanız, alternatif olarak aşağıdaki komutla erişecek ip’ler için tanımlar yapmalısınız;
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="[ERİŞİM_VERİLECEK_İP_ADRESİ]" accept'
firewall-cmd --reload
Root kullanıcısı için sunucular arası şifresiz geçiş yapılandırılır.
Heketi Kurulumu
Heketi kurulumu yapılacak master sunucuya geçilerek aşağıdaki komutlarla paket kurulumu yapılır. Bu sunucu Gluster Cluster üyesi bir sunucu olabileceği gibi ayrı bir sunucuda olabilir. Bizim senaryomuzda Cluster’a üye bir sunucu üzerinde kurulum yapacağız. Devam eden heketi kurulum ve yapılandırma adımları aynı sunucuda olmalıdır.
yum -y install heketi heketi-client
Heketi varsayılan olarak 8080 portunu kullanmaktadır. Bu port başka bir uygulama tarafından kullanılıyorsa /etc/heketi/heketi.json dosyası içerisinden port güncellenmelidir.
Kurulum sırasında işletim sisteminde heketi servis kullanıcısı otomatik olarak oluşturulacaktır. Heketi kullanıcısının yapılandırma ve yönetim işlemlerini yapabilmesi için aşağıdaki komutlarla diğer cluster sunucularına şifresiz giriş tanımlanır;
ssh-keygen -b 4096 -t rsa -f /etc/heketi/heketi_key -N ""
ssh-copy-id -i /etc/heketi/heketi_key.pub [email protected]
ssh-copy-id komutu Gluster Cluster’ına üye tüm sunucular için yapılmalıdır.
Oluşturulan ssh anahtarı heketi kullanıcısına verilir;
chown heketi:heketi /etc/heketi/heketi_key*
Not: Heketi kurulum işlemleri cluster’a üye bir sunucu üzerinde yapılıyorsa host adıyla kendisi için de bu komutu çalıştırdığınıza emin olun.
/etc/heketi/heketi.json dosyasında aşağıdaki şekilde düzenlemeler yapılır;
1 ile işaretli değer Heketi server’ın hangi port üzerinden açılacağını belirtmektedir. 2 ile işaretli değer yetkilendirme yapılacağını belirtmektedir. 3 ile işaretle değer admin şifresidir, kendi belirlediğiniz bir şifre verebilirsiniz.4 ile işaretle değer kullanıcı şifresidir, kendi belirlediğiniz bir şifre verebilirsiniz.
Yapılandırma değişikliği ardından Heketi başlatılır;
systemctl start heketi
systemctl enable heketi
Heketi kurulumu aşağıdaki komutla test edilebilir;
curl http://localhost:8080/hello
GlusterFS Topolojisi’nin Heketi-cli ile oluşturulması
GlusterFS kurulumunu heketi-cli ile yapabilmek için öncelikle kuruluma dair topoloji bilgisi hazırlanmalıdır. Aşağıdaki içerikle topoloji.json dosyası oluşturulur. Dikkat ederseniz bu dosya içerisinde sunucu ve storage ip’leri ile bu sunuculardaki disk bilgileri yer almaktadır. Kendi ortamınız doğrultusunda bu bilgileri güncellemelisiniz.
{
"clusters": [
{
"nodes": [
{
"node": {
"hostnames": {
"manage": [
"gluster1.enterprisecoding.local"
],
"storage": [
"192.168.200.5"
]
},
"zone": 1
},
"devices": [
"/dev/sdb"
]
},
{
"node": {
"hostnames": {
"manage": [
"gluster2.enterprisecoding.local"
],
"storage": [
"192.168.200.6"
]
},
"zone": 1
},
"devices": [
"/dev/sdb"
]
}
]
}
]
}
Aşağıdaki komutla heketi-cli için gerekli ortam değişkenleri tanımlanır;
export HEKETI_CLI_SERVER=http://localhost:8080
export HEKETI_CLI_USER=admin
export HEKETI_CLI_KEY=N3f5BSNignLMKZdKNoZ6mVe4Z
Bu komutlardan HEKETI_CLI_KEY tanımında verilen değer yukarıdaki adımlarda heketi.json içerisinde admin kullanıcı için verilen şifre ile aynı olmalıdır.
Aşağıdaki komutla topoloji heketi-cli tarafından uygulanır;
heketi-cli topology load --json=topoloji.json
alternatif olarak; ortam değişkenleri tanımlanmadan bu değerler komuta aşağıdaki şekilde eklenebilir;
heketi-cli -s http://localhost:8080 --user admin --secret 'N3f5BSNignLMKZdKNoZ6mVe4Z' topology load --json=topoloji.json
Oluşan topoloji bilgisi aşağıdaki şekilde görüntülenebilir;
heketi-cli topology info
Topoloji bilgisinde yer alan cluster id’si not alınmalıdır.