CentOS 8'de Redis Kümesi Nasıl Kurulur - Bölüm 3


Redis Cluster, daha önce Sentinels kullanılarak uygulanan otomatik parçalamayı, çoğaltmayı ve yüksek kullanılabilirliği destekleyen yerleşik bir Redis özelliğidir. İki ana amaç için tasarlanmıştır: birincisi, veri kümenizi otomatik olarak birden fazla örnek arasında bölmek ve ikincisi, bölümler sırasında bir dereceye kadar kullanılabilirlik sağlamak, bazı örnekler (özellikle ana bilgisayarlar) başarısız olduğunda veya çoğunluğuyla iletişim kuramadığında operasyonlara devam etmektir. kümedeki düğümler.

Ancak daha büyük arızalar durumunda (örneğin, ana örneklerin çoğunluğu kullanılamadığında) küme çalışmayı durdurur. Ayrıca, bir ana ve yardımcı birim aynı anda arızalanırsa, küme normal işlemlerine devam edemez (ancak geçici çözüm, küme düzenini otomatik olarak değiştirmek için daha fazla düğüm eklemek veya kümede bir asimetri oluşturmaktır).

Redis küme belgelerine göre, beklendiği gibi çalışan "minimum küme"nin en az 3 ana düğüm içermesi gerekir. Ancak yüksek kullanılabilirlik için en uygun kurulum, her birinin bir köleye sahip olduğu üç ana ve üç ikincil sunucudan oluşan en az 6 düğüme sahip olmalıdır.

Önemli: Redis Cluster'ın ayrıca, NAT'lı ortamların yanı sıra IP adreslerinin veya TCP bağlantı noktalarının yeniden eşlendiği ortamlara yönelik destek eksikliği gibi bazı sınırlamaları da vardır. örneği Docker altında bulabilirsiniz. Ayrıca her istemci kitaplığı bunu desteklemez.

Bu makalede, CentOS 8'de bir Redis Kümesinin (Küme Modu Devre Dışı ile) nasıl kurulacağı gösterilmektedir. Redis'in nasıl kurulacağını, küme düğümlerinin nasıl yapılandırılacağını, bir kümenin nasıl oluşturulacağını ve küme yük devretme işleminin nasıl test edileceğini içerir.

Not: Bu kılavuzda, küme modunu çalıştırmak için yeni/boş Redis örneklerini kullanacağız. Küme modu, Redis Serimizin ilk iki kılavuzunda yapılan bazı yapılandırmalarla çalışmaz, özellikle parametrenin kopyası kullanıldığında çalışmaz.

Önkoşullar:

  1. CentOS 8 Kurulumlu Sunucular

Test Ortamı Kurulumu

Redis Master1: 10.42.0.247
Redis Master2: 10.42.0.197
Redis Master3: 10.42.0.132

Redis Slave1: 10.42.0.200
Redis Slave2: 10.42.0.21
Redis Slave3: 10.42.0.34

Kurulumumuzda 3 okuma/yazma ana düğümü ve 3 salt okunur kopya düğümü vardır; her bir ana öğenin bir kopyası vardır, dolayısıyla üç parça, her düğümdeki kümenin tüm verilerini içerir. Bir uygulama API veya CLI istemcisi yalnızca ana düğümlere yazabilir ancak kümedeki herhangi bir düğümden okuyabilir.

1. Adım: Redis'i Tüm Düğümlere Yükleme

1. SSH yoluyla tüm örneklere giriş yapın, ardından gösterildiği gibi DNF paket yöneticisini kullanarak Redis modülünü yüklemek için aşağıdaki komutu çalıştırın.

dnf module install redis

2. Ardından, Redis hizmetini başlatın, sistem önyüklemesinde otomatik olarak başlamasını etkinleştirin ve çalıştığını doğrulamak için durumunu kontrol edin (hizmeti 6 örneğin tamamında doğrulayın) ):

systemctl start redis
systemctl enable redis
systemctl status redis

2. Adım: Tüm Düğümlerde Redis Örneklerini Yapılandırma

3. Bu bölümde Redis küme düğümlerinin nasıl yapılandırılacağı açıklanmaktadır. Buradaki yapılandırmaları tüm düğümlerde gerçekleştirmeyi unutmayın.

Redis sunucusunu yapılandırmak için /etc/redis.conf yapılandırma dosyasını kullanın. Önerilen bir uygulama olarak, orijinal dosyanın bir yedeğini, seçtiğiniz bir komut satırı metin düzenleyicisini kullanarak düzenlemeden önce oluşturun.

cp /etc/redis.conf /etc/redis.conf.orig
vi /etc/redis.conf

4. Ardından, aşağıdaki yapılandırma parametrelerini bulun ve değerlerini gösterildiği gibi düzenleyin. bind parametresi, Redis sunucusunun dinleyeceği arayüzünü ayarlar ve değerini örnek LAN IP'sine ayarlar. 127.0.0.1'i kaldırın çünkü onu orada bırakmanın küme oluşturma sürecini, özellikle de kümeye katılma aşamasını yavaşlattığını fark ettik.

bind  10.42.0.247

Ardından, kümedeki diğer örneklerden gelen bağlantılara izin vermek için korumalı modu hayır olarak ayarlayın.

protected-mode no

port parametresi, Redis sunucusunun bağlantılar için dinleyeceği bağlantı noktasını tanımlar; varsayılan değer 6379'dur. Bu, istemcilerle iletişim kurmak için kullanılan veri bağlantı noktasıdır.

port 6379

5. Sonraki parametre grubu, küme modunu etkinleştirecek ve bazı yararlı özelliklerini ayarlayacaktır. Küme etkin parametresi evet olarak ayarlandığında küme modunu etkinleştirir.

cluster-enabled yes

Daha sonra, cluster-config-file parametresi bir küme düğümünün küme yapılandırma dosyasının adını ayarlar (ör. nodes-6379.conf). Dosya çalışma dizininde oluşturulur (varsayılan olarak dir parametresi kullanılarak tanımlanan /var/lib/redis'tir) ve kullanıcı tarafından düzenlenemez.

cluster-config-file nodes-6379.conf

Bir sonraki kullanışlı küme seçeneği küme düğümü zaman aşımı'dır; bir örneğin hata durumunda dikkate alınması için kullanılamayacağı maksimum süreyi milisaniye cinsinden ayarlamak için kullanılır. 15000 değeri 15 saniyeye eşdeğerdir.

cluster-node-timeout 15000

6. Redis'in diskteki kalıcılığını da etkinleştirmemiz gerekiyor. Kalıcılık modlarından birini, yani Yalnızca Ekleme Dosyası'nı (AOF) kullanabiliriz: günlüğe kaydeder (oluşturulan appendonly.aof dosyasında) çalışma dizini altında) sunucu tarafından başarıyla alınan her yazma işlemi. Veriler, orijinal veri kümesini yeniden oluşturmak için sunucunun başlatılması sırasında oynatılacaktır.

Etkinleştirmek için appendonly parametresini yes olarak ayarlayın.

appendonly yes

7. Tüm değişiklikleri yaptıktan sonra, son değişiklikleri uygulamak için tüm düğümlerde Redis hizmetini yeniden başlatın.

systemctl restart redis

8. Bu noktada, her küme düğümünün artık bir kimliğe sahip olması gerekir. Bunu /var/log/redis/redis.log adresinde bulunan günlük dosyasından kontrol edebilirsiniz.

cat /var/log/redis/redis.log

9. Ardından, tüm örneklerde 6397 ve 16379 bağlantı noktalarını açın. Daha sonraki bağlantı noktası, küme veri yolu (ikili protokol kullanan düğümden düğüme iletişim kanalı) için kullanılır. Bu, Redis kümesi TCP bağlantıları için temel bir gereksinimdir.

firewall-cmd --zone=public --permanent --add-port=6379/tcp 
firewall-cmd --zone=public --permanent --add-port=16379/tcp 
firewall-cmd --reload

3. Adım: Redis Kümesini Oluşturma

10. Kümeyi oluşturmak için redis-cli komut satırı istemcisini aşağıdaki gibi kullanın. --cluster create, küme oluşturulmasını sağlar ve --cluster-replicas 1, ana öğe başına bir kopya oluşturmak anlamına gelir.

6 düğümden oluşan kurulumumuz için 3 master ve 3 kölemiz olacak.

İlk 6 düğümün ana (M) olarak, sonraki üç düğümün ise bağımlı (S) olarak kabul edileceğini unutmayın. kodu >. İlk köle, yani 10.42.0.200:6379 ilk yöneticiyi, yani 10.42.0.247:6379'u çoğaltır, ikinci bağımlı ikinci yöneticiyi bu sırayla çoğaltır.

Aşağıdaki komut, sonucun yukarıdaki mantıksal kurulumu temsil edeceği şekilde biçimlendirilmiştir.

redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

11. Küme oluşturma başarılı olduktan sonra, tüm küme düğümlerini listelemek için herhangi bir ana bilgisayarda aşağıdaki komutu çalıştırın (-h işaretini kullanarak IP adresini belirtin).

redis-cli -h 10.42.0.247 -p 6379 cluster nodes

Aşağıdaki ekran görüntüsünde gösterildiği gibi, kölelerin analarını belirttiği tüm küme düğümlerini görebilmeniz gerekir.

Farklı alanlar şu sırayladır: düğüm kimliği, IP adresi:bağlantı noktası, bayraklar, gönderilen son ping, alınan son pong, yapılandırma dönemi, bağlantı durumu, yuvalar (ana bilgisayarlar için).

4. Adım: Redis Kümesi Yük Devretmesini Test Etme

12. Bu bölümde küme yük devretme işleminin nasıl test edileceğini göstereceğiz. Öncelikle ustaları not edelim.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Ayrıca Redis kölelerine de dikkat edin.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

13. Ardından, ana düğümlerden birinde (ör. 10.42.0.197) Redis hizmetini durduralım ve kümedeki tüm ana düğümleri kontrol edelim.

systemctl stop redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Aşağıdaki ekran görüntüsünden, 10.42.0.197:6367 düğümünün başarısız durumda olduğunu ve bağımlı 10.42.0.21:6379 düğümünün ana durumuna yükseltildiğini görebilirsiniz.

14. Şimdi başarısız olan düğümde Redis hizmetini bir kez daha başlatalım ve kümedeki tüm ana öğeleri kontrol edelim.

systemctl start redis
redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Ayrıca, başarısız olan yöneticinin artık bir bağımlı olduğunu doğrulamak için küme bağımlı birimlerini kontrol edin.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

5. Adım: Redis Kümesi Genelinde Veri Çoğaltmayı Test Etme

15. Bu son bölümde küme veri çoğaltmasının nasıl doğrulanacağı açıklanmaktadır. Master’lardan biri üzerinde bir anahtar ve değer oluşturacağız, ardından bunu aşağıdaki gibi tüm Cluster Node’lardan okumaya çalışacağız. Redis-cli yardımcı programı altında küme desteğini etkinleştirmek ve küme modunda verilere erişmek için -c anahtarını kullanın.

redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com'
redis-cli -c -h 10.42.0.247 -p 6379 get name
redis-cli -c -h 10.42.0.21 -p 6379 get name
redis-cli -c -h 10.42.0.132 -p 6379 get name
redis-cli -c -h 10.42.0.200 -p 6379 get name
redis-cli -c -h 10.42.0.197 -p 6379 get name
redis-cli -c -h 10.42.0.34 -p 6379 get name

Sonuç olarak Redis Cluster otomatik parçalama, çoğaltma ve yüksek kullanılabilirlik elde etmenin tercih edilen yoludur. /etc/redis.conf dosyasının geri kalanında iyi belgelenmiş başka birçok yapılandırma parametresi vardır; daha fazla bilgiyi resmi belgelerde bulabilirsiniz: Redis kümesi öğreticisi ve Redis kümesi belirtimi.

Bu bizi üç bölümlük Redis eğitim serisinin sonuna getiriyor. Aşağıdaki geri bildirim formu soru veya yorum göndermek için kullanılabilir.