Cara Mengatur Replikasi Redis (dengan Mode Cluster Dinonaktifkan) di CentOS 8 - Bagian 1


Redis (Remote Dictionary Server) adalah server struktur data/database nilai kunci dalam memori yang sangat populer dan banyak digunakan, cepat, terdistribusi, dan efisien.

Ia menawarkan serangkaian fitur yang membuatnya efektif untuk berbagai kasus penggunaan: sebagai database, lapisan cache, perantara pesan, atau antrian; berlaku dalam aplikasi web, aplikasi obrolan dan perpesanan, permainan, analisis data waktu nyata, dan banyak lagi.

Ini mendukung struktur data yang fleksibel, replikasi asinkron master-slave untuk menskalakan kinerja baca dan melindungi dari kehilangan data, sharding sisi klien untuk menskalakan kinerja tulis, dua bentuk persistensi untuk menulis data dalam memori ke disk dalam format yang ringkas, pengelompokan, dan partisi. Ia juga dilengkapi failover otomatis untuk penerapan ketersediaan tinggi melalui Redis Sentinel, skrip Lua, transaksi, dan banyak lagi.

Karena TANPA SQL atau database non-relasional, Redis menawarkan beberapa keunggulan kinerja dibandingkan sistem database tradisional (seperti MySQL/MariaDB, PostgreSQL, dll.), karena semua datanya berada atau disimpan dalam memori sehingga mudah diakses oleh aplikasi, sedangkan database tradisional harus menulis semua data ke atau membaca dari disk atau sumber eksternal.

Redis telah menjadi pilihan yang semakin umum untuk caching, yang memungkinkan penggunaan kembali data yang di-cache (disimpan dalam ruang memori utama aplikasi) daripada selalu menanyakan database untuk data yang sering digunakan. Jadi ini adalah pendamping yang luar biasa dari RDMS (Sistem Manajemen Basis Data Relasional) yang pada akhirnya meningkatkan kinerja aplikasi.

Dalam seri tutorial tiga bagian Redis ini, kami akan membahas cara menyiapkan dan menggunakan beberapa fitur utama Redis yaitu replikasi, ketersediaan tinggi menggunakan Redis Sentinel dan Redis Cluster, artikelnya adalah:

Panduan ini menunjukkan cara menyiapkan Redis Replication (dengan Cluster-Mode Disabled) di CentOS 8 Linux, termasuk cara menginstal Redis, mengkonfigurasi master dan replika, dan uji replikasinya.

Penting: Kluster Redis (yaitu Kluster Replikasi) dengan mode kluster dinonaktifkan memiliki satu grup simpul ( misalnya master dan satu atau dua replika) sedangkan klaster Redis dengan mode klaster diaktifkan dapat terdiri dari dua atau lebih grup node (misalnya tiga master yang masing-masing memiliki atau dua budak).

Prasyarat:

  1. Server dengan Instalasi CentOS 8

Pengaturan Lingkungan Uji

Redis Master Server: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

Dengan pengaturan di atas (yang memiliki satu node utama/master baca/tulis dan 2 node replika baca-saja), kami memiliki satu grup node yang berisi semua data cluster di setiap node. Setelah budak terhubung ke master, ia menerima salinan awal dari database lengkap dan data apa pun yang sebelumnya ada di budak akan dibuang.

Selain itu, klien hanya dapat menulis ke master tetapi membaca dari node mana pun di cluster. Dan saat penulisan dilakukan pada master, penulisan tersebut disebarkan ke semua budak yang terhubung untuk memperbarui kumpulan data budak secara real-time.

Langkah 1: Menginstal Redis di CentOS 8

1. Untuk memulainya, masuk ke semua node CentOS 8 melalui SSH, lalu instal paket Redis di semua node (master dan replika ) menggunakan manajer paket DNF seperti yang ditunjukkan.


dnf install @redis

2. Setelah menyelesaikan instalasi paket Redis, mulai layanan Redis, aktifkan layanan tersebut untuk memulai secara otomatis pada setiap boot sistem dan periksa apakah sudah aktif dan berjalan sebagai berikut.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Anda juga dapat mengonfirmasi bahwa server Redis aktif dan berjalan dengan memeriksa port pendengaran menggunakan perintah ss, sebagai berikut.

ss -ltpn | grep redis-server

Langkah 2: Mengonfigurasi Redis Master Server

4. Redis dikonfigurasikan menggunakan file konfigurasi /etc/redis.conf, yang merupakan contoh file konfigurasi yang didokumentasikan sendiri. Pertama, buat cadangan file asli, lalu buka untuk diedit menggunakan editor baris perintah pilihan Anda.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

5. Secara default, instance Redis dikonfigurasi untuk mendengarkan dan menerima koneksi pada antarmuka loopback, menggunakan direktif bind. Untuk berkomunikasi dengan replika, master harus dikonfigurasi untuk mendengarkan alamat loopback IPv4 dan alamat IP LAN-nya yaitu 10.42.0.247.

bind 127.0.0.1 10.42.0.247

6. Selanjutnya, atur parameter mode terlindung ke no untuk memungkinkan komunikasi dengan replika seperti yang ditunjukkan.

protected-mode no

Selain itu, Redis mendengarkan pada port 6379 yang diatur menggunakan direktif port. Ini adalah port data untuk berkomunikasi dengan API aplikasi atau klien CLI.

port 6379

7. Untuk mengamankan komunikasi master-replica secara opsional, kita dapat melindungi master menggunakan direktif requirepass, sehingga klien/replika harus mengeluarkan kata sandi otentikasi sebelum menjalankan perintah apa pun atau memulai proses sinkronisasi replikasi, jika tidak, master akan menolak permintaan klien/replika (ingat untuk mengatur kata sandi yang aman).

Kami akan menggunakan opsi berikut untuk tujuan demonstrasi, untuk menunjukkan cara kerjanya.

requirepass  Securep@55Here

8. Selain itu, log Redis disimpan dalam file /var/log/redis/redis.log, ini diatur menggunakan direktif logfile dan tingkat verbositas server default adalah pemberitahuan, yang ditentukan menggunakan parameter loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Karena systemd adalah manajer sistem dan layanan default di CentOS 8, Anda dapat mengonfigurasi Redis untuk berinteraksi dengan pohon pengawasan systemd dengan menyetel parameter supervised ke systemd.

supervised systemd

10. Setelah melakukan semua konfigurasi yang diperlukan, simpan file dan tutup. Kemudian mulai ulang layanan Redis untuk menerapkan perubahan baru.

systemctl daemon-reload
systemctl restart redis

11. Untuk mengakses server Redis, kita perlu menggunakan redis-cli (antarmuka baris perintah ke server redis). Secara default, ini terhubung ke server di localhost (di port 127.0.0.1 6379). Perhatikan bahwa karena server diamankan dari klien menggunakan kata sandi, menjalankan perintah sebelum otentikasi akan gagal.

Gunakan perintah auth untuk memberikan kata sandi autentikasi seperti yang ditunjukkan pada tangkapan layar berikut.

redis-cli
127.0.0.1:6379> client list
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> client list

12. Untuk terhubung ke replika (setelah mengonfigurasinya seperti dijelaskan di bagian berikutnya), gunakan -h dan -p Opsi untuk menentukan masing-masing alamat IP replika/nama host dan port (bukan berarti port 6379 harus terbuka di firewall replika).

redis-cli -h 10.42.0.21 -p 6379

13. Selanjutnya, buka port data server Redis di firewall untuk mengizinkan koneksi masuk ke master, dan kemudian muat ulang aturan firewall menggunakan perintah firewall-cmd seperti yang ditunjukkan.

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

Langkah 3: Mengonfigurasi Server Replika/Slave Redis

14. Untuk menetapkan instance Redis dengan cepat sebagai replika dengan cepat, gunakan utilitas redis-cli dan panggil REPLICAOF perintah seperti yang ditunjukkan.

redis-cli replicaof 10.42.0.247 6379
OR
redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. Untuk menjadikan koneksi replikasi permanen, Anda perlu melakukan perubahan berikut pada file konfigurasi. Mulailah dengan membuat cadangan file asli, lalu buka untuk diedit.

cp /etc/redis.conf /etc/redis.conf.org
vi /etc/redis.conf

16. Untuk memungkinkan klien terhubung ke replika untuk membaca data, tambahkan alamat IP replika ke arahan pengikatan.

replica1
bind 127.0.0.1 10.42.0.21

replica2
bind 127.0.0.1 10.42.0.34

Menetapkan Instance Redis sebagai Replika

17. Untuk mengonfigurasi instance Redis sebagai replika, gunakan parameter replicaof dan tetapkan alamat IP (atau nama host) dan port node master sebagai nilai-nilai.

replicaof 10.42.0.247 6379

Mengatur Replika untuk Mengautentikasi ke Master

18. Selanjutnya, karena instance master kita dilindungi menggunakan kata sandi, kita perlu menyetel kata sandi dalam konfigurasi replika agar dapat mengautentikasi ke master, menggunakan masterauth parameter.

masterauth Securep@55Here

19. Selain itu, ketika replika kehilangan koneksinya dengan master, atau ketika replikasi sedang berlangsung, replika tersebut dikonfigurasi untuk membalas permintaan klien, mungkin dengan kata-kata “kedaluwarsa > ”datanya. Namun jika ini adalah sinkronisasi pertama, maka kumpulan datanya mungkin saja kosong. Perilaku ini dikontrol oleh parameter replica-serve-stale-data.

Dan, karena replika Redis 2.6 secara default bersifat hanya-baca, hal ini dikontrol oleh parameter replika-hanya-baca. Anda dapat melakukan penyesuaian konfigurasi replika lainnya agar sesuai dengan kebutuhan aplikasi Anda.

20. Setelah Anda melakukan semua perubahan yang diperlukan, mulai ulang layanan Redis di semua replika.

systemctl restart redis

21. Selain itu, buka port 6379 di firewall untuk mengizinkan koneksi dari master dan klien ke replika, dan memuat ulang aturan firewall.

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

Langkah 4: Periksa Status Replikasi Replika Master

22. Setelah konfigurasi replikasi master-replica selesai, kita dapat memeriksa apakah penyiapan berfungsi dengan baik dengan cara berikut.

Di master, jalankan perintah berikut.

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> info replication

23. Periksa juga status replikasi pada replika/slave sebagai berikut.

redis-cli
127.0.0.1:6379> info replication

23. Sekarang mari kita uji replikasi dengan menyetel nilai kunci di instance master dan memeriksa apakah data disinkronkan ke replika.

Pada master, lakukan ini:

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

24. Kemudian periksa apakah data telah disinkronkan ke replika seperti yang ditunjukkan.

redis-cli
127.0.0.1:6379> get domain

Melindungi Instans Master Terhadap Risiko Kehilangan Beberapa Penulisan

25. Redis memiliki fitur yang memungkinkan instance master membatasi risiko kehilangan beberapa penulisan jika replika yang tersedia tidak mencukupi, hingga jumlah detik tertentu.

Artinya, master dapat berhenti menerima penulisan jika terdapat kurang dari N replika yang terhubung, dengan jeda kurang dari atau sama dengan M detik, sebagaimana dikontrol oleh min masing-masing opsi -replika-untuk-menulis dan min-replika-max-lag.

Untuk menyetelnya, batalkan komentar dan tetapkan nilainya sesuai dengan persyaratan penyiapan Anda di /etc/redis.conf, seperti yang ditunjukkan pada tangkapan layar berikut. Konfigurasi ini berarti, dari ping terakhir hingga replika, setelah 10 detik, jika terdapat kurang dari 2 replika yang online, master akan berhenti menerima penulisan.

min-replicas-to-write 2
min-replicas-max-lag 10

Anda dapat menemukan opsi lainnya di file konfigurasi /etc/redis.conf lainnya dan untuk detail lebih lanjut, baca tentang replikasi di dokumentasi Redis.

Pada artikel berikutnya, kami akan membahas cara menyiapkan Redis untuk ketersediaan tinggi dengan Sentinel di CentOS 8. Sampai saat itu tiba, tetaplah terkunci dan ingatlah untuk membagikan pemikiran dan pertanyaan Anda menggunakan formulir komentar kami di bawah ini agar Anda dapat menghubungi kami.