AizuDemy

Tutorial Setup Valkey 8 Cluster & TLS Hardening di VPS Linux

Tutorial Setup Valkey 8 Cluster & TLS Hardening di VPS Linux
๐ŸŽง
Dengarkan Artikel Ini
Suara AI Otomatis โ€ข 6 mnt baca baca
โšก TL;DR

Poin Kunci Artikel Ini:

  • Alihkan lalu lintas aplikasi (traffic cutover) dari Redis ke endpoint Valkey.
  • [ ] TLS diaktifkan penuh pada port data (data port) dan port bus inter-node cluster.
  • [ ] Persistence AOF (Append Only File) dan RDB snapshot terkonfigurasi dengan jadwal backup terotomatisasi ke storage eksternal.
๐Ÿ“‹ Daftar Isi Materi Tutup โ–ด

1. Latar Belakang Valkey 8 & Masalah Lisensi Redis

Redis Ltd mengubah lisensi open source BSD 3-Clause menjadi lisensi ganda RSALv2 dan SSPLv1 pada Maret 2024. Perubahan lisensi melarang penyedia layanan cloud menawarkan Redis sebagai managed service tanpa perjanjian komersial. Dampak keputusan ini memaksa industri mencari alternatif in-memory datastore yang tetap sepenuhnya open source.

Linux Foundation meluncurkan proyek Valkey sebagai fork terbuka dari Redis 7.2.4 (commit BSD 3-Clause terakhir). Proyek ini didukung konsorsium teknologi global seperti Amazon Web Services (AWS), Google Cloud, Oracle, Ericsson, Snap, dan Huawei. Valkey menjamin kelanjutan lisensi open source murni di bawah naungan tata kelola komunitas yang netral.

Peningkatan Fitur dan Arsitektur Valkey 8

Valkey 8 membawa perubahan arsitektur signifikan dibanding basis kode terdahulu. Peningkatan fokus pada efisiensi pemrosesan I/O dan konsumsi memori skala besar:

  • Engine Multi-threaded I/O Baru: Valkey 8 memisahkan pemrosesan I/O jaringan, enkripsi TLS, dan eksekusi command parsing ke multiple thread secara efisien. Main thread fokus eksekusi perintah di dalam memory data structure. Throughput transaksi meningkat hingga 230% dan p99 latency berkurang hingga 50% dibanding Redis 7 pada beban kerja tinggi.
  • Efisiensi Struktur Data dan Memori: Metadata internal cluster, dictionary rehashing, dan alokasi memori dioptimalkan. Konsumsi RAM berkurang 15% hingga 20% untuk jumlah key yang sama. Operasi penataan ulang slot memori berlangsung lebih cepat tanpa overhead blokir thread utama.
  • Kompatibilitas Komplit RESP2 & RESP3: Valkey 8 mempertahankan dukungan penuh terhadap protokol RESP (REdis Serialization Protocol). Aplikasi client (Jedis, ioredis, redis-py, go-redis) dapat terhubung secara langsung tanpa perubahan kode program (drop-in replacement).

2. Praktik Setup Multi-Node Cluster, TLS, & ACL

Arsitektur cluster yang andal membutuhkan redundansi node dan proteksi jalur komunikasi. Panduan ini menggunakan 3 VPS Linux Ubuntu 22.04 LTS. Tiap VPS menjalankan 2 instance Valkey (1 Master, 1 Replica), total 6 node dalam cluster.

Detail Topologi Jaringan Node

  • VPS Node A (10.0.0.1): Master Instance (Port 7000), Replica Instance (Port 7001)
  • VPS Node B (10.0.0.2): Master Instance (Port 7000), Replica Instance (Port 7001)
  • VPS Node C (10.0.0.3): Master Instance (Port 7000), Replica Instance (Port 7001)

Langkah 1: Generasi Sertifikat TLS Internal

Jalankan langkah berikut pada node utama untuk membuat Certificate Authority (CA) dan sertifikat TLS node:

# 1. Buat Private Key dan Sertifikat CA
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt -subj "/CN=Valkey-Cluster-CA"

# 2. Buat Key dan CSR untuk Node
openssl genrsa -out valkey.key 2048
openssl req -new -key valkey.key -out valkey.csr -subj "/CN=valkey-node"

# 3. Sign Sertifikat Node menggunakan CA
openssl x509 -req -in valkey.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out valkey.crt -days 365 -sha256

# 4. Distribusikan berkas sertifikat ke semua node
sudo mkdir -p /etc/valkey/tls
sudo cp ca.crt valkey.crt valkey.key /etc/valkey/tls/
sudo chown -R valkey:valkey /etc/valkey/tls
sudo chmod 600 /etc/valkey/tls/*

Langkah 2: Konfigurasi Valkey Instance dengan TLS Hardening

Buat berkas konfigurasi /etc/valkey/valkey-7000.conf pada setiap VPS. Sesuaikan IP binding dan nomor port untuk instance 7001.

# Konfigurasi Network & TLS Dual-Port
port 0
tls-port 7000
tls-cluster yes
tls-replication yes

# Lokasi Sertifikat TLS
tls-cert-file /etc/valkey/tls/valkey.crt
tls-key-file /etc/valkey/tls/valkey.key
tls-ca-cert-file /etc/valkey/tls/ca.crt
tls-auth-clients yes

# Parameter Cluster Mode
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000

# Keamanan & Keandalan System
protected-mode yes
daemonize yes
dir /var/lib/valkey/7000
appendonly yes
appendfsync everysec
aclfile /etc/valkey/users.acl

Penjelasan parameter penting:

  • port 0: Mematikan port TCP non-enkripsi (plaintext) untuk mencegah akses tanpa TLS.
  • tls-port 7000: Mengaktifkan port khusus komunikasi terenkripsi SSL/TLS.
  • tls-cluster yes & tls-replication yes: Memaksa enkripsi pada lalu lintas antar-node cluster dan replikasi data master-replica.
  • tls-auth-clients yes: Membutuhkan Mutual TLS (mTLS) di mana client wajib menyajikan sertifikat valid dari CA.

Langkah 3: Inisialisasi Cluster Multi-Node

Pastikan service Valkey berjalan di seluruh VPS. Eksekusi perintah berikut dari VPS Node A untuk membuat cluster 3 Master dan 3 Replica:

valkey-cli --tls \
  --cacert /etc/valkey/tls/ca.crt \
  --cert /etc/valkey/tls/valkey.crt \
  --key /etc/valkey/tls/valkey.key \
  -a "SandiAdminSuperAman" \
  --cluster create \
  10.0.0.1:7000 10.0.0.2:7000 10.0.0.3:7000 \
  10.0.0.2:7001 10.0.0.3:7001 10.0.0.1:7001 \
  --cluster-replicas 1

Verifikasi status pembagian 16384 slot hash dengan perintah valkey-cli --tls ... cluster info dan cluster nodes.

Langkah 4: Konfigurasi Access Control Lists (ACL) Hardening

Buat berkas /etc/valkey/users.acl pada seluruh node untuk menerapkan Principle of Least Privilege (PoLP):

user default off
user admin on >SandiAdminSuperAman ~* &* +@all
user app-user on >SandiAplikasiAman ~app:* &* +@read +@write +get +set +del +exists +expire -@dangerous -@admin

Aturan ACL di atas mematikan akun default tanpa password, memberikan akses penuh ke akun admin, serta membatasi akun app-user hanya pada prefix key app:* tanpa akses perintah berbahaya seperti FLUSHALL, SHUTDOWN, atau CONFIG.

Langkah 5: Benchmark Performa Cluster TLS

Uji Throughput (RPS) dan Latency pada instance terenkripsi TLS menggunakan perkakas valkey-benchmark:

valkey-benchmark --tls \
  --cacert /etc/valkey/tls/ca.crt \
  --cert /etc/valkey/tls/valkey.crt \
  --key /etc/valkey/tls/valkey.key \
  -a "SandiAdminSuperAman" \
  -h 10.0.0.1 -p 7000 \
  -c 50 -n 100000 -t set,get -q --cluster

Hasil benchmark memberikan gambaran performa penanganan enkripsi TLS pada tingkat konkuransi tinggi. Jalankan pengujian ini sebelum melepas cluster ke lingkungan produksi.

3. Best Practice Migrasi Data & Troubleshooting Failover

Strategi Migrasi Data Zero-Downtime dari Redis ke Valkey

Migrasi data dari instansi Redis yang sedang berjalan ke Valkey Cluster dilakukan tanpa downtime melalui metode replikasi langsung:

  1. Konfigurasi node Valkey target sebagai Replica dari instance Redis Master sumber menggunakan perintah replicaof .
  2. Pantau proses sinkronisasi awal (RDB transfer) menggunakan perintah valkey-cli info replication hingga parameter master_link_status bernilai up dan offset replikasi identik.
  3. Alihkan lalu lintas aplikasi (traffic cutover) dari Redis ke endpoint Valkey.
  4. Putus hubungan replikasi pada node Valkey dengan mengeksekusi replicaof no one untuk mempromosikannya menjadi Master mandiri.
  5. Gabungkan node-node Valkey mandiri tersebut ke dalam skema Valkey Cluster menggunakan valkey-cli --cluster create.

Troubleshooting Skenario Failover dan Masalah Cluster

Beberapa masalah operasional yang sering terjadi pada lingkungan cluster beserta penanganannya:

  • Kondisi Split-Brain: Terjadi ketika pemisahan jaringan (network partition) membuat grup master terisolasi. Atasi dengan memastikan minimal 3 node master aktif dan mengonfigurasi parameter min-replicas-to-write 1 serta min-replicas-max-lag 10 pada berkas konfigurasi.
  • Hash Slots Unassigned Error: Terjadi jika node master crash dan failover otomatis gagal mengalokasikan ulang slot hash. Solusi: Eksekusi perbaikan slot secara otomatis dengan perintah valkey-cli --tls --cacert /etc/valkey/tls/ca.crt --cert /etc/valkey/tls/valkey.crt --key /etc/valkey/tls/valkey.key --cluster fix 10.0.0.1:7000.
  • Gagal Handshake TLS: Terjadi akibat ketidaksesuaian nama domain/IP pada sertifikat atau kadaluarsa CA. Pastikan waktu jam server tersinkronisasi via NTP (Chrony/systemd-timesyncd) dan periksa tanggal kadaluarsa sertifikat dengan openssl x509 -in /etc/valkey/tls/valkey.crt -text -noout.

4. Kesimpulan & Checklist Production Hardening

Valkey 8 menyediakan solusi performa tinggi, efisien memori, dan sepenuhnya terbuka sebagai pengganti Redis. Implementasi enkripsi TLS mTLS dan pembatasan ACL memberikan tingkat keamanan ketat yang siap untuk lingkungan produksi skala besar.

Checklist Kesiapan Lingkungan Production

  • [ ] TLS diaktifkan penuh pada port data (data port) dan port bus inter-node cluster.
  • [ ] User default dinonaktifkan (user default off) pada seluruh node.
  • [ ] Akses perintah berbahaya (FLUSHALL, FLUSHDB, KEYS, CONFIG, SHUTDOWN) dibatasi via ACL atau dialias ulang.
  • [ ] Parameter Kernel Linux dioptimasi pada /etc/sysctl.conf: vm.overcommit_memory = 1 dan net.core.somaxconn = 65535.
  • [ ] Transparent Huge Pages (THP) dinonaktifkan di level sistem: echo never > /sys/kernel/mm/transparent_hugepage/enabled.
  • [ ] Persistence AOF (Append Only File) dan RDB snapshot terkonfigurasi dengan jadwal backup terotomatisasi ke storage eksternal.
  • [ ] Limit file descriptor dipasang tinggi (minimal 65536) pada systemd service unit valkey.service.

๐Ÿ“– Artikel Terkait