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
POWERSHELL


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
POWERSHELL

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
POWERSHELL



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>
POWERSHELL


  • 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>
POWERSHELL



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
POWERSHELL


Güvenlik duvarı kapatılır.

sudo systemctl stop ufw
sudo systemctl disable ufw
POWERSHELL


3) MongoDB


3.1) Çalışma Durumu

sudo systemctl status mongod
sudo systemctl start mongod
POWERSHELL


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
POWERSHELL


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
POWERSHELL

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
POWERSHELL


4.2) Elasticsearch Logları

Elasticsearch otomatik olarak başlamazsa loglar incelenir.

vi /opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml
POWERSHELL

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şenDurum/Açıklama
Api ManagerArayüz erişimini ve Api worker'ların ayar değişimine olanak sağlar.
Api WorkerServislerin verilen ayarlarla çalışmasını, yönlendirilmesi ve trafik verilerin ilgili log connector'lerine aktarılmasını sağlar.
Api CacheKullanılan servislerin kota ile darboğaz politikası sayımlarını gerçekleştirir ve cache'lemesi açık servislerin verilerini tutar.
Api IntegrationAyarlanan iş akışını belirlenen tarihsel düzende tetikler ve işletir.
Api PortalWorker'da yayınlanmış Api Proxy'lerin listelenip kullanılmak üzere kayıt olunabildiği bir arayüz sunar.


KubernetesApinizer bileşenleri sanal imajlar halinde üstünde çalışır.
MongoDBApinizer 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.

(tick) Çalışmaya devam eder

(error) Çalışmayı durdurur

(grey lightbulb) Çeşitli sorunlar nedeniyle sağlıklı çalışmaz.


Not: K8S, Kubernetes'i temsil etmektedir.





ETKİLENEN BİLEŞENLER

Apinizer ManagerApinizer Worker

Apinizer Cache

Api TrafikMongoDB



Düşen Bileşen


Master - K8S(error)(error)(error)(error)(tick)
Worker - K8S(error)(error)(error)(error)(tick)
MongoDB(error)(error)(error)(grey lightbulb)*-
Elasticsearch(tick)(tick)(tick)(error)(grey lightbulb)**

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.