Redis, adalah salah satu penyimpanan data in-memory yang populer, redis menjadi pilihan utama untuk aplikasi yang membutuhkan kinerja tinggi dan latensi rendah. Salah satu fitur penting yang mendukung skalabilitas dan ketersediaan Redis adalah arsitektur Master-Slave. Konfigurasi ini memungkinkan replikasi data dari server master ke beberapa server slave, yang dapat digunakan untuk meningkatkan performa baca, memastikan kelangsungan data saat terjadi kegagalan pada master, dan mendukung kebutuhan beban tinggi pada aplikasi modern. Berikut ini adalah langkah langkah instalasi redis master-slave di linux server
Berikut Topology yang akan kita pakai untuk tutorial kali ini :
Persyaratan :
- Memiliki 3 VM
- Install 1 VM untuk loadbalancer dan install Haproxy
- Install 2 VM untuk redis server (1 untuk master dan 1 lagi untuk Slave
IP Address sebagai berikut :
- Sediakan 3 VM yang
- VM diinstal untuk load balancer menggunakan Haproxy
- VM lainnya digunakan untuk redis server (1 sebagai master dan 1 sebagai slave).
Langkah Langkah Konfigurasi :
1. Install Redis pada VM ip 10.10.10.11 dan 10.10.10.12
Ubuntu :
apt install redis-server -y
Rhel/Centos :
dnf install redis
lalu aktifkan services agar saat vm terestart service auto start
systemctl enable redis.service
systemctl enable redis-sentinel.service
Berikut sedikit informasi mengenai layanan sentinel yang berfungsi untuk mengelola proses failover antara VM redis master dan slave ketika redis master mengalami kegagalan.
2. Setup master Slave pada config redis.conf dan sentinel.conf
ssh ke vm redis master lalu open file config redis.conf di /etc/redis/redis.conf dan edit beberapa line menjadi seperti dibawah ini :
bind 10.10.10.10 127.0.0.1
protected-mode no
port 6379
lalu lakukan juga pada vm redis slave
bind 10.10.10.11 127.0.0.1
protected-mode no
port 6379
jika sudah restart services redis
systemctl restart redis.service
Selanjutnya, pastikan port redis sudah benar-benar terbuka dan mendengarkan melalui IP address VM master/slave serta 127.0.0.1 dengan menjalankan perintah berikut:
netstat -tulpn
Jika semuanya sudah siap, langkah berikutnya adalah menghubungkan slave ke redis master. Caranya, pertama lakukan SSH ke redis slave, kemudian akses redis dengan menggunakan redis-cli, dan jalankan perintah berikut ini.
slaveof 10.10.10.10 6379
lalu lakukan pengencekan status slave
INFO replication
dan akan muncul informasi seperti dibawah ini
# Replication
role:slave
master_host:10.10.10.10
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:106179111635
slave_repl_offset:106179111635
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:idreplication
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:106179111635
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:106178063060
repl_backlog_histlen:1048576
lalu pindah ke redis master dan masuk ke redis-cli dan cek apakah slave sudah join atau belum dengan command dibawah ini
INFO replication
lalu akan muncul informasi seperti berikut
# Replication
role:master
connected_slaves:1
slave0:ip=10.10.10.11,port=6379,state=online,offset=106145898355,lag=0
master_failover_state:no-failover
master_replid:idreplication
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:106145919668
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:106144871093
repl_backlog_histlen:1048576
Selamat, redis sekarang sudah berfungsi sebagai master-slave! Setelah master dan slave berhasil terhubung dengan benar, sentinel akan secara otomatis menghasilkan konfigurasi di baris terakhir file redis.conf dan redis-sentinel.conf, seperti contoh di bawah ini.
Pada file redis.conf di master, konfigurasi tidak akan tergenerate, namun untuk slave, konfigurasi berikut akan muncul.
# Generated by CONFIG REWRITE
supervised systemd
save 3600 1
save 300 100
save 60 10000
user default on nopass ~* &* +@all
replicaof 10.10.10.10 6379
lalu cek redis-sentinel.conf pada master akan tergenerate seperti ini
# Generated by CONFIG REWRITE
protected-mode no
supervised systemd
user default on nopass ~* &* +@all
sentinel myid e1be4e92e970e7c5a121ebcadssad21321dwadss
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel current-epoch 0
sentinel known-replica mymaster 10.10.10.11 6379
sentinel known-sentinel mymaster 10.10.10.11 26379 b49942c0e2f7dab05bb6b31c89basdsadsa321da
dan untuk slave akan seperti ini
# Generated by CONFIG REWRITE
protected-mode no
supervised systemd
user default on nopass sanitize-payload ~* &* +@all
sentinel myid b49942c0e2f7dab05bb6b31c89basdsadsa321da
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel known-sentinel mymaster 10.10.10.10 26379 e1be4e92e970e7c5a121ebcadssad21321dwadss
sentinel known-sentinel mymaster 10.10.10.10 0 3d392686ee5874a827ec5d077051fdd012321412
sentinel current-epoch 0
sentinel known-replica mymaster 10.10.10.11 6379
Jika konfigurasi telah berhasil tergenerate otomatis oleh layanan sentinel seperti di atas, selamat! Anda telah sukses melakukan setup master-slave pada redis. Sekarang, Anda bisa melanjutkan ke langkah nomor 3 di bawah ini, yaitu mengonfigurasi Haproxy sebagai load balancer untuk mengarahkan traffic aplikasi ke redis
3. Konfigurasi Haproxy
Backup file default haproxy :
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
Lalu buka haproxy.cfg dan copy config dibawah ini ke line terbawah :
frontend redis_cluster
bind *:6379 name redis_cluster
default_backend backend_redis_cluster
backend backend_redis_cluster
option tcp-check
tcp-check connect
tcp-check send PING\r\n
tcp-check expect string +PONG
tcp-check send info\ replication\r\n
tcp-check expect string role:master
tcp-check send QUIT\r\n
tcp-check expect string +OK
server redis_01 10.10.10.11:6379 check inter 5s
server redis_02 10.10.10.12:6379 check inter 5s
Konfigurasi di atas bertujuan agar Haproxy dapat mengenali peran redis master dan slave, sehingga traffic yang masuk hanya diarahkan ke redis master, yaitu pada alamat 10.10.10.10:6379. Anda juga dapat memantau redis yang aktif melalui dashboard monitoring Haproxy, seperti contoh di bawah ini:
Pada gambar di atas, redis 02 ditandai dengan warna merah, yang menunjukkan bahwa Haproxy tidak akan mengarahkan traffic ke redis slave dan hanya redis dengan peran master yang aktif. Anda bisa mencoba mematikan VM redis master, lalu cek kembali monitor; seharusnya redis 02 akan menjadi aktif dan redis 01 berubah menjadi warna merah.
Demikian tutorial instalasi dan setup redis master-slave dengan auto failover kali ini. Jangan lupa untuk menantikan tutorial kami berikutnya!