İki CentOS 7 Sunucusunda Depolamayı Çoğaltmak İçin DRBD Nasıl Kurulur


DRBD (Dağıtılmış Çoğaltılmış Blok Cihazı anlamına gelir) Linux için dağıtılmış, esnek ve çok yönlü, çoğaltılmış bir depolama çözümüdür. Sabit diskler, bölümler, mantıksal birimler vb. blok cihazların içeriğini sunucular arasında yansıtır. İki depolama aygıtındaki verilerin bir kopyasını içerir; böylece biri arızalanırsa diğerindeki veriler kullanılabilir.

Bunu, disklerin sunucular arasında yansıtıldığı bir ağ RAID 1 yapılandırması gibi düşünebilirsiniz. Ancak RAID'den ve hatta ağ RAID'inden çok farklı bir şekilde çalışır.

Başlangıçta DRBD esas olarak yüksek kullanılabilirliğe sahip (HA) bilgisayar kümelerinde kullanılıyordu, ancak sürüm 9'dan itibaren bulut depolama çözümlerini dağıtmak için kullanılabilir.

Bu yazımızda CentOS'ta DRBD'nin nasıl kurulacağını göstereceğiz ve depolamayı (bölmeyi) iki sunucuya çoğaltmak için nasıl kullanılacağını kısaca göstereceğiz. Bu, Linux'ta DRBD kullanmaya başlamanız için mükemmel bir makale.

Test Ortamı

Bu makalenin amacı doğrultusunda, bu kurulum için iki düğüm kümesi kullanıyoruz.

  • Düğüm1: 192.168.56.101 – tecmint.tecmint.lan
  • Düğüm2: 192.168.56.102 – sunucu1.tecmint.lan

Adım 1: DRBD Paketlerini Yükleme

DRBD bir Linux çekirdek modülü olarak uygulanır. Tam olarak sanal blok aygıtı için bir sürücü oluşturur, dolayısıyla sistemin G/Ç yığınının hemen altına yakın bir yere kurulur.

DRBD, ELRepo veya EPEL depolarından yüklenebilir. ELRepo paket imzalama anahtarını içe aktararak başlayalım ve her iki düğümde de gösterildiği gibi depoyu etkinleştirelim.

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

Daha sonra aşağıdakileri çalıştırarak DRBD çekirdek modülünü ve yardımcı programları her iki düğüme de yükleyebiliriz:

yum install -y kmod-drbd84 drbd84-utils

SELinux'u etkinleştirdiyseniz, DRBD işlemlerini SELinux kontrolünden muaf tutacak şekilde politikaları değiştirmeniz gerekir.

semanage permissive -a drbd_t

Ayrıca, sisteminizde etkinleştirilmiş bir güvenlik duvarı (firewalld) varsa, iki düğüm arasında veri senkronizasyonuna izin vermek için güvenlik duvarına DRBD bağlantı noktasını 7789 eklemeniz gerekir.

Bu komutları ilk düğümde çalıştırın:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4"  source address="192.168.56.102" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

Ardından bu komutları ikinci düğümde çalıştırın:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.56.101" port port="7789" protocol="tcp" accept'
firewall-cmd --reload

Adım 2: Alt Düzey Depolamanın Hazırlanması

Artık iki küme düğümünde DRBD kurulu olduğuna göre, her iki düğümde de kabaca aynı boyutta bir depolama alanı hazırlamamız gerekiyor. Bu, bir sabit sürücü bölümü (veya tam bir fiziksel sabit sürücü), bir yazılım RAID aygıtı, bir LVM Mantıksal Birimi veya sisteminizde bulunan herhangi bir başka blok aygıt türü olabilir.

Bu makalenin amacı doğrultusunda, dd komutunu kullanarak 2GB boyutunda bir boş blok cihazı oluşturacağız.

 
dd if=/dev/zero of=/dev/sdb1 bs=2024k count=1024

Bunun, her iki düğüme bağlı ikinci bir blok cihazdaki (/dev/sdb) kullanılmayan bir bölüm (/dev/sdb1) olduğunu varsayacağız.

3. Adım: DRBD'yi Yapılandırma

DRBD'nin ana yapılandırma dosyası /etc/drbd.conf konumunda bulunur ve ek yapılandırma dosyaları /etc/drbd.d dizininde bulunabilir.

Depolamayı çoğaltmak için, DRBD yapılandırmasının global ve ortak bölümlerini içeren /etc/drbd.d/global_common.conf dosyasına gerekli yapılandırmaları eklememiz gerekir ve kaynakları .res dosyaları.

Her iki düğümde de orijinal dosyanın yedeğini alalım, ardından düzenlemek için yeni bir dosya açalım (beğendiğiniz bir metin düzenleyiciyi kullanın).

mv /etc/drbd.d/global_common.conf /etc/drbd.d/global_common.conf.orig
vim /etc/drbd.d/global_common.conf 

Her iki dosyaya da aşağıdaki satırları ekleyin:

global {
 usage-count  yes;
}
common {
 net {
  protocol C;
 }
}

Dosyayı kaydedin ve ardından düzenleyiciyi kapatın.

Protokol C satırına kısaca daha fazla ışık tutalım. DRBD üç farklı çoğaltma modunu (dolayısıyla üç dereceli çoğaltma eşzamanlılığını) destekler:

  • protokol A: Eşzamansız çoğaltma protokolü; çoğunlukla uzun mesafeli çoğaltma senaryolarında kullanılır.
  • protokol B: Yarı eşzamanlı çoğaltma protokolü, diğer adıyla Bellek eşzamanlı protokolü.
  • protokol C: kısa mesafeli ağlardaki düğümler için yaygın olarak kullanılır; DRBD kurulumlarında açık ara en yaygın kullanılan çoğaltma protokolüdür.

Önemli: Çoğaltma protokolü seçimi, dağıtımınızın iki faktörünü etkiler: koruma ve gecikme. Ve verim, aksine, seçilen çoğaltma protokolünden büyük ölçüde bağımsızdır.

Adım 4: Kaynak Ekleme

Kaynak, belirli bir şekilde çoğaltılmış veri kümesinin tüm yönlerini ifade eden kolektif bir terimdir. Kaynağımızı /etc/drbd.d/test.res adlı bir dosyada tanımlayacağız.

Aşağıdaki içeriği her iki düğümde de dosyaya ekleyin (içerikteki değişkenleri ortamınızın gerçek değerleri ile değiştirmeyi unutmayın).

Ana bilgisayar adlarını not edin; uname -n komutunu çalıştırarak elde edilebilecek ağ ana bilgisayar adını belirtmemiz gerekir.

resource test {
        on tecmint.tecmint.lan {
 		device /dev/drbd0;
       		disk /dev/sdb1;
        		meta-disk internal;	
                	address 192.168.56.101:7789;
        }
        on server1.tecmint.lan  {
		device /dev/drbd0;
        		disk /dev/sdb1;
        		meta-disk internal;
                	address 192.168.56.102:7789;
        }
}
}

Neresi :

  • ana bilgisayar adı hakkında: ekteki yapılandırma bildirimlerinin uygulandığı bölüm durumları.
  • test: yeni kaynağın adıdır.
  • device /dev/drbd0: DRBD tarafından yönetilen yeni sanal blok cihazını belirtir.
  • disk /dev/sdb1: DRBD cihazının yedekleme cihazı olan blok cihaz bölümüdür.
  • meta-disk: DRBD'nin meta verilerini nerede sakladığını tanımlar. Dahili kullanmak, DRBD'nin meta verilerini gerçek üretim verileriyle aynı fiziksel alt düzey cihazda depoladığı anlamına gelir.
  • adres: ilgili düğümün IP adresini ve bağlantı noktası numarasını belirtir.

Ayrıca, seçeneklerin her iki ana bilgisayarda da eşit değerleri varsa bunları doğrudan kaynak bölümünde belirtebileceğinizi unutmayın.

Örneğin yukarıdaki konfigürasyon şu şekilde yeniden yapılandırılabilir:

resource test {
	device /dev/drbd0;
	disk /dev/sdb1;
        	meta-disk internal;	
        	on tecmint.tecmint.lan {
 		address 192.168.56.101:7789;
        	}
        	on server1.tecmint.lan  {
		address 192.168.56.102:7789;
        		}
}

Adım 5: Kaynağı Başlatma ve Etkinleştirme

DRBD ile etkileşimde bulunmak için, DRBD kaynaklarını yapılandırmak ve yönetmek amacıyla çekirdek modülüyle iletişim kuran aşağıdaki yönetim araçlarını kullanacağız:

  • drbdadm: DRBD'nin üst düzey yönetim aracı.
  • drbdsetup: DRBD cihazlarını destek blok cihazlarıyla bağlamak, destek blok cihazlarını yansıtmak için DRBD cihaz çiftlerini ayarlamak ve çalışan DRBD cihazlarının yapılandırmasını denetlemek için kullanılan alt düzey bir yönetim aracı.
  • Drbdmeta:meta veri yönetimi aracıdır.

Tüm başlangıç kaynak yapılandırmalarını ekledikten sonra, kaynağı her iki düğümde de getirmeliyiz.

drbdadm create-md test

Daha sonra, kaynağı destek cihazıyla birlikte ekleyecek olan kaynağı etkinleştirmeliyiz, ardından çoğaltma parametrelerini ayarlayıp kaynağı eşdüzeyine bağlamalıyız:

drbdadm up test

Şimdi lsblk komutunu çalıştırırsanız, DRBD cihazı/birimi drbd0'nin /dev/sdb1 destek cihazıyla ilişkili olduğunu fark edeceksiniz:

lsblk

Kaynağı devre dışı bırakmak için şunu çalıştırın:

drbdadm down test

Kaynak durumunu kontrol etmek için aşağıdaki komutu çalıştırın (bu noktada Tutarsız/Tutarsız disk durumunun beklendiğini unutmayın):

drbdadm status test
OR
drbdsetup status test --verbose --statistics 	#for  a more detailed status 

Adım 6: Birincil Kaynağı/İlk Cihaz Senkronizasyon Kaynağını Ayarlayın

Bu aşamada DRBD artık çalışmaya hazırdır. Şimdi, ilk cihaz senkronizasyonunun kaynağı olarak hangi düğümün kullanılması gerektiğini söylememiz gerekiyor.

İlk tam senkronizasyonu başlatmak için aşağıdaki komutu yalnızca bir düğümde çalıştırın:

drbdadm primary --force test
drbdadm status test

Senkronizasyon tamamlandıktan sonra her iki diskin durumu da UpToDate olmalıdır.

Adım 7: DRBD Kurulumunu Test Etme

Son olarak, DRBD cihazının çoğaltılmış veri depolama için iyi çalışıp çalışmayacağını test etmemiz gerekiyor. Unutmayın, boş bir disk birimi kullandık, bu nedenle çoğaltılmış veri depolama için kullanıp kullanamayacağımızı test etmek için cihazda bir dosya sistemi oluşturmalı ve onu bağlamalıyız.

Cihazda, ilk tam senkronizasyonu başlattığımız düğümde (birincil role sahip kaynağa sahip olan) aşağıdaki komutla bir dosya sistemi oluşturabiliriz:

mkfs -t ext4 /dev/drbd0 

Daha sonra gösterildiği gibi bağlayın (bağlama noktasına uygun bir ad verebilirsiniz):

mkdir -p /mnt/DRDB_PRI/
mount /dev/drbd0 /mnt/DRDB_PRI/

Şimdi yukarıdaki bağlama noktasında bazı dosyaları kopyalayın veya oluşturun ve ls komutunu kullanarak uzun bir listeleme yapın:

cd /mnt/DRDB_PRI/
ls -l 

Daha sonra, cihazın bağlantısını kaldırın (bağlantının açık olmadığından emin olun, hataları önlemek için bağlantıyı kestikten sonra dizini değiştirin) ve düğümün rolünü birincil yerine < olarak değiştirin. güçlü>ikincil:

umount /mnt/DRDB_PRI/
cd
drbdadm secondary test

Diğer düğümde (ikincil role sahip kaynağa sahip olan) onu birincil yapın, ardından cihazı ona bağlayın ve bağlama noktasının uzun bir listesini yapın. Kurulum düzgün çalışıyorsa, birimde depolanan tüm dosyalar orada olmalıdır:

drbdadm primary test
mkdir -p /mnt/DRDB_SEC/
mount /dev/drbd0 /mnt/DRDB_SEC/
cd /mnt/DRDB_SEC/
ls  -l 

Daha fazla bilgi için kullanıcı alanı yönetimi araçlarının kılavuz sayfalarına bakın:

man drbdadm
man drbdsetup
man drbdmeta
Özet

DRBD son derece esnek ve çok yönlüdür; bu da onu hemen hemen her uygulamaya HA eklemek için uygun bir depolama çoğaltma çözümü haline getirir. Bu makalede, CentOS 7'de DRBD'nin nasıl kurulacağını gösterdik ve depolamayı çoğaltmak için bunun nasıl kullanılacağını kısaca gösterdik. Aşağıdaki geri bildirim formunu kullanarak düşüncelerinizi bizimle paylaşmaktan çekinmeyin.