Bakım İşlemleri
Sunucuda Çalışan Araçların Durumu
1) Docker ve Containerd
1.1) Çalışma Durumu
Aktif olup olmadığını kontrol etmek ve başlatmak için:
sudo systemctl status docker
sudo systemctl start docker
sudo systemctl status containerd
sudo systemctl start containerd
1.2) Export Import işlemleri
Docker ve containerd için image export ve import işlem örneği:
export: docker save -o manager.tar apinizercloud/manager
import: docker load < manager.tar
export: sudo ctr --namespace k8s.io images export /tmp/apinizer/manager-2024.01.6.tar docker.io/apinizercloud/manager:2024.01.6
import: sudo ctr --namespace k8s.io images import /tmp/manager-2024.01.6.tar
1.3) Apinizer Üzerinden Apinizer Imagelarını Güncelleme
Administration > Version Management > Upgrade menüsünde.
Yukarıdaki görselde bulunan alandan Apinizer güncellemesi gerçekleştirilir.
2) Kubernetes
2.1) Çalışma Durumu
Aktif olup olmadığını kontrol etmek ve başlatmak için:
systemctl status kubelet
sudo systemctl start kubelet
2.2) Node ve Pod Durumu
Master sunucuda "kubectl get node" komutuyla bağlı olan node'lar yani diğer sunucular görülür. "kubectl describe node <NODE_NAME>" komutuyla <NODE_NAME> eklenir ve ilgili node'un durumu incelenir. Belirli bir hatada dokümandaki yönergelere göre ilerlenir.
kubectl get node
kubectl describe <NODE_NAME>
- Master sunucuda aşağıdaki komut çalıştırılarak çalışan tüm iş parçacıkları gözlemlenir. Apinizer arayüzü, default olarak "apinizer" namespace'inde bulunur. Herhangi bir pod'un detaylı incelemesi için describe veya log komutları kullanılabilir.
kubectl get pods -A
kubectl describe pod -n <NAMESPACE> <POD_NAME>
kubectl logs -f -n <NAMESPACE> <POD_NAME>
2.3) Apinizer Üzerinden Node ve Podların Durumu
Uygulama üzerinden kontrol için:
Administration --> Server Management → Kubernetes Resources menüsü izlenir.
2.4) Kubernetes Versiyonunu Güncelleme
Sırasıyla kubeadm, kubelet ve kubectl güncellemesi için:
Kubernetes Versiyon Yükseltme sayfasında işlem detayları anlatılmakta. İlgili dokümanı takip edebilirsiniz.
2.5) Kubernetes Sertifikasının Kontrolü ve Yenilemesi
Kubernetes Sertifika Kontrolü ve Yenileme scripti sayfasında işlem detayları anlatılmakta. İlgili dokümanı takip edebilirsiniz.
3) Sunucu İşlemleri
Disk ve RAM durumu incelenir. Swap'ın kapalı olması ve disk doluluk oranının %85 'in üzerine çıkmaması beklenir.
df -h
free -m
swapoff -a
Güvenlik duvarı kapatılır.
sudo systemctl stop ufw
sudo systemctl disable ufw
3) MongoDB
3.1) Çalışma Durumu
sudo systemctl status mongod
sudo systemctl start mongod
3.2) Mongodb Logları
MongoDB başlamazsa loglar incelenir.
#MongoDB loglarının tutulduğu yeri /etc/mongod.conf dosyasının içerisinde "path" dizininden bulabilirsiniz.
/var/log/mongodb/mongod.log
3.3) MongoDB Yedeğini Almak
MongoDB'nin kurulu olduğu sunucuda "mongodump" komutu çalıştılırak manuel yedek alınabilir.
mongodump --host=<your-mongodb-ip> --port=25080 --authenticationDatabase=admin \
--username=admin --password=Password --db=apinizerdb --gzip \
--archive=/tmp/apinizer-backup-patch-<date>.archive
Yedek tmp klasörüne alındıysa uygun dizine taşınır.
3.4) Apinizer Üzerinden MongoDB Yedeğini Almak
MongoDB Apinizer üzerinden belirli aralıklarla istenilen bir yere MongoDB yedeği çıkartılabilir. Bu yedeğin de sunucu dışında herhangi bir yere yedeklenmesi gerekmektedir.
Administration --> Backup Management → Configuration menüsü izlenir.
4) Elasticsearch
4.1) Çalışma Durumu
systemctl status elasticsearch
sudo systemctl start elasticsearch
4.2) Elasticsearch Logları
Elasticsearch otomatik olarak başlamazsa loglar incelenir.
vi /opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml
4.3) Elasticsearch Yedeğini Almak
Kurulum yapılırken varsayılan olarak "/opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml" adresindeki dosyada verilerin tutulduğu yer "path.data" ifadesinde belirtilmektedir. Burada belirtilen adresten olduğu gibi yedek alınabilir.
Elasticsearch Yedekleme Politikası sayfasında işlem detayları anlatılmakta.
5) Bileşen Kapanma Senaryoları: Hangi Bileşen Düşerse Ne Olur?
Kubernetes, MongoDB, Elasticsearch ve Apinizer bileşenlerinin üzerinde her bir bileşenin kritikliği ve kapanma senaryoları hakkında detaylı bilgi sunulmaktadır.
Bileşen | Durum/Açıklama |
---|---|
Api Manager | Arayüz erişimini ve Api worker'ların ayar değişimine olanak sağlar. |
Api Worker | Servislerin verilen ayarlarla çalışmasını, yönlendirilmesi ve trafik verilerin ilgili log connector'lerine aktarılmasını sağlar. |
Api Cache | Kullanılan servislerin kota ile darboğaz politikası sayımlarını gerçekleştirir ve cache'lemesi açık servislerin verilerini tutar. |
Api Integration | Ayarlanan iş akışını belirlenen tarihsel düzende tetikler ve işletir. |
Api Portal | Worker'da yayınlanmış Api Proxy'lerin listelenip kullanılmak üzere kayıt olunabildiği bir arayüz sunar. |
Kubernetes | Apinizer bileşenleri sanal imajlar halinde üstünde çalışır. |
MongoDB | Apinizer konfigürasyon verilerini saklar. |
Elasticsearch | Opsiyonel. Api trafik verilerini tutar ve Api Manager üzerinde Analitik ekranlarını besler. |
ÖNEMLİ: Yüksek erişilebilir mimaride sistemin sürekli devam etmesini sağlayabilirsiniz ve kayıpların önüne geçebilirsiniz.
- Kubernetes
Kubernetes kapanması durumunda yaşanacak durum: Kubernetes üzerinde çalışan tüm Apinizer deploymentlarına erişim kesilir ve Apinizer kullanılamaz.
- MongoDB
MongoDB uygulamasının kapanması durumunda yaşanacak durum: Apinizer deploymentları (manager, worker, cache) Mongodb'ye bağımlı olduğundan Apinizer kullanılamaz.
- Elasticsearch
Elasticsearch uygulamasının kapanması durumunda yaşanacak durum: Sadece Apinizer'a eklediğiniz proxy'lerin trafik logunu görüntüleyemezsiniz. Servisler istek almaya devam eder Apinizer erişilebilir. Failover ayarlandıysa loglarda kayıp yaşanmaz.
- Api Manager
Manager pod kapanması durumunda yaşanacak durum: Apinizer arayüzüne erişim sağlanamaz.
- Api Worker
Worker pod kapanması durumunda yaşanacak durum: Apinizer'a eklenen servislere erişim sağlanamaz.
- Api Cache
Cache podu kapanması durumunda yaşanacak durum: Performansta düşüş yaşanır, Apinizer'a ve servislerinize erişim devam eder. Cache'leme, Kota ve Darboğaz politikaları ayarlarına göre çalışmayabilir.
5.1) Yüksek Erişilebilir Olmayan Ortam
Bu tabloda her bileşenin kendi başına ve bir sunucu üzerinde çalıştığı varsayılmıştır.
Çalışmaya devam eder
Çalışmayı durdurur
Çeşitli sorunlar nedeniyle sağlıklı çalışmaz.
Not: K8S, Kubernetes'i temsil etmektedir.
ETKİLENEN BİLEŞENLER | ||||||
---|---|---|---|---|---|---|
Apinizer Manager | Apinizer Worker | Apinizer Cache | Api Trafik | MongoDB | ||
Düşen Bileşen | Master - K8S | |||||
Worker - K8S | ||||||
MongoDB | * | - | ||||
Elasticsearch | ** |
Notlar:
* Apinizer Worker'lar Mongodb olmadan çalışamayacağı için dolaylı yoldan trafik de durmuş olur ve loglanacak bir veri olmaz.
** Api trafik loglamasının Failover bağlantısı konfigürasyonel MongoDB veritabanı olarak ayarlanmışsa, veritabanı bu yükü kaldıramayıp çökebilir.
5.2) Yüksek Erişilebilir (High Availability) Ortam
Yüksek Erişilebilir (High Availability) cluster ortamında, 3 Master ve 2 Worker Kubernetes node'u, 3 MongoDB node'u, 3 Master ve 3 Data Elasticsearch node'u bulunan bir yapıda, herhangi bir node'un tek başına düşmesinin herhangi bir soruna yol açmayacağı öngörülmektedir. Aynı bileşenden birden fazla node'un düşmesi, yukarıdaki tablodaki sorunlara yol açacaktır.