Ana içeriğe atla
Dağıtık Cache, Apinizer’ın throttling, quota, OAuth2 token’ları ve yük dengeleme bilgileri gibi paylaşılan verileri saklayan cache altyapısıdır. Cache Server’ları artık Gateway pod’larından ayrı Kubernetes namespace’lerinde çalışabilir, daha esnek bir altyapı yönetimi sağlar.

Cache Server Genel Bakış

Cache Server (apinizer-cache), Apinizer’da gerek duyulan cache değerlerinin tutulduğu ortamdır. Dağıtık önbellekleme için Hazelcast teknolojisini kullanır ve Apinizer tarafından yönetilebilir veya mevcut bir uzak Cache Server dağıtımına bağlanabilir.
Namespace Bağımsızlığı:Cache Server pod’ları artık Gateway pod’larından farklı bir Kubernetes namespace’inde çalışabilir. Bu, daha esnek bir altyapı yönetimi sağlar ve Gateway ve Cache iş yüklerini ayırmanıza olanak tanır. Gateway pod’ları diğer namespace’lerdeki Cache Server’larına Kubernetes service discovery kullanarak erişebilir (örn: http://cache-http-service.apinizer-cache.svc.cluster.local:8090).

Cache Server Yapılandırması

cache

Deployment Tipi Seçimi

Cache Server oluştururken, deployment tipini seçmeniz gerekir:

Apinizer Tarafından Yönetilen

Apinizer, Kubernetes API kullanarak cache dağıtımını otomatik olarak oluşturur ve yönetir. Apinizer, namespace, deployment, service ve tüm gerekli Kubernetes kaynaklarını otomatik olarak oluşturacaktır. Bu seçeneği şu durumlarda kullanın:
  • Apinizer’ın tüm cache yaşam döngüsünü yönetmesini istiyorsanız
  • Otomatik kaynak sağlama ve yönetime ihtiyacınız varsa
  • Basitleştirilmiş Cache Server yönetimi istiyorsanız

Uzak Cache Server

Manuel olarak YAML ile dağıtılmış mevcut bir Cache Server pod’una bağlanın. Apinizer yalnızca bağlantı detaylarını kaydedecek, dağıtımı yönetmeyecektir. Bu seçeneği şu durumlarda kullanın:
  • Apinizer dışında yönetilen mevcut bir Cache Server dağıtımınız varsa
  • Apinizer tarafından desteklenmeyen özel Cache Server yapılandırmalarına ihtiyacınız varsa
  • Başka bir sistem tarafından dağıtılmış bir Cache Server kullanmak istiyorsanız
Uzak Cache Server Gereksinimleri:Cache Server pod’unuzun çalıştığından ve erişilebilir olduğundan emin olun. Apinizer yalnızca bağlantı detaylarını kaydedecek, dağıtımı yönetmeyecektir. Uzak Cache Server dağıtımının bakımından siz sorumlusunuz.

Namespace Yapılandırması

Önemli: Namespace yapılandırması Cache Server oluşturulduktan sonra değiştirilemez. Oluşturma sırasında doğru namespace’i seçtiğinizden emin olun.

Yeni Namespace Oluştur

Yeni bir namespace oluştururken, özel bir namespace adı belirtebilirsiniz. Namespace, RFC 1123 DNS etiket standartlarına uygun olmalıdır:
  • 3 ile 63 karakter arasında olmalıdır
  • Sadece küçük harf alfanumerik karakterler (a-z, 0-9) veya tire (-) kullanılabilir
  • Küçük harf alfanumerik bir karakterle başlamalı ve bitmelidir
  • Örnekler: my-namespace, prod-env, 123-abc

Mevcut Namespace Kullan

Cache Server’ın dağıtılacağı mevcut bir Kubernetes namespace’i seçebilirsiniz. Bu şu durumlarda kullanışlıdır:
  • Mevcut bir namespace’i yeniden kullanmak istiyorsanız
  • Belirli namespace’leri gerektiren namespace yönetim politikalarınız varsa
  • Başka bir sistem tarafından yönetilen bir namespace’te Cache Server’ları dağıtmak istiyorsanız
Namespace Bağımsızlığı:Cache Server’ları Gateway pod’larından farklı namespace’lerde çalışabilir. Bu şunları yapmanıza olanak tanır:
  • Daha iyi kaynak yönetimi için Gateway ve Cache iş yüklerini ayırma
  • Gateway ve Cache namespace’lerine farklı güvenlik politikaları uygulama
  • Gateway ve Cache’i bağımsız olarak ölçeklendirme
  • Cache altyapısı için özel namespace’ler kullanma
Gateway pod’ları diğer namespace’lerdeki Cache Server’larına Kubernetes service discovery formatı kullanarak erişebilir: http://service-name.namespace.svc.cluster.local:port

Cache Management API Yapılandırması

Cache Management API URL’leri, API Manager ve Gateway’in Cache Server uygulaması ile nasıl iletişim kuracağını tanımlar. Yüksek kullanılabilirlik senaryoları için birden fazla API URL’si yapılandırabilirsiniz.

Tek API URL Yapılandırması

Temel kurulumlar için, tek bir Cache Management API URL’si yapılandırın: Format: http://cache-http-service.namespace.svc.cluster.local:8090 Örnek:
  • http://cache-http-service.apinizer-cache.svc.cluster.local:8090
  • http://cache-http-service.prod.svc.cluster.local:8090

Çoklu API URL Yapılandırması

Yüksek kullanılabilirlik için birden fazla Cache Management API URL’si yapılandırabilirsiniz. Her URL şunlara sahip olabilir:
  • Ad: API URL için açıklayıcı bir ad
  • Health Check Adresi: Health check’ler için kullanılan adres
Kullanım senaryoları:
  • Birden fazla namespace arasında yüksek kullanılabilirlik dağıtımları
  • Birden fazla cache cluster arasında yük dengeleme
  • Felaket kurtarma senaryoları
Cross-Namespace İletişim:Gateway pod’ları ve Cache Server pod’ları farklı namespace’lerde olduğunda, Kubernetes service discovery formatını kullanın: http://service-name.namespace.svc.cluster.local:portBu, Gateway pod’larının namespace konumlarından bağımsız olarak Cache Server’larına erişmesine olanak tanır.

Yönetilen Mod Yapılandırması

Apinizer Tarafından Yönetilen seçildiğinde, Apinizer Cache Server için tüm Kubernetes kaynaklarını oluşturur ve yönetir.

Kaynak Yapılandırması

Bellek Boyutlandirma Rehberi: Cache Server, 1 GB uzerindeki container’larda ZGC kullanir ve heap oranini %50-55 olarak ayarlar. Kalan bellek ZGC, JVM dahili yapilari ve Hazelcast native yapilari tarafindan kullanilir. Toplam container belleginin yaklasik %40’i cache verisi icin kullanilabilir. Boyutlandirma formulu:
Ornegin 2 GB cache verisi tutmak icin: (2000 MB / 0,4) + 1000 MB = 6 GB container
Kayit sayisi tahminleri, ortalama 500 byte kayit boyutu varsayar (key, response body, header ve Hazelcast metadata dahil). Gercek kayit boyutlari onbelleklenen response body boyutuna gore degisir. Gercek kayit sayilarini ve bellek kullanimini Cache Dashboard’dan izleyebilirsiniz.
GC ve Bellek Profili: Apinizer, Cache Server’in container bellegine gore uygun GC algoritmasini otomatik olarak secer. 1 GB uzerindeki container’larda ZGC secilir ve heap orani %50-55 olarak ayarlanir. 1 GB ve altindaki container’larda G1GC kullanilir ve heap orani %50’dir. ZGC, buyuk heap boyutlarinda G1GC ile yasanabilen Hazelcast cluster partition timeout riskini azaltan sub-millisecond GC duraklamalari saglar. JAVA_OPTS ile otomatik GC secimini gecersiz kilabilirsiniz. Detaylar icin JVM Garbage Collector Ayarlama sayfasina bakin.

Kubernetes Service Yapılandırması

Cache Server uygulamasını açığa çıkarmak için Kubernetes servislerini yapılandırabilirsiniz: Servis Seçenekleri:
  • Kubernetes Service Oluştur: Cache Server erişimi için Kubernetes Service oluşturmayı etkinleştir
  • Servis Adı: Kubernetes Service’in adı (varsayılan: cache-server-service)
  • Servis Tipi:
    • ClusterIP: Varsayılan tip. Servis yalnızca cluster içinden erişilebilir. API Manager/Gateway ve Cache Server arasındaki dahili iletişim için en iyisidir.
    • NodePort: Servis her node’da belirli bir port üzerinden erişilebilir (30000-32767 aralığı)
Servis Silme:Kubernetes Service oluşturmayı devre dışı bırakırsanız, daha önce oluşturulan Kubernetes Service Kubernetes’ten silinecektir. Devre dışı bırakmadan önce bunun istediğiniz şey olduğundan emin olun.

Ek Değişkenler

Pod içinde çalıştırılacak varsayılan ve opsiyonel değişkenler ve değerleri tanımlanır. Tomcat Ayarları: Hazelcast Ayarları:
HAZELCAST_OPERATION_RESPONSEQUEUE_IDLESTRATEGYEğer bu parametreyi “backoff” ayarlarsanız: Cache Server pod’unun CPU limitinin %90-100’ünü sürekli kullanacaktır. Bu durum %5-10 performans artışı sağlayabilir ancak Cache Server pod’unun CPU kaynaklarının limitini tüketir.
CACHE_QUOTA_TIMEZONE:Cache’de günlük kota bilgileri de tutulmaktadır. Günlük kota bilgileri UTC timezone’a göre sıfırlanır. Eğer günlük değişen kotanın başlangıç zamanını kendi yerel saatinize göre sıfırlanmasını istiyorsanız ek değişkenlere CACHE_QUOTA_TIMEZONE değerini ekleyebilirsiniz. Buraya eklenen değerin “+03:00” şeklinde yazılması gereklidir.
CACHE_LAZY_MODE:Cache Server pod’larının ilk açılışta veritabanındaki değerleri tek seferde yüklemeye çalışması istenmiyorsa CACHE_LAZY_MODE değeri “lazy” olarak eklenebilir. Bu durumda öncelik pod’un açılmasına verilir ve değerler pod açıldıktan sonra da yüklenmeye devam edebilir. Veritabanında yüksek miktarda kayıt varsa bu değerin girilmesi önerilir.

Host Alias Yapılandırması

Cache Server için host alias’ları yapılandırın. Host alias’lar IP adreslerini hostname’lere eşlemenize olanak tanır. Kullanım senaryoları:
  • DNS’te olmayan hostname’leri çözümleme
  • Dahili IP adreslerini kullanıcı dostu hostname’lere eşleme
  • Özel hostname çözümleme yapılandırması
Örnek Kullanım:

Node İsim Listesi Yapılandırması

Cache Server pod’larının hangi Kubernetes node’larında zamanlanacağını yapılandırın. Hiçbir node seçilmezse, pod’lar herhangi bir node’da zamanlanabilir. Kullanım senaryoları:
  • Cache Server pod’larını belirli yüksek bellekli node’larda zamanlama
  • Cache iş yüklerini özel node’lara izole etme
  • Cache Server pod’larının SSD depolamalı node’larda çalışmasını sağlama

Uzak Mod Yapılandırması

Uzak Cache Server seçildiğinde, mevcut Cache Server dağıtımı için bağlantı detaylarını yapılandırmanız gerekir.

Temel Bilgiler

Bağlantı Testi

Yapılandırmayı kaydetmeden önce uzak Cache Server’a bağlantıyı test edebilirsiniz. Test şunları doğrular:
  • Cache Server’a ağ bağlantısı
  • Health check endpoint erişilebilirliği
  • API yanıt doğrulaması
Uzak Cache Server Gereksinimleri:Uzak Cache Server olarak kaydetmeden önce Cache Server pod’unuzun çalıştığından ve erişilebilir olduğundan emin olun. Apinizer yalnızca bağlantı detaylarını kaydedecek, dağıtımı yönetmeyecektir.

Cache Server İşlemleri

Cache Server Oluşturma

1

Deployment Tipi Seç

İhtiyaçlarınıza göre Apinizer Tarafından Yönetilen veya Uzak Cache Server arasından seçim yapın.
2

Namespace Yapılandır

Mevcut bir namespace seçin veya yeni bir tane oluşturun. Namespace’in oluşturulduktan sonra değiştirilemeyeceğini unutmayın.
3

Cache Management API Yapılandır

API Manager ve Gateway iletişimi için bir veya daha fazla Cache Management API URL’si yapılandırın.
4

Kaynakları Yapılandır (Sadece Yönetilen Mod)

Yönetilen mod kullanıyorsanız, replica sayısı, CPU, bellek ve ek değişkenleri yapılandırın.
5

Yapılandırmayı Kaydet

Cache Server yapılandırmasını kaydedin. Yönetilen mod için, Apinizer gerekli Kubernetes kaynaklarını oluşturacaktır.

Cache Server Güncelleme

Cache Server yapılandırmasının çeşitli yönlerini güncelleyebilirsiniz:
  • Temel Bilgiler: Ad ve açıklama
  • Kaynak Yapılandırması: Replica sayısı, CPU, bellek (Sadece yönetilen mod)
  • Ek Değişkenler: Ortam değişkenleri ve Java seçenekleri
  • Kubernetes Service Yapılandırması: Servis tipi ve ayarları (Sadece yönetilen mod)
  • Host Aliases: Host alias eşlemeleri
  • Node İsim Listesi: Pod zamanlama tercihleri
  • Cache Management API Ayarları: API URL yapılandırmaları
Namespace Değişikliği:Namespace, Cache Server oluşturulduktan sonra değiştirilemez. Namespace’i değiştirmeniz gerekiyorsa, Cache Server yapılandırmasını silip yeniden oluşturmanız gerekir.

Cache Server Silme

Cache Server’ı sildiğinizde:
  • Bu Cache Server ile ilgili tüm yapılandırmalar silinecektir
  • Yönetilen mod için, Kubernetes kaynakları (deployments, services) kaldırılacaktır
  • Silinen Cache Server geri yüklenemez
Dikkat: Silme işlemi tamamlandığında, bu Cache Server’ı kullanan Gateway pod’ları cache’e erişimini kaybedecektir. Cache Server’ı silmeden önce Gateway yapılandırmalarını güncellediğinizden emin olun.

Cache Dashboard

cache Cache Dashboard sayfasından cache içeriklerini görüntüleyebilir, yönetebilir ve silme işlemleri gerçekleştirebilirsiniz. Cache Dashboard sayfasına Cache Server listesinden ilgili Cache Server’ın Cache Monitor butonuna tıklayarak erişebilirsiniz.

Cluster Members

Cache Dashboard sayfasının üst kısmında Hazelcast cluster üyelerinin bilgileri görüntülenir. Her cluster member için host ve port bilgileri gösterilir.

Kategorize Edilmiş Cache Listesi

Cache’ler kategorilere göre gruplandırılmıştır:
  • Response Caching: API Proxy response cache’leri (detaylı tablo: API Proxy Group, API Proxy, Method, Project bilgileri ile)
  • Rate Limiting: Rate limiting cache’leri
  • Authentication: Kimlik doğrulama cache’leri
  • Resilience: Dayanıklılık cache’leri (Circuit Breaker, Retry vb.)
  • Generic: Diğer genel cache’ler
Her kategori için:
  • Type: Cache tipi
  • Description: Cache açıklaması
  • Count: Cache içindeki kayıt sayısı
  • Size: Cache’in bellek kullanımı (KB)

Response Caching Detayları

Response Caching kategorisindeki cache’ler için ek bilgiler görüntülenir:
  • API Proxy Group: API Proxy Group adı
  • API Proxy: API Proxy adı
  • Method: HTTP method
  • Project: Proje adı

Cache Keys Görüntüleme

Bir cache’e tıklayarak o cache’in key’lerini görüntüleyebilirsiniz:
  • Key Listesi: Cache içindeki tüm key’ler listelenir
  • Pagination: Key’ler sayfalama ile gösterilir (10, 20, 30 kayıt seçenekleri)
  • Key Detayları: Bir key’e tıklayarak cache içeriğini JSON formatında görüntüleyebilirsiniz

Cache İşlemleri

Cache Dashboard üzerinden aşağıdaki işlemleri gerçekleştirebilirsiniz:
  • View Keys: Cache’in key’lerini görüntüleme
  • View Data: Key’e ait cache içeriğini JSON formatında görüntüleme
  • Delete Key: Tek bir key’i silme
  • Delete All: Tüm cache içeriğini silme
Cache Silme İşlemleri:Cache silme işlemleri geri alınamaz. Production ortamlarında cache silme işlemlerini dikkatli yapın. Özellikle Rate Limiting ve Authentication cache’lerinin silinmesi, sistem davranışını etkileyebilir.

Diagnostics

Cache Server’ın detaylı sistem metriklerine, JVM bilgilerine, thread durumlarına ve Hazelcast cluster bilgilerine erişebilirsiniz. Diagnostics sayfasına Cache Server listesinden ilgili Cache Server’ın Diagnostics butonuna tıklayarak erişebilirsiniz.
Diagnostics özellikleri, kullanımı ve detaylı bilgiler için Environment Diagnostics sayfasına bakın.

En İyi Uygulamalar

Namespace Yönetimi

  • Mümkün olduğunda cache altyapısı için özel namespace’ler kullanın
  • Namespace’ler için adlandırma kurallarını takip edin (küçük harf, alfanumerik, tire)
  • Cache Server pod’ları için namespace kaynak kotalarını göz önünde bulundurun

Yüksek Kullanılabilirlik

  • Artıklık için birden fazla Cache Management API URL’si yapılandırın
  • Hata toleransı için birden fazla Cache Server pod replica’sı kullanın
  • Cache Server pod’larını farklı Kubernetes node’larına dağıtın

Performans Optimizasyonu

  • Cache boyutu gereksinimlerine göre uygun CPU ve bellek yapılandırın
  • Büyük veritabanları için CACHE_LAZY_MODE=lazy kullanın
  • İş yükünüze göre Hazelcast parametrelerini ayarlayın
  • Kaynak tahsisini optimize etmek için cache metriklerini izleyin

Güvenlik

  • Dahili iletişim için ClusterIP servisleri kullanın
  • Cross-namespace erişim için uygun ağ politikaları yapılandırın
  • Mümkün olduğunda cache management API için TLS/HTTPS kullanın
  • Cache Server görüntülerini düzenli olarak güncelleyin
Cache mimarisi ve kullanımı hakkında daha fazla bilgi için Önbellek Bileşeni sayfasına bakın.