ElastiCache Redis Çoğaltma Grupları ve Küme Kipi
Okuma ölçeklendirmesi için bir Redis çoğaltma grubu oluşturun ve verileri birden çok düğüm grubuna parçalamak için küme kipini etkinleştirin.
ElastiCache Redis Çoğaltma Grupları ve Küme Kipi, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
Redis Çoğaltma Gruplarına Genel Bakış
Bir ElastiCache çoğaltma grubu, bir birincil Redis düğümü ile en fazla 5 okuma replikasının mantıksal bir grubudur. Birincil düğüm tüm yazma işlemlerini gerçekleştirir; replikalar birincil düğümden eşzamansız çoğaltma alır ve okuma trafiğine hizmet verir. Çoğaltma grupları iki temel yetenek sağlar: okuma ölçekleme (okuma isteklerini birden fazla replikaya dağıtma) ve otomatik yük devretmeyle yüksek kullanılabilirlik (birincil düğüm başarısız olursa bir replikayı birincil düğüme yükseltme). Bir çoğaltma grubundaki tüm düğümler aynı veri kümesini paylaşır.
# 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-groupPrimary Uç Noktası ve Reader Uç Noktası
ElastiCache, bir çoğaltma grubu için iki DNS uç noktası sağlar: Primary uç noktası her zaman geçerli birincil düğümü gösterir (yük devretme sırasında otomatik olarak güncellenir); bunu tüm yazma işlemleri için kullanın. Reader uç noktası, okuma isteklerini kullanılabilir tüm replikalar arasında yük dengeler; yükü dağıtmak için bunu okuma işlemlerinde kullanın. Uygulamanız iki bağlantı havuzu bulundurmalıdır: yazmalar için Primary uç noktasına, okumalar için Reader uç noktasına ait birer havuz. Bu, ElastiCache Redis çoğaltma grupları için önerilen bağlantı düzenidir.
# 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)Otomatik Yük Devretme Süreci
Birincil düğüm başarısız olduğunda (ElastiCache tarafından sağlık kontrolleriyle birkaç saniye içinde algılanır), otomatik yük devretme okuma replikalarından birini seçerek birincil düğüme yükseltir. Yükseltme süreci şöyledir: (1) seçilen replika birincil düğüme yükseltilir, (2) birincil uç noktanın DNS kaydı yeni birincil düğümü gösterecek şekilde güncellenir (TTL yaklaşık 1 saniye), (3) eski birincil düğüm yeni bir replikayla değiştirilir. Toplam yük devretme süresi genellikle 30-60 saniyedir. Birincil uç noktanın DNS adını kullanan uygulamalar, DNS yayıldığında otomatik olarak yeniden bağlanır; sabit kodlanmış IP adreslerine gerek yoktur.
# 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}'Multi-AZ Replika Yerleşimi
En yüksek dayanıklılık için replikaları birden çok Availability Zone arasında dağıtın. Bir çoğaltma grubunda Multi-AZ'yi etkinleştirdiğinizde ElastiCache, birincil düğümü ve replikaları otomatik olarak farklı AZ'lere yerleştirir. Bir AZ'nin tamamı çevrim dışı kalırsa yük devretme, çalışan bir AZ'deki replikayı yükseltir. Çoğaltma grubunu oluştururken --preferred-cache-cluster-a-zs seçeneğini kullanarak her düğüm için tercih edilen AZ'leri açıkça belirtebilirsiniz.
# 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-subnetsRedis Cluster Mode Nedir
Redis Cluster Mode Enabled (CME), veri kümesini her biri bir birincil ve en fazla 5 replika içeren birden çok düğüm grubuna (parçaya) böler. Bu, Redis'in yatay parçalama çözümüdür. Cluster Mode, tek bir düğümün bellek kapasitesini aşmanıza olanak tanır; her biri 500 GB olan en fazla 500 düğüm grubuna sahip olabilir ve tek bir Redis kümesinde 500 × 500 GB = 250 TB'a kadar veri tutabilirsiniz. Cluster Mode ayrıca yazma aktarım hızını da artırır; her düğüm grubu kendi anahtar aralığı için yazmaları bağımsız olarak işler.
# 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-subnetsKarma Yuvaları ve Anahtar Dağıtımı
Redis Cluster Mode, anahtar alanını 16.384 karma yuvasına böler. Her düğüm grubu, bitişik bir karma yuvası aralığının sahibi olur. Bir anahtar yazıldığında Redis, karma yuvasını ve dolayısıyla sorumlu düğüm grubunu belirlemek için CRC16(key) % 16384 hesaplamasını yapar. Uygulamanız, yuva eşlemesini bilen ve her komutu doğru düğüme yönlendiren küme farkındalığına sahip bir Redis istemcisi (örneğin redis-py-cluster veya Cluster Mode'da Jedis) kullanmalıdır. Standart istemciler, bir anahtarı yanlış parçaya gönderirlerse MOVED yeniden yönlendirme hataları döndürür.
# 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 ve Cluster Mode Olmayan Yapı
SAA-C03 sınavında şu durumlarda Cluster Mode olmayan yapıyı seçin: verileriniz tek bir düğüme sığıyorsa (yedek kapasite sonrasında yaklaşık < 400 GB), basit bir birincil/replika kurulumu gerekiyorsa veya uygulamanız karmaşık çok anahtarlı işlemler kullanıyorsa (birden çok anahtara yayılan işlemler, tüm anahtarların aynı yuvada olmasını gerektirir). Şu durumlarda Cluster Mode'u seçin: veri kümeniz tek bir düğümün belleğini aşıyorsa, yatay yazma aktarım hızı ölçeklemesine ihtiyacınız varsa veya çevrim içi yeniden parçalama gerektirecek gelecekteki büyümeyi öngörüyorsanız. Cluster Mode, kesinti olmadan parça eklemeyi (çevrim içi yeniden parçalama) destekler.
# 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 incrementallyBölgeler Arası Replikasyon için Global Datastore
ElastiCache Global Datastore, Redis replikasyonunu birden çok AWS Bölgesine genişletir. Bir Bölgeyi birincil küme olarak belirler ve diğer Bölgelerde ikincil kümeler eklersiniz. Yazma işlemleri birincil kümeye gider; ikincil kümeler, tipik olarak 1 saniyenin altında gecikmeyle eşzamansız replikasyon alır. İkincil kümeler, çok düşük gecikmeyle yerel okuma işlemlerine hizmet verebilir. Global Datastore, farklı kıtalardaki kullanıcıların kendilerine en yakın Bölgeden okuma yaptığı küresel uygulamaları ve birincil Bölge başarısız olursa ikincil kümeyi birincil kümeye yükseltebildiğiniz bölgeler arası DR senaryolarını mümkün kılar.
# 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-1Büyük Ölçekte Redis Pub/Sub
Kümelenmemiş bir Redis replikasyon grubunda pub/sub mesajları tüm replikalara dağıtılır; herhangi bir düğümdeki herhangi bir abone, bir kanala yayımlanan mesajları alır. Ancak Küme Modunda pub/sub, keyspace bildirimleriyle sınırlıdır ve kanal tabanlı pub/sub, Pub/Sub parçalama özellikli Redis 7+ kullanmadığınız sürece yalnızca tek bir parça içinde çalışır (SSUBSCRIBE / SPUBLISH, parça farkındalıklı pub/sub için kullanılır). Küme modunda büyük ölçekte pub/sub tasarlarken bu önemli bir sınırlamadır.
# 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}')Replikasyon Gecikmesini İzleme
Okuma replikalarının birincil kümeye ayak uydurduğundan emin olmak için ReplicationLag CloudWatch ölçümünü izleyin. Birkaç saniyeyi aşan gecikme, replikada bir darboğaz olduğunu gösterir (aşırı yüklenmiş düğüm, ağ sorunları veya replikasyonun işleyebileceğinden fazla yazma işlemi). Global Datastore senaryolarında GlobalDatastoreReplicationLag değerini izleyin. Yüksek replikasyon gecikmesi, okuma replikalarının güncel olmayan veriler döndürebileceği anlamına gelir; bu durum, sıkı sınırlar içinde nihai tutarlılık bekleyen uygulamalar için önemlidir.
# 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 secondsReplikasyon Gruplarını Ölçeklendirme
Dikey olarak ölçeklendirebilir (düğüm türünü değiştirebilir) veya yatay olarak ölçeklendirebilirsiniz (replikalar ekleyebilir ya da kaldırabilirsiniz). Düğüm türünü değiştirmek bir modify-replication-group çağrısı gerektirir ve işlem hemen uygulandığında kısa süreli bir yük devretmeye neden olur; birincil düğüm, yeni türdeki yeni bir düğümle değiştirilir. Replika ekleme işlemi çevrimiçi olarak ve kesinti olmadan yapılır. Kümelenmemiş moddan küme moduna geçerken yeni bir küme modu grubu oluşturup geçiş yapmanız gerekir; küme ve kümelenmemiş mod arasında yerinde dönüştürme yapılamaz.
# 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-immediatelyHızlı Kontrol
Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: replikasyon grupları, replikalar aracılığıyla okuma ölçeklendirmesi ve birincil/okuyucu uç noktalarıyla otomatik yük devretme aracılığıyla yüksek kullanılabilirlik sağlar; Küme Modu, verileri 16.384 karma yuvası kullanan en fazla 500 düğüm grubu arasında parçalara ayırarak tek bir düğümün belleğinin ötesinde yatay ölçeklendirme sağlar; Global Datastore ise küresel ölçekte düşük gecikmeli okumalar ve bölgeler arası DR için verileri Bölgeler arasında çoğaltır. Sırada önbelleğe alma stratejilerini, yani lazy loading ve write-through yöntemlerini inceleyeceğiz.
Sıkça Sorulan Sorular
“ElastiCache Redis Çoğaltma Grupları ve Küme Kipi” dersi ücretsiz mi?
Evet — “ElastiCache Redis Çoğaltma Grupları ve Küme Kipi” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.
“ElastiCache Redis Çoğaltma Grupları ve Küme Kipi” dersinde ne öğreneceğim?
Okuma ölçeklendirmesi için bir Redis çoğaltma grubu oluşturun ve verileri birden çok düğüm grubuna parçalamak için küme kipini etkinleştirin. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“ElastiCache Redis Çoğaltma Grupları ve Küme Kipi” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Redis ve Memcached: Doğru Motoru Seçme
- ElastiCache Redis Çoğaltma Grupları ve Küme Kipi
- Önbellekleme Stratejileri: Tembel Yükleme ve Yazma Üzerinden Geçirme
- Oturum Depolama ve Liderlik Tablosu Örüntüleri