CentOS 8’de Redis Kurulumu

Giriş

Redis, açık kaynaklı bir bellek içi veri yapısı deposudur. Basit anahtar-değer çiftlerini depolamak için Memcached alternatifi olarak, bir NoSQL veritabanı veya hatta Pub-Sub modeline sahip bir mesaj aracısı olarak kullanabilirsiniz. Bu kılavuz, CentOS 8’de Redis’i nasıl kuracağınızı, yapılandıracağınızı, ince ayar yapacağınızı ve güvenli hale getireceğinizi gösterecektir.

Önkoşullar

  • Redis için yeterli boş belleğe sahip bir CentOS 8 sunucusu . 1 milyon küçük Anahtar -> Dize-Değer çifti ~ 85 MB kullanır.
  • En iyi uygulama kılavuzlarını izleyin:Bir sudo kullanıcısı oluşturun
  • CentOS sistemini güncelleyin

1. Redis’i yükleyin

Remi’nin RPM deposu, CentOS için uzun süreli ve topluluk tarafından güvenilen bir depodur. Redis paketi genellikle CentOS’un Redis paketinden daha yenidir.

1. Depoyu etkinleştirin:

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y

2. Remi deposundaki tüm mevcut Redis paketlerini listeleyin.

$ dnf module list | grep redis

Sonuç şöyle görünmeli:

redis     5 [d]        common [d]     Redis persistent key-value database
redis     remi-5.0     common [d]     Redis persistent key-value database
redis     remi-6.0     common [d]     Redis persistent key-value database

Yukarıdaki ikinci sütundaki değerler, Redis’in ana sürümlerine karşılık gelir.

3. En son ana sürümün 6.0 olduğunu varsayarsak, şu sürümü yükleyin:

$ sudo dnf module install redis:remi-6.0 -y

4. Redis hizmetinin önyükleme zamanında başlamasını etkinleştirin.

$ sudo systemctl enable redis.service

5. Redis’i başlatın.

$ sudo systemctl start redis.service

2. Redis’i yapılandırın

1. Redis yapılandırma dosyasını favori düzenleyicinizde açın:

$ sudo nano /etc/redis.conf

2. Uygulamanız için istenen hafıza kapasitesini ayarlayın.

maxmemory 128mb

Varsayılan olarak, maxmemory’ye ulaşıldığında, Redis yeni veri yazmayı durdurur. Redis’in eski verileri otomatik olarak kaldırarak yeni veriler yazmasını istiyorsanız, Redis’e bunları nasıl kaldıracağını söylemeniz gerekir. AllKeys-LRU tahliye politikası çoğu kullanıcı için iyi bir seçimdir. Aşağıdaki satırı ekleyin:

maxmemory-policy allkeys-lru

3. Diske kaydetme politikasını ayarlayın.

Varsayılan olarak Redis, bellek içi verilerini belirli bir süre sonra veya DB’ye karşı belirli sayıda yazma işlemi sonrasında diske kaydeder. Varsayılan ayarlar şunlardır:

save 900 1
save 300 10
save 60 10000

Bu, tasarrufun gerçekleşeceği anlamına gelir:

  • 900 saniye (15 dakika) sonra en az 1 anahtar değiştirilirse
  • 300 saniye (5 dakika) sonra en az 10 tuş değiştirilirse
  • 60 saniye sonra en az 10000 anahtar değiştirilirse

Yukarıdaki varsayılan ayarlarla Redis, kaydedilen verileri her yeniden başlatıldığında belleğe yükleyecektir. Böylece önceki bellek içi verileriniz geri yüklenecektir. Bu özelliğe ihtiyacınız yoksa, bu satırları yorumlayarak tamamen devre dışı bırakabilirsiniz:

# save 900 1
# save 300 10
# save 60 10000

Bu özelliği korumaya karar verirseniz, Redis’in belleğinin yukarıda belirtilen maksimum belleğin iki katı olmasını sağlamak için sunucuyu daha büyük bir plana yükseltmeniz veya uygun bir Linux takas dosyası eklemeniz gerekir . Aksi takdirde, en kötü senaryoda, maxmemory değerine ulaşıldığında, kaydetme işlemi sunucunuzun belleğinin bitmesine neden olabilir.

1. Yapılandırma dosyasını kaydedip kapatın, ardından değişiklikleri uygulamak için Redis’i yeniden başlatın.

$ sudo systemctl restart redis.service

3. Sisteme İnce Ayar Yapın

1. Redis günlük dosyasını kontrol edin:

$ sudo tail /var/log/redis/redis.log

Bunun gibi bazı bilgiler göreceksiniz:

5228:M 15 Aug 2020 04:14:29.133 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
5228:M 15 Aug 2020 04:14:29.133 # Server initialized
5228:M 15 Aug 2020 04:14:29.133 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.
5228:M 15 Aug 2020 04:14:29.133 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

2. İlk uyarıyı düzeltmek için aşağıdaki komutu girin.

$ echo ‘net.core.somaxconn = 512’ | sudo tee -a /etc/sysctl.conf > /dev/null

3. İkinci uyarıyı düzeltmek için aşağıdaki komutu girin.

$ echo ‘vm.overcommit_memory = 1’ | sudo tee -a /etc/sysctl.conf > /dev/null

4. Sysctl değerlerini yeniden yükleyin.

$ sudo sysctl -p

5. Son uyarıyı düzeltmek için, Redis hizmetini başlatmadan önce önyükleme sırasında şeffaf kucaklanma sayfalarını devre dışı bırakmanız gerekir.

Yeni bir komut dosyası oluşturun:

$ sudo nano /usr/bin/disable-transparent-hugepage

Aşağıdaki metni dosyaya yapıştırın:

#!/bin/bash
echo never > /sys/kernel/mm/transparent_hugepage/enabled
exit 0

Dosyayı kaydedip kapatın, ardından çalıştırılabilir ve kök hesaba ait hale getirin :

$ sudo chown root:root /usr/bin/disable-transparent-hugepage
$ sudo chmod 770 /usr/bin/disable-transparent-hugepage

Ardından, komut dosyasını önyükleme sırasında çağıracak systemd hizmeti için yapılandırma dosyasını oluşturun:

$ sudo nano /etc/systemd/system/disable-transparent-hugepage.service

Aşağıdaki metni dosyaya yapıştırın:

[Unit]
Description=Disable Transparent Huge Pages (THP) for Redis.
Before=redis.service

[Service]
Type=exec
ExecStart=/usr/bin/disable-transparent-hugepage

[Install]
WantedBy=multi-user.target

Dosyayı kaydedip kapatın, ardından hizmeti etkinleştirin:

$ sudo systemctl enable disable-transparent-hugepage.service

4. Kurulumu Doğrulayın

1. Redis sunucusunu yeniden başlatın:

$ sudo reboot

2. Sunucu yeniden başlatıldıktan sonra herhangi bir uyarı olmadığından emin olmak için Redis günlük dosyasını kontrol edin:

$ sudo tail /var/log/redis/redis.log

3. Kullanım Redis-cli varsayılan loopback IP üzerinden REDIS bağlanmak için programı 127.0.0.1 ve port 6379 .

$ redis-cli -h 127.0.0.1 -p 6379

Bağlantı başarılı olursa, Redis komut istemini göreceksiniz:

127.0.0.1:6379>

4. Çalıştığından emin olmak için bazı Redis komutları girin:

set testkey testvalue
get testkey
exit

Aşağıdaki sonucu görüyorsanız, Redis düzgün çalışıyor demektir.

127.0.0.1:6379> set testkey testvalue
OK
127.0.0.1:6379> get testkey
“testvalue”
127.0.0.1:6379> exit

5. (İsteğe Bağlı) Redis’i Özel Ağ Erişimi için Yapılandırma

Uygulamanız için birden çok sunucuyla bir üretim ortamı kurarsanız, uygulama sunucularının Redis sunucusuna erişmesi gerekir. Güvenlik için özel bir ağ kullanılması önerilir.

Özel ağı yapılandırın

1. Özel ağdan gelen bağlantılara izin vermek için güvenlik duvarı hizmetini güncelleyin :

$ sudo firewall-cmd –permanent –zone=trusted –change-interface=ens7

2. Özel arabirim açılıncaya ve IP adresi atanana kadar Redis’in başlatılmasını geciktirmek için bir systemd hizmeti oluşturun.

$ sudo nano /etc/systemd/system/redis.service.d/wait-for-ips.conf

Aşağıdaki metni dosyaya yapıştırın, ardından kaydedin ve kapatın:

[Unit]
After=network-online.target
Wants=network-online.target

3. Redis yapılandırma dosyasını düzenleyin.

$ sudo nano /etc/redis.conf

4. Redis’in bağlanması gereken özel IP adresini ekleyin. Örneğin, Redis’in hem dahili geridöngü (127.0.0.1) hem de özel bir IP adresine (192.168.0.100) bağlanması gerekiyorsa:

bind 127.0.0.1 192.168.0.100

5. Yapılandırma dosyasını kaydedin ve kapatın.

6. Değişiklikleri uygulamak için Redis’i yeniden başlatın.

$ sudo systemctl restart redis.service

Özel ağı test edin

  1. SSH ile özel ağınızdaki uygulama sunucularınızdan birine bağlanın.
  2. Uygulama sunucusunun da CentOS 8 olduğunu varsayarsak, redis-cli yazılımını almak için geçici olarak Redis’i kurun.
$ sudo dnf install redis

3. Kullanım Redis-cli Redis sunucusuna bağlanmak için programı.

$ redis-cli -h 192.168.0.100 -p 6379

Bağlantı başarılı olursa, Redis komut istemini göreceksiniz:

192.168.0.100:6379>

4.Çalıştığından emin olmak için bazı Redis komutları girin:

set testkey testvalue
get testkey
exit

5. Aşağıdaki sonucu görüyorsanız, Redis düzgün çalışıyor demektir.

127.0.0.1:6379> set testkey testvalue
OK
127.0.0.1:6379> get testkey
“testvalue”
127.0.0.1:6379> exit

6. Redis paketini uygulama sunucusundan kaldırın .

$ sudo dnf remove redis

Sonuç

Redis hakkında daha fazla bilgi edinmek için şu kaynaklara bakın:

  • Redis’in SSS
  • Redis’i LRU önbelleği olarak kullanma
  • Redis Kalıcılığı

Bir cevap yazın

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