Gluster – Centos 7 üzerine 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 root@gluster2.enterprisecoding.local

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.

Elle Volume Oluşturma

Yukarıdaki adımların takip edilmesi ardından Gluster kurulumu tamamlanmış olacaktır. Kurulumu teyit etmek adına volume oluşturularak aşağıdaki adımlar takip edilerek bu volume sunuculardan birine bağlanabilir;

heketi-cli volume create --size=10 --clusters=5b9e8289c83ffb6e661bb4c31bffa6ee

Not: GlusterFS replication’ı için minimum’da 3 node kurulumu gerekmektedir. Bu makalede olduğu gibi 2 node ile yapılan kurulumlar için aşağıdaki şekilde hata alınacaktır.

Bu durumda yukarıdaki komut –durability=none parametresi eklenerek çalıştırılmalıdır.

heketi-cli volume create --size=10 --clusters=5b9e8289c83ffb6e661bb4c31bffa6ee --durability=none

Komut çıktısında yer alan Mount değeri takip eden adımlarda kullanılacağı için not alınmalıdır.

Yukarıdaki örnek volume aşağıdaki şekilde mount edilebilir;

mount -t glusterfs -o backup-volfile-servers=gluster01.enterprisecoding.local 192.168.200.6:vol_98553c51e3ebedf6e2efc7bbb996cd0a /etc/glusterfs_test

Oluşturulan volume Gluster Cluster’ı dışındaki bir sunucuda işletim sistemine bağlanmaya çalışılırsa glusterfs tanınmadığı için hata alınacaktır. Bu hatayı aşmak için yapılması gereken istemci kurulumları ilerleyen makalelerde bulunabilir.

Fatih Boy

Ankara'da yaşayan Fatih, kendi şirketinde özellikle bankacılık, sigortacılık ve otomotiv sektörlerinde IT danışmanlıkları vermektedir. Devops, ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook

2 yorum

  1. Pingback: Gluster, Heketi - Kubernetes Pod'u olarak kurulumu - Fatih'in Notları

  2. Pingback: GlusterFS Centos Native istemci Kurulumu - Fatih'in Notları

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.