Toplam Sayfa Görüntüleme Sayısı

17 Temmuz 2020 Cuma

NGINX LOAD BALANCING ve DOCKER COMPOSE SCALE SERVICE

Merhaba uzun zaman oldu, umarım iyisinizdir? Bu paylaşımda  docker compose üzerinde nginx ve web uygulama sunucusu çalıştırıp, bu uygulama sunucusunun ölçeğini (scale) değiştirerek yük anında container sayısını arttırmaya değineceğim. Anlatımda kullanılan işletim sistemi, Ubuntu 16.04 LTS, docker versiyon, community 19.03.6, docker compose versiyon 1.25.4'tür. Size kurulumların nasıl yapılacağı konusunda yardımcı olması adına kurulum işlemlerinin bulunduğu offical docker linklerini paylaşıyorum, ilgili dokümanlara aşağıdaki linklere tıklayarak ulaşabilirsiniz.




Docker ve docker-compose kurulumu yapıldığını varsayarak anlatıma geçiyorum. Örnek anlatımda aynı fiziksel makine üzerinde, ön tarafta nginx (load balancer) olarak konfigüre edilmiş ve onun arkasında maksimum (5) ölçeğe sahip web sunucusu container olarak çalıştırılacaktır. Ölçek arttırma ve azaltma işlemlerini kısa bir sürede yapabilmek için özel parametrelere ve Nginx konfigürasyonunda üç (3) farklı yük dengeleme moduna (oturum kalıcılığı, en az bağlantı ve round robin gibi algoritmalara) değinilecektir. Aşağıdaki linkten docker-compose.yml, nginx konfigürasyon dosyası ve sertifikalara ulaşılabilir.


Docker-compose yardımcı dosyaları indirip," tar -zxf scale.tar.gz " komutu ile "home" dizine çıkarttıktan sonra, "nginx dizini içinde bulunan mocal.conf dosyasındaki 192.168.56.40 ip adresini kendi makine ip adresi ile değiştirmelisiniz, yine docker-compose-yml içimde geçen extra-host kısmındaki 192.168.56.40 ip adresinide kendi sunucu ip adresi ile değiştirmelisiniz" Tüm dosya ve klasörler aynı dizinde olmalıdır. 
Örnek ekran görüntüsü;

Dosyalarla ilgili düzenleme yapıldıktan sonra docker-compose.yml dosyamızı çalıştırma sıra geldi. Bu işlem için docker-compose.yml dosyasını bir değişkene atıyorum, birden fazla compose file olduğuda yada farklı bir süreç işletileceğinde "-f" parametresi ile docker-compose file dosyalarını kullanılabilmekte. Konuyla ilgili komutlar aşağıda sırasıyla verilmiştir.

FL=docker-compose.yml
docker-compose -f $FL up -d


Herşey yolunda nginx 80 ve 443 portu dinlemekte, web uygulaması 3004 portu açmış ve çalışmakta, sorun yok iyi yoldayız. Kullanıdığımız docker-compose.yml dosyasını aşağıda paylaşıyorum.

Docker-compose.yml dosyasınında web servisi olarak, remnux/jsdetox:latest imajı kullanması gerektiği, port olarak içerde 3000'i dışarda 3001'den 3005'e kadar bağlayabileceğini belirtmektedir. Web servisi şu anda 1 instance olarak çalışmakta, birazdan scale parametresi ile 5 adet web servis çalıştıracağız. Nginx ise restart always ile yeniden başlayabilmekte, imaj olarak son nginx offical sürümünü kullanmakta, port olarak 80 ve 443'ü dinlemekte, volume kısmında ise sertifika ve nginx konfigürasyon dosyasını host makineden alacağı path bilgileri yer almakta, link ve depends alanlarında web servisine bağımlı olduğunu bildirdik.

Daha güvenli bir hali mevcut onuda kullanabilirsiniz. Çünkü yukarıdaki konfigürasyonda 3001-3005 arası portlar 0.0.0.0 üzerinden bind edilebilmekte, ama aşağıda paylaştığım "docker-compose.yml"da bu açıklığı giderdim, bu konfigürasyonu kullanmanızı öneririm. Bu konfigürasyonda sadece nginx'te bulunan mocal.conf dosyasındaki 192.168.56.40 ip adresini değiştirmeniz yeterli,docker-compose.yml içinde geçen 192.98.0.1 ip adresi dockerin kullandığı iç ip blogu olduğundan dış bacaktan doğrudan bir erişim söz konusu değil ve bu yöntem ilkine göre daha güvenli. Ayrıca 192.168.0.0/24 blogu statik olduğundan, bu konfigürasyonu kullanan her sunucuda gateway 192.98.0.1 olacaktır, bu sebeple nginx konfigürasyonunda sadece "server_name 192.168.56.40;" kısmı sizin host makinenin fiziksel ip adresi olmalı, bunun dışında bir değişiklik söz konusu değil. Bu yöntemin daha güvenli ve kolay olduğunu düşünüyorum. Seçim size kalmış.
*****************************************************************
services:

  web:
    image: remnux/jsdetox:latest  
    ports:
      - "192.98.0.1:3001-3005:3000"
    networks:
      mocal_net:

  nginx:
    restart: always
    networks:
      mocal_net:
#        ipv4_address: 192.98.0.5
    image: nginx:latest
    ports:
      - "0.0.0.0:80:80"
      - "0.0.0.0:443:443"
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./certs:/etc/nginx/certs
    extra_hosts:
      - "web:192.98.0.1"
    links:
      - web
    depends_on:
      - web

networks:
    mocal_net:
        ipam:
            driver: default
            config:
                - subnet: 192.98.0.0/24
*****************************************************************

Test için benim local makinemde 2 farklı ortamdan https://192.168.56.40 ip adresine " curl " komutu ile istek yaparak, nginx logunda yapılan bu isteklere dönen cevapları kontrol edelim.

Linux ortam

 
Sağ köşede akan loga bakarsanız 3004 porta ait erişilemedi ibaresi yok.
Windows ortam

" curl.sh " Aşağıdaki içeriği kopyalayıp, bash -x curl.sh olarak çalıştırarak testinizi yapabilirsiniz. 192.168.56.40 ip adresini kendi host makinenizin ip adresi ile değiştirmeyi unutmayın. 
#************************************
#!/bin/bash
while true 
do
clear
curl --insecure -I https://192.168.56.40
sleep 2
done
#************************************

Windows batch script;
" curl.bat "
#************************************
@echo off 
:x
cd /d "c:\curl\bin\"
curl.exe --insecure -l https://192.168.56.40 -v
echo Sunucu istegi yapildi.
TIMEOUT 2
cls
goto x
#************************************

Şimdi docker servisleri durdurmadan 1 instance çalışan web servisi 5 adet çalıştırmaya sıra geldi.  bu işlemi yapabilmek için aşağıdaki komutu kullanmalıyız.

docker-compose -f $FL up -d --force-recreate --no-deps --scale web=5 web

Görüldüğü üzere 3001'den 3005 portuna kadar 5 adet web servis başladı. Nginx logları akmakta, herhangi hatalı bir durum söz konusu değil. Browserdan adresi görüntüleyelim.

Nginx konfigürasyonu inceleyip paylaşımı bitirelim. Nginx konfigürasyon dosyası içeriği:
volumes:
      - ./nginx:/etc/nginx/conf.d
ile volume maping yaptığımız dosya içeriği;

*****************************************************************
map $http_upgrade $connection_upgrade {
        default   upgrade;
        ''        close;
}


upstream mocal {
#    ip_hash; ## sticky
#    least_conn; ## Yuke gore enaz
    server web:3001;
    server web:3002;
    server web:3003;
    server web:3004;
    server web:3005;
  }

  server {
    listen 80;
    server_name 192.168.56.40;
    return 301 https://$server_name$request_uri;
  }

  server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    ssl on;
    server_name _;
    gzip off;
    ssl_certificate     /etc/nginx/certs/foobar.crt;
    ssl_certificate_key /etc/nginx/certs/foobar.key;
    ssl_session_timeout 5m;
    ssl_ciphers     EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA;
    ssl_prefer_server_ciphers on;

    location / {
      proxy_pass http://mocal;
      proxy_redirect          off;
      proxy_next_upstream     error timeout invalid_header http_500;
      proxy_connect_timeout   2;
      proxy_set_header        Host            $host;
      proxy_set_header        X-Real-IP       $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

*****************************************************************

Location kısmında kısaca upstream sunuculardan kapalı yada erişilemez olanları 2 saniyede bir taraması ve çalışan sunuculara load balance yapması istenmekte, ayrıca " upstream mocal " kısmında " ip_hash; " sticky session oturum kalıcığı, "least_conn;" düşük bağlantı olan sunucuya yönlendirme ve round robin için ise bu alanı boş bırakmak server dışında bişi yazmamak gerekiyor. Sertifika oluşturmak için aşağıdaki komutları sırasıyla çalıştırmalı ülke, şehir, email gibi alanlar doldurularak sertifika oluşturulmalıdır.
  • openssl genrsa -out foobar.key 2048
  • openssl req -new -key foobar.key -out foobar.csr
  • openssl x509 -req -days 365 -in foobar.csr -signkey foobar.key -out foobar.crt



Başka bir paylaşımda görüşmek üzere, kendinize iyi bakın. Selda BAĞCAN ile veda ediyorum.

20 Haziran 2019 Perşembe

VAGRANT ile KURULAN SANAL SUNUCU ÜZERİNDE DJANGO FRAMEWORK İÇEREN DOCKER KONTEYNER OLUŞTURMAK

Selamlar, uzun zaman oldu görüşmeyeli. İki yıl kadar :)


Bu paylaşımda Vagrant ile sanal bir sunucu kurup (Centos 7.4), bu sunucu üzerinde iki docker container oluşturup, Django Framework ve reverse proxy konfigürasyonu yapılmış nginx kurulumları yapacağız.


Kurulum yapılan ortam: Ubuntu MATE "18.04.2" LTS

Hızlıca kurulum adımlarını listeliyorum.

1-) VAGRANT KULLANARAK SANAL MAKİNE OLUŞTURMAK

a) sudo su
b) lsb_release -a

c) apt-get update && apt-get install virtualbox && apt-get install vagrant
d) vagrant version

e) mkdir ~/vagrant_barikat
f) cd vagrant_barikat
g) vagrant init centos/7
h) vagrant up
i) vagrant ssh
j) virtualbox
2-) SANAL MAKİNEDE DOCKER SERVİS KURULUMU ve KONTEYNER OLUŞTURMA

  • ssh vagrant@localhost -p 2222 -i 


/home/mocal/vagrant_barikat/.vagrant/machines/default/virtualbox/private_key

  •  sudo su
  •  yum install -y yum-utils device-mapper-persistent-data lvm2
  •  yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
  •  yum install docker-ce docker-ce-cli containerd.io
  •  systemctl enable docker
  •  systemctl start docker
  •  docker run hello-world

Nginx docker container



  • docker pull nginx
  • network create --subnet=172.18.0.0/16 mocalnet
  • docker run --name nginx -d nginx
  • docker cp nginx:/etc/nginx /home/vagrant/nginx
  • yum install nano
  • nano /home/vagrant/nginx.conf
  • mkdir sites-enabled
  • nano sites-enabled/app1

  • cd ~
  • touch hosts
  • nano hosts

  • docker run -d -m 75MB --oom-kill-disable --memory-swappiness=0 --name nginx -v 
    /home/vagrant/hosts:/etc/hosts -v /home/vagrant/nginx.conf:/etc/nginx/nginx.conf:ro -v
    /home/vagrant/sites-enabled:/etc/nginx/sites-enabled -h nginx --net mocalnet --ip 172.18.0.2 -p 8080:80 nginx
  • docker ps

Django docker container

• python –version
• pip –version
• pip install django
• python -c "import django; print(django.get_version())"
• django-admin startproject mocal
• cd mocal
• nano requirements.txt
• nano Dockerfile
• cd mocal
• nano setttins.py --> ALLOWED_HOSTS = ['127.0.0.1',’app-1’]

• cd ~
• docker build -t venv
• docker run -d --name app-1 -h app-1 --net mocalnet --ip 172.18.0.3 -v
/home/vagrant/hosts:/etc/hosts -v /home/vagrant/mocal:/usr/src/app -p 9000:8000 venv
• docker ps

http://127.0.0.1:8080

• docker images

Sistem Tapoloji


Bonus
WatchDog Shell Script


#!/bin/sh
#author: Mehmet ÖCAL
while true
do
#
echo "" > /root/system.log
date=`date "+%d-%m-%Y"`
time=`date +%H:%M:%S`
ram=`free -m | awk 'NR==2{printf "Memory Usage: %s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'`
disk=`df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'`
cpu=`top -bn1 | grep load | awk '{printf "CPU Load: %.2f\n", $(NF-2)}'`
echo -e "$date\n \
$time\n \
$ram\n \
$disk\n \
$cpu\n " >> /root/system.log
#
a=`free -m | awk 'NR==3{printf "Memory Usage: %s/%sMB %.f\n", $3,$2,$3*100/$2 }' | awk '{ print $4}'`
if [ $a -ge 40 ]; then
echo "Swap alan temizleniyor `sh -c "sync; echo 3 > /proc/sys/vm/drop_caches" && sh -c "swapoff -a && swapon -a"`" >>
/root/system.log
else
echo "Swap alan normal" >> /root/system.log
fi
sleep 5
done



-----------------------------------------------------------------------------------------
• nano watchdog2.sh
• nano /etc/systemd/system/watchdog.service

• systemctl daemon-reload
• systemctl enable watchdog.service
• systemctl start watchdog.service

• systemctl status watchdog.service

• tail -f /root/system.log

Bir başka paylaşımda görüşmek üzere. Kendinize iyi bakın.




8 Eylül 2017 Cuma

Sysdig

Selamlar; 
Bu paylaşımda "Sysdig" isimli sistem izleme (system monitoring) yazılımından bahsedeceğim. Sysdig çeşitli kategoriler altında bilgi verme özelliğine sahip güçlü bir araç, paylaşımın ilerleyen kısımlarında bu katergoriler ve kullanımı ile ilgili örnekler vereceğim. Konuyu dağıtmadan hızlıca "sysdig" kurulumuna başlayalım. NOT: Kurulum ortamı olarak Ubuntu 16.04 LTS sürüm kullanılmıştır. sysdig web adresinden sysdig hakkında daha fazla bilgi alınabilir (Fedora türevleri redhat-centos kurulum ve rpm hakkında). Paylaşımlarım da  ağırlıklı olarak Debian ve Ubuntu tercih ediyorum, yakın zamanda Centos kurulumlarınada değineceğim.Sysdig "mikisoft windows,Linux (debian&fedora),OSX (Mac) ve Docker container  gibi farklı ortamlara kurulabilmekte) sysdig.org adresinden kurulum yönergeleri ve farklı dağıtımlara ait paketlere ulaşılmakta. 

Sysdig kurulum adımları;
1-)Hızlı Kurulum

curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | bash 
Yada
curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash

2-)Apt-get ile Kurulum

curl -s https://s3.amazonaws.com/download.draios.com/DRAIOS-GPG-KEY.public | apt-key add -
curl -s -o /etc/apt/sources.list.d/draios.list http://download.draios.com/stable/deb/draios.list
apt-get update
apt-get -y install linux-headers-$(uname -r)
apt-get -y install sysdig

3-)Paket ile Kurulumu

Kurulum paketlerine (deb/rpm/windows) packages adresinden ulaşabilirsiniz.
Debian ve Ubuntu için "dpkg -i paket-adı"
Fedora ve türevleri için "rpm -ivh paket-adı" komutları ile,tabiki bağımlılıkları 
çözmeniz kaydıyla kurulum yapabilirsiniz. 
Kurulumu tamamladığımıza göre, sysdig ile sunucumuzu izleyebiliriz.Anlatımın başında bahsettiğim kategori ve bunlara ait alt kırılım log kesitlerini örneklerle bu kısımda yapmaya başlayalım.

Aşağıdaki komut ile kategori/komut listesine ulaşılmakta
sudo sysdig -cl
Kategori/Komut hakkında ayrıntılı bilgi için;
sudo sysdig -i (httplog|httptop)
---------------------Kategori/Komut--------------------------------------------
Category: Application
---------------------
httplog         HTTP requests log
httptop         Top HTTP requests
memcachelog     memcached requests log

Category: CPU Usage
-------------------
spectrogram     Visualize OS latency in real time.
subsecoffset    Visualize subsecond offset execution time.
topcontainers_cpu
                Top containers by CPU usage
topprocs_cpu    Top processes by CPU usage

Category: Errors
----------------
topcontainers_error
                Top containers by number of errors
topfiles_errors Top files by number of errors
topprocs_errors top processes by number of errors

Category: I/O
-------------
echo_fds        Print the data read and written by processes.
fdbytes_by      I/O bytes, aggregated by an arbitrary filter field
fdcount_by      FD count, aggregated by an arbitrary filter field
fdtime_by       FD time group by
iobytes         Sum of I/O bytes on any type of FD
iobytes_file    Sum of file I/O bytes
spy_file        Echo any read/write made by any process to all files. Optionall
                y, you can provide the name of one file to only intercept reads
                /writes to that file.
stderr          Print stderr of processes
stdin           Print stdin of processes
stdout          Print stdout of processes
topcontainers_file
                Top containers by R+W disk bytes
topfiles_bytes  Top files by R+W bytes
topfiles_time   Top files by time
topprocs_file   Top processes by R+W disk bytes

Category: Logs
--------------
spy_logs        Echo any write made by any process to a log file. Optionally, e
                xport the events around each log message to file.
spy_syslog      Print every message written to syslog. Optionally, export the e
                vents around each syslog message to file.

Category: Misc
--------------
around          Export to file the events around the time range where the given
                 filter matches.

Category: Net
-------------
iobytes_net     Show total network I/O bytes
spy_ip          Show the data exchanged with the given IP address
spy_port        Show the data exchanged using the given IP port number
topconns        Top network connections by total bytes
topcontainers_net
                Top containers by network I/O
topports_server Top TCP/UDP server ports by R+W bytes
topprocs_net    Top processes by network I/O

Category: Performance
---------------------
bottlenecks     Slowest system calls
fileslower      Trace slow file I/O
netlower        Trace slow network I/0
proc_exec_time  Show process execution time
scallslower     Trace slow syscalls
topscalls       Top system calls by number of calls
topscalls_time  Top system calls by time

Category: Security
------------------
list_login_shells
                List the login shell IDs
shellshock_detect
                print shellshock attacks
spy_users       Display interactive user activity

Category: System State
----------------------
lscontainers    List the running containers
lsof            List (and optionally filter) the open file descriptors.
netstat         List (and optionally filter) network connections.
ps              List (and optionally filter) the machine processes.

Category: Tracers
-----------------
tracers_2_statsd
                Export spans duration as statds metrics.

Use the -i flag to get detailed information about a specific chisel
Kısa bir mola.

Category: Application

sudo su
sysdig -c httplog
Bu örnekte tomcat üzerinde koşan "postgresql studio" uygulamasına oturum açtım ve sysdig ile bu oturum ile ilgili logları listeledim.Bu arada ilerleyen zamanlarda postgresql ile ilgili bir paylaşım yapmayı planlamaktayım.Acil ihitiyacı olanlar için; https://hub.docker.com/r/mehmetocal79/ubuntu/ ubuntu 16.04 LTS base imaj üzerine utf8 postgresql-9.6 docker imajı yukarıdaki adresten pull edebilirsiniz.Docker kullanımı hakkında bilgi için ;
Docker Container
Category: CPU Usage

sudo su
sysdig -c topprocs_cpu
Docker container çalıştırıyorsanız ve bu containerlerin cpu kullanımlarını görmek istersek;
sysdig -c
topcontainers_cpu
Category: Errors

sysdig -c topprocs_errors
Category: I/O

sysdig -c topprocs_file
 Category: Logs

sysdig -c spy_logs
Category: Net

sysdig -c spy_port 5432
sysdig -c topports_server
sysdig -c spy_ip 172.18.0.20
Category: Performance

sysdig -c netlower 0
sysdig -c fileslower 0
Category: Security

Bu örnekte aynı sunucu üzerinde iki ssh oturumu açtım,(root ve mocal),root
root kullanıcı oturumunda aşağıdaki komutu çalıştıyorum ve mocal oturumunda
birkaç komut çalıştıracağım.
sysdig -c spy_users
 
mocal oturumunda çalıştırdığım komutlar.
Category: System State
sysdig -c lscontainers
Csysdig
Sysdig aracının grafik arayüzü, htop benzeri bir ekrana sahip kullanıcı dostu.
csysdig
Sysdig hakkında olabildiğince basit bilgiler vermeye çalıştım.Uygulamanın çok daha fazla özelliği bulunmakta "man sysdig" komutu ile daha ayrıntılı log ve monitoring komutları oluşturabilirsiniz.
Bu paylaşımında sonuna geldik,başka bir paylaşımda görüşmek üzere.Pentagram ile veda ediyorum.
Mehmet ÖCAL 2017
iletişim:mehmetocal79@gmail.com

24 Ağustos 2017 Perşembe

Çok Faydalı Bilgiler Bölüm 2


Selamlar;
Çok Faydalı Bilgiler Bölüm 2 ile yarım kalan anlatıma devam ediyorum. Bu kısımda root parola resetleme (sıfırlama) ve reverse proxy kurulumuna değineceğim.Girişi yaptığıma göre root parolası resetleme konusuna geçiyorum.
Root parolasını neden resetleyelim? Örneğin uzun zaman önce kurulmuş bir linux sisteminiz var ve  "root" parolasını unuttunuz yada "root" parolası değişmiş ve size bildirilmemiş ve müdahale etmeniz gerekli.Bu gibi durumlarda root parola resetleme işinize yarayabilir. 

Yazımı okurken kendinizi durdurulamaz bir hacker gibi hissetmeniz için "Nuri Alço-Operasyonu"ekliyorum.Bu bir hacker parçasıdır, dinlerken yazımı okumanızı rica ederim:)


GRUB menüye ulaşılmalı 
Bu ekrandayken "Ubuntu" seçilerek "e" tuşu ile editöre geçilmeli.
ilgili alana "single" parametresi eklenmeli ve F10 ile sistem başlatılmalı.Bu yöntem daha önce root parolası verilmiş sistemlerde "Give root Password for maintenance" şeklinde bir uyarı patlatabilir.Yani parolayı girmemizi istiyor. Sunucuda root user'a parola atanmış.Bu durumu çözmek için ikinci yönteme geçiyorum.
Yöntem iki, GRUB menüden "ubuntu" seçilmeli "e" butonu ile editöre geçilmeli ve "rw init=/bin/bash" parametresi eklendikten sonra "F10" ile sistem boot edilmelidir.
Merhaba kimse varmı??? Huu Huuuuuu.
NOT: Yukarıda anlattığım yöntemler sisteme müdahale içindir.Saçma sapan işler için kullanılmaması gerektiğini unutmayalım. Bu konununda sonuna geldik. - SON -
Apache reverse proxy hakkında kısaca bigi vererek anlatıma başlıyorum, ilk olarak reverse (ters) proxyi açılayım;Kullanıcılar görüntülemek istedikleri bir web sitesi için doğrudan web sunucusu yerine reverse proxy ile haberleşirler.Reverse Proxy ise kullanıcının istekleri doğrultusunda ilgilli web sitesine ait veriyi web sunucusundan çeker ve kullanıcıya iletir.Bu işlemi yaparken örneğin tomcat "8080"porttan yayın yaparken,biz bu sunucuya erişim için bir reverse proxy tanımlarsak,8080-->80 portuna yönledirebiliriz. Günümüzde nginx daha rabet görmekte,daha hızlı olduğu konularında paylaşımlar mevcut, onuda başka bir paylaşımda yada bu safyada reverse proxy nginx şeklinde anlatırım,henüz karar veremedim,bu konuya sonra değineceğim. Bu örnek kurulumda 2 adet sunucu mevcut, ilki Atlassian Bitbucket docker üzerinde varsayılan olarak 7990 port çıkışlı, reverse proxy bu sunucu üzerine kurmayacağım, başka bir sunucu üzerine kurarak, Atlassian Bitbucket'a ulaşmayı hedefliyorum.
A-) Apache reverse proxy kurulumu;
apt-get update
apt-get install -y apache2 aptitude libapache2-mod-proxy-html libxml2-dev
/etc/init.d/apache2 staus a2enmod proxy_http /etc/init.d/apache2 restart
cd /etc/apache2/sites-available/ ls -l touch bitbucket-docker.conf nano bitbucket-docker.conf ---> Dosyasına aşağıdaki içeriği yapıştırın # Atlassin Bitbucket Proxy Configuration: <VirtualHost *:80> ServerName bitbucket-docker <Proxy *> Order deny,allow Allow from all </Proxy> ProxyRequests Off ProxyPreserveHost On ProxyPass / http://bitbucket-docker:7990/ ProxyPassReverse / http://bitbucket-docker:7990/ </VirtualHost>
a2ensite bitbucket-docker.conf service apache2 reload service apache2 status
Kontrol etmeye sıra geldi. Bitbucket sunucu yönetim ekranına reverse proxy üzerinden ulaşmak için; http://reverse-proxy adresi browserda görüntülüyorum.Burada dns kaydı yoksa "hosts" dosyasına kendi tanımınızı ekleyebilirsiniz.Örnek: 192.168.168.168 bitbucket-docker gibi.
reverse proxy yani apache2 servisini durdurup bağlanmayı deniyorum.
http://bitbucket-docker adresini güncelliyorum.
Apache servisi tekrar start ediyorum.
http://bitbucket-docker adresini güncelliyorum.
Kısaca reverse proxy bu şekilde çalışmaktadır. - Bu konunun Sonu -
Bu paylaşımında sonuna geldik. Başka bir paylaşımda görüşmek üzere,kendinize iyi bakın.

Mehmet ÖCAL 2017
iletişim:mehmetocal79@gmail.com