Nginx Kurulum ve Ayarlama

Deniz TÜRKMEN
4 min readNov 17, 2022

--

Load Balancer Uygulama Örneği Docker & Kubernetes

Merhabalar,

Bu yazımda Docker ve Kubernetes ile Nginx kurulumu ve ayarlamasını inceliycez.

Nginx: Rus yazılım mühendisi Igor Sysoev tarafından mail.ru için yapılmış mail sunucusudur ve geliştirilip tüm platformlarda kullanılabilir hale getirilmiştir.

Temel Özellikleri,

  • Reverse Proxy (Ters Vekil Sunucusu)
  • Load Balancing (Yük Dengeleme)
  • Virtual Host (Sanal Sunucu)

ilk olarak nginx docker ile load balancer örneğini inceliycez. Örneğimize detaylarına bakacak olursak iki ayrı Python Flask ile geliştirilmiş uygulamayı nginx load balancer kurarak sayfalar arasında yük dağılımına bakacaz. Uygulamamızın code yapısına bakalım.

ilk olarak Flask-1 uygulamazı çalıştıralım. Bunun için terminalden python3 app1.py ile uygulamızı çalıştırıp çıktıya bakalım.

ikinci olarak da Flask-2 uygulamazı çalıştıralım. Bunun için terminalden python3 app2.py ile uygulamızı çalıştırıp çıktıya bakalım.

Çıktılar görülüğü gibi basit load balancer mantığını test etmek için iki farklı çıktı elde ettik. Uygulama kodlarına bakalım.

app1.py

ve

app2.py

Şimdide iki ayrı uygulamamız için Dockerfile yazalım ve Dockerfile dan bir docker image oluşturalım.

Dockerfile app1.py

ve

Dockerfile app2

Dockerfile ların bulunduğu dizinde

docker image build --tag app1 .docker image build --tag app2 .

ve

“docker image ls” komutu ile baltığımızda.

Oluşturduğumuz “app1” ve “app2” image lerinden docker container oluşturalım. Bunun için ,

docker run --name app1 -dp 5001:5000 app1docker run --name app2 -dp 5002:5000 app2

Tarayıcıdan “localhost:5001” ve “localhost:5002” gittiğimizde

ve

Şimdi yazımızın konusu olan Laod Balancer yazalım. İlk olarak Dockerfile bakalım.

Load balancer Nginx Dockerfile

Dockerfile göz atacak olursak nginx default.conf siliyoruz ve kendi oluşturduğumuz default.conf ile docker image alıyoruz. default.conf göz atacak olursak.

nginx conf

Configte bilmemiz gereken,

  • “server” ip adresi bilgisayarımızın ip adresini ve 2 adet ayağa kaldırdığımız container portunu veriyoruz ve yük dağılımını iki container arasında gidip gelmesini sağlıyoruz.
docker image build --tag load_balancer_nginx .docker run --name nginx -dp 8082:80 load_balancer_nginx

Şimdide basit bir script ile test edelim.

while true; do curl http://localhost:8082 && sleep 2 && echo ""; done;

Nginx ile load balancer kurulumuz başarılı şekilde gerçekleşti.

Şimdi de aynı uygulamayı kubernetes ile yapalım. Bunun için ilk olarak app1 için yaml yazalım. Daha öncesinde kubernetes minikube clusterı üzerinde gerçekleştirceğimiz için minikube çalıştırmalıyız.

minikube start --memory=8000 --cpus=4 --kubernetes-version=v1.21.1

ilk olarak load-balancer adında bir tane namespace oluşturalım.

kubectl create ns load-balancerkubectl get ns

“app1” uygulamamızın yaml bakacak olursak.

kubectl apply -f app1.yamlkubectl get svc -n load-balancerkubectl get pods -n load-balancerminikube service list

“app2” uygulamamızın yaml bakacak olursak.

kubectl apply -f app2.yamlkubectl get svc -n load-balancerkubectl get pods -n load-balancerminikube service list

Şimdide nginx için load balancer yaml bakalım.

kubectl appy -f nginx_load_balancer.yamlkubectl get configmaps -n load-balancerkubectl get svc -n load-balancerkubectl get pods -n load-balancerminikube service list

Son olarak test edelim. Bunun için,

while true; do curl http://192.168.49.2:32430 && sleep 2 && echo “”; done;

Görüldüğü üzere başarılı.

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

No responses yet