Grup Replikasi Redis ElastiCache dan Mode Klaster
Bangun grup replikasi Redis untuk meningkatkan skala baca, lalu aktifkan mode klaster untuk membagi data ke beberapa grup node.
Grup Replikasi Redis ElastiCache dan Mode Klaster adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Gambaran Umum Kelompok Replikasi Redis
Kelompok Replikasi ElastiCache adalah pengelompokan logis yang terdiri dari satu Node Redis utama dan hingga 5 replika baca. Node utama menangani semua operasi penulisan; replika menerima replikasi asinkron dari Node utama dan melayani lalu lintas baca. Kelompok replikasi menyediakan dua kemampuan utama: penskalaan baca (mendistribusikan permintaan baca ke beberapa replika) dan ketersediaan tinggi dengan pengalihan otomatis saat gagal (menjadikan replika sebagai Node utama jika Node utama gagal). Semua Node dalam kelompok replikasi berbagi dataset yang sama.
# Create a replication group with 1 primary and 2 read replicas
aws elasticache create-replication-group \
--replication-group-id web-cache \
--replication-group-description 'Web application cache' \
--num-cache-clusters 3 \
--cache-node-type cache.r7g.large \
--engine redis \
--engine-version '7.0' \
--automatic-failover-enabled \
--multi-az-enabled \
--cache-subnet-group-name my-multi-az-subnet-groupEndpoint Utama vs Endpoint Pembaca
ElastiCache menyediakan dua endpoint DNS untuk kelompok replikasi: endpoint utama selalu mengarah ke Node utama saat ini (diperbarui secara otomatis selama pengalihan saat gagal) — gunakan endpoint ini untuk semua operasi penulisan. endpoint pembaca menyeimbangkan beban permintaan baca di antara semua replika yang tersedia — gunakan endpoint ini untuk operasi baca guna mendistribusikan beban. Aplikasi Anda sebaiknya mempertahankan dua kumpulan koneksi: satu untuk endpoint utama untuk penulisan dan satu untuk endpoint pembaca untuk pembacaan. Ini adalah pola koneksi yang direkomendasikan untuk kelompok replikasi ElastiCache Redis.
# Get primary and reader endpoints
aws elasticache describe-replication-groups \
--replication-group-id web-cache \
--query 'ReplicationGroups[].{
Primary:NodeGroups[].PrimaryEndpoint.Address,
Reader:ReaderEndpoint.Address
}'
# Application connection pattern:
# write_client = redis.Redis(host='primary-endpoint', port=6379)
# read_client = redis.Redis(host='reader-endpoint', port=6379)Proses Pengalihan Otomatis Saat Gagal
Saat Node utama gagal (dideteksi oleh ElastiCache dalam hitungan detik melalui pemeriksaan kesehatan), pengalihan otomatis saat gagal memilih salah satu replika baca untuk dijadikan Node utama. Proses pengangkatannya: (1) replika yang dipilih dijadikan Node utama, (2) catatan DNS endpoint utama diperbarui agar mengarah ke Node utama yang baru (TTL sekitar 1 detik), (3) Node utama lama diganti dengan replika baru. Total waktu pengalihan biasanya 30–60 detik. Aplikasi yang menggunakan DNS endpoint utama akan terhubung kembali secara otomatis setelah DNS tersebar — tidak diperlukan alamat IP yang ditulis secara tetap.
# Test failover manually (triggers primary failover)
aws elasticache test-failover \
--replication-group-id web-cache \
--node-group-id 0001
# Monitor failover events
aws elasticache describe-events \
--source-identifier web-cache \
--source-type replication-group \
--duration 60 \
--query 'Events[].{Time:Date,Message:Message}'Penempatan Replika Multi-AZ
Untuk ketahanan maksimum, distribusikan replika di beberapa Availability Zone. Saat Anda mengaktifkan Multi-AZ pada kelompok replikasi, ElastiCache secara otomatis menempatkan Node utama dan replika di AZ yang berbeda. Jika seluruh AZ luring, pengalihan saat gagal akan menjadikan replika dari AZ yang masih aktif sebagai Node utama. Anda juga dapat menentukan AZ pilihan secara eksplisit untuk setiap Node saat membuat kelompok replikasi menggunakan opsi --preferred-cache-cluster-a-zs.
# Create replication group with explicit AZ placement
aws elasticache create-replication-group \
--replication-group-id ha-redis \
--replication-group-description 'Multi-AZ Redis' \
--num-cache-clusters 3 \
--cache-node-type cache.r7g.xlarge \
--engine redis \
--automatic-failover-enabled \
--multi-az-enabled \
--preferred-cache-cluster-a-zs us-east-1a us-east-1b us-east-1c \
--cache-subnet-group-name multi-az-subnetsApa Itu Redis Cluster Mode?
Redis Cluster Mode Enabled (CME) mempartisi dataset di beberapa kelompok Node (shard), yang masing-masing berisi satu Node utama dan hingga 5 replika. Ini adalah solusi sharding horizontal Redis. Cluster Mode memungkinkan Anda melampaui kapasitas memori satu Node — Anda dapat memiliki hingga 500 kelompok Node, masing-masing berkapasitas 500 GB, sehingga satu cluster Redis dapat menampung hingga 500 × 500 GB = 250 TB data. Cluster Mode juga meningkatkan throughput penulisan karena setiap kelompok Node memproses penulisan secara independen untuk rentang key-nya.
# Create a Redis Cluster Mode Enabled replication group
# with 3 shards, each with 1 primary and 2 replicas
aws elasticache create-replication-group \
--replication-group-id clustered-redis \
--replication-group-description 'Cluster mode: 3 shards x 3 nodes' \
--num-node-groups 3 \
--replicas-per-node-group 2 \
--cache-node-type cache.r7g.large \
--engine redis \
--automatic-failover-enabled \
--multi-az-enabled \
--cache-subnet-group-name multi-az-subnetsSlot Hash dan Distribusi Key
Redis Cluster Mode membagi ruang key menjadi 16.384 slot hash. Setiap kelompok Node memiliki rentang slot hash yang berurutan. Saat sebuah key ditulis, Redis menghitung CRC16(key) % 16384 untuk menentukan slot hash dan kelompok Node yang bertanggung jawab. Aplikasi Anda harus menggunakan klien Redis yang memahami cluster (seperti redis-py-cluster atau Jedis dalam cluster mode) yang mengetahui peta slot dan merutekan setiap perintah ke Node yang benar. Klien standar akan mengembalikan error pengalihan MOVED jika mengirimkan key ke shard yang salah.
# Python cluster-aware client example
# pip install redis[hiredis]
# from redis.cluster import RedisCluster
# cluster_client = RedisCluster(
# host='clustered-redis.abc123.clustercfg.use1.cache.amazonaws.com',
# port=6379,
# decode_responses=True
# )
# The client automatically resolves slot-to-node mapping
# cluster_client.set('user:1', 'Alice') # routes to correct shard
# cluster_client.get('user:1') # routes to correct shardCluster Mode vs Non-Cluster Mode
Untuk ujian SAA-C03, pilih non-cluster mode jika: data Anda muat pada satu Node (< sekitar 400 GB setelah ruang cadangan), Anda memerlukan pengaturan utama/replika yang sederhana, atau aplikasi Anda menggunakan operasi multi-key yang kompleks (transaksi yang mencakup beberapa key mengharuskan semua key berada pada slot yang sama). Pilih cluster mode jika: dataset Anda melebihi memori satu Node, Anda memerlukan penskalaan throughput penulisan secara horizontal, atau Anda memperkirakan pertumbuhan di masa depan yang memerlukan resharding saat sistem berjalan. Cluster mode mendukung penambahan shard tanpa waktu henti (resharding saat sistem berjalan).
# Scale out a cluster-mode Redis by adding shards
aws elasticache modify-replication-group-shard-configuration \
--replication-group-id clustered-redis \
--node-group-count 5 \
--apply-immediately \
--resharding-configuration \
NodeGroupId=0004,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c \
NodeGroupId=0005,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c
# No downtime — slots are migrated incrementallyGlobal Datastore untuk Replikasi Lintas Wilayah
ElastiCache Global Datastore memperluas replikasi Redis ke beberapa Wilayah AWS. Anda menetapkan satu Wilayah sebagai klaster utama dan menambahkan klaster sekunder di Wilayah lain. Penulisan dilakukan ke klaster utama; klaster sekunder menerima replikasi asinkron dengan keterlambatan biasanya kurang dari 1 detik. Klaster sekunder dapat melayani pembacaan lokal dengan latensi yang sangat rendah. Global Datastore memungkinkan aplikasi global, sehingga pengguna di berbagai benua membaca data dari Wilayah terdekat, serta DR lintas Wilayah, sehingga Anda dapat mempromosikan klaster sekunder menjadi klaster utama jika Wilayah utama mengalami kegagalan.
# Create a Global Datastore (adds a secondary region to an existing cluster)
aws elasticache create-global-replication-group \
--global-replication-group-id-suffix my-global-cache \
--primary-replication-group-id prod-redis
# Add a secondary cluster in another region
aws elasticache create-replication-group \
--replication-group-id prod-redis-eu \
--replication-group-description 'EU secondary' \
--global-replication-group-id ldgnf-my-global-cache \
--region eu-west-1Redis Pub/Sub dalam Skala Besar
Dalam grup replikasi Redis yang tidak berklaster, pesan pub/sub didistribusikan ke semua replika — subscriber mana pun pada node mana pun menerima pesan yang dipublikasikan ke sebuah kanal. Namun, dalam Mode Klaster, pub/sub dibatasi pada notifikasi keyspace, dan pub/sub berbasis kanal hanya berfungsi dalam satu shard kecuali Anda menggunakan Redis 7+ dengan sharding Pub/Sub (SSUBSCRIBE / SPUBLISH untuk pub/sub yang memahami shard). Ini merupakan batasan penting saat merancang pub/sub dalam skala besar dengan mode klaster.
# Keyspace notification (fires when a key expires)
# Enable in parameter group: notify-keyspace-events Ex
# Subscriber in Python:
# pubsub = redis_client.pubsub()
# pubsub.psubscribe('__keyevent@0__:expired')
# for message in pubsub.listen():
# if message['type'] == 'pmessage':
# expired_key = message['data']
# print(f'Key expired: {expired_key}')Memantau Keterlambatan Replikasi
Pantau metrik CloudWatch ReplicationLag pada replika pembaca untuk memastikan replika tersebut tetap mengikuti klaster utama. Keterlambatan lebih dari beberapa detik menunjukkan adanya hambatan pada replika (node kelebihan beban, masalah jaringan, atau terlalu banyak penulisan yang harus diproses replika). Dalam skenario Global Datastore, pantau GlobalDatastoreReplicationLag. Keterlambatan replikasi yang tinggi berarti replika pembaca mungkin mengembalikan data yang sudah usang — hal ini penting bagi aplikasi yang mengharapkan konsistensi eventual dalam batas waktu yang ketat.
# Monitor replication lag for all replicas
aws cloudwatch get-metric-statistics \
--namespace AWS/ElastiCache \
--metric-name ReplicationLag \
--dimensions Name=ReplicationGroupId,Value=web-cache \
--statistic Maximum \
--period 60 \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ)
# Alert if ReplicationLag > 10 secondsMenskalakan Grup Replikasi
Anda dapat melakukan penskalaan vertikal (mengubah jenis node) atau penskalaan horizontal (menambah atau menghapus replika). Mengubah jenis node memerlukan panggilan modify-replication-group dan menyebabkan failover singkat saat segera diterapkan — klaster utama digantikan oleh node baru dengan jenis yang baru. Penambahan replika dapat dilakukan secara online tanpa waktu henti. Saat melakukan penskalaan dari mode non-klaster ke mode klaster, Anda harus membuat grup mode klaster baru dan melakukan migrasi — tidak ada konversi langsung antara mode klaster dan non-klaster.
# Scale up node type with maintenance window
aws elasticache modify-replication-group \
--replication-group-id web-cache \
--cache-node-type cache.r7g.xlarge \
--apply-immediately false
# Add a read replica
aws elasticache increase-replica-count \
--replication-group-id web-cache \
--new-replica-count 4 \
--apply-immediatelyPemeriksaan Singkat
Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.
Rangkuman Pelajaran
Dalam pelajaran ini Anda mempelajari bahwa grup replikasi menyediakan penskalaan pembacaan melalui replika dan ketersediaan tinggi melalui failover otomatis dengan endpoint utama/pembaca, Mode Klaster membagi data ke hingga 500 grup node menggunakan 16.384 slot Hash untuk melakukan penskalaan horizontal melampaui kapasitas memori satu node, dan Global Datastore mereplikasi data ke berbagai Wilayah untuk pembacaan global berlatensi rendah serta DR lintas Wilayah. Selanjutnya, kita akan membahas strategi caching: pemuatan malas dan write-through.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Grup Replikasi Redis ElastiCache dan Mode Klaster” gratis?
Ya — teks lengkap “Grup Replikasi Redis ElastiCache dan Mode Klaster” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Grup Replikasi Redis ElastiCache dan Mode Klaster”?
Bangun grup replikasi Redis untuk meningkatkan skala baca, lalu aktifkan mode klaster untuk membagi data ke beberapa grup node. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?
Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Grup Replikasi Redis ElastiCache dan Mode Klaster” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?
Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Redis vs Memcached: Memilih Mesin yang Tepat
- Grup Replikasi Redis ElastiCache dan Mode Klaster
- Strategi Caching: Pemuatan Malas dan Tulis Langsung
- Penyimpanan Sesi dan Pola Papan Peringkat