Apache Traffic Server’ı Ubuntu 14.04 Üzerinde Ters Proxy Olarak Kurulumu ve Yapılandırması
Giriş
Günümüzün hızla değişen dijital dünyasında, web uygulamalarının performansı, güvenliği ve ölçeklenebilirliği kritik öneme sahiptir. Kullanıcı beklentileri arttıkça, arka uç sunucular üzerindeki yükü hafifletmek, içeriği daha hızlı sunmak ve güvenlik katmanlarını güçlendirmek için çeşitli mimari çözümler devreye girer. Bu çözümlerden biri de “Ters Proxy” (Reverse Proxy) kullanımıdır. Ters proxy, istemciden gelen istekleri doğrudan arka uç sunucuya iletmek yerine, bu istekleri kendi üzerine alıp işleyerek, gerektiğinde önbellekleme, yük dengeleme, SSL sonlandırma ve güvenlik filtreleme gibi ek hizmetler sunan bir aracı görevi görür.
Ters Proxy Nedir ve Neden Kullanılır?
Ters proxy, istemcilerin web sunucularına doğrudan erişmesini engelleyen, onların önünde duran bir sunucudur. İstemci, isteğini ters proxy’ye gönderir ve ters proxy bu isteği uygun arka uç sunucuya yönlendirir. Bu mimarinin birçok avantajı vardır:
* Yük Dengeleme (Load Balancing): Gelen istekleri birden fazla arka uç sunucuya dağıtarak sunucuların aşırı yüklenmesini önler ve uygulamanın kullanılabilirliğini artırır.
* Önbellekleme (Caching): Sık erişilen statik veya dinamik içerikleri önbelleğinde tutarak, arka uç sunucuların her istek için aynı veriyi tekrar tekrar üretme yükünü azaltır ve yanıt sürelerini önemli ölçüde hızlandırır.
* SSL Sonlandırma (SSL Offloading): SSL/TLS şifrelemesi ve çözme işlemlerini kendi üzerinde yaparak, arka uç sunucuların bu işlemden doğan CPU yükünü hafifletir.
* Güvenlik: Arka uç sunucuların IP adreslerini gizleyerek doğrudan saldırılara karşı bir kalkan görevi görür. Ayrıca, kötü niyetli istekleri filtreleyebilir.
* URL Yönlendirme ve Yeniden Yazma: Gelen URL’leri belirli kurallara göre farklı arka uç sunuculara veya farklı URL yollarına yönlendirebilir.
* Kesinti Süresini Azaltma: Bir arka uç sunucu çevrimdışı olduğunda, ters proxy isteği otomatik olarak başka bir sunucuya yönlendirebilir.
Apache Traffic Server (ATS) Nedir?
Apache Traffic Server (ATS), yüksek performanslı, ölçeklenebilir bir proxy sunucusu ve önbellek çözümüdür. Başlangıçta Yahoo! tarafından geliştirilen ve daha sonra Apache Yazılım Vakfı’na bağışlanan ATS, özellikle büyük ölçekli içerik dağıtım ağları (CDN) ve yüksek trafikli web siteleri için tasarlanmıştır. Güçlü önbellekleme yetenekleri, esnek yapılandırma seçenekleri ve modüler yapısı sayesinde, bir ters proxy olarak kullanıldığında web uygulamalarının performansını ve güvenilirliğini önemli ölçüde artırabilir.
Neden Ubuntu 14.04?
Ubuntu 14.04 “Trusty Tahr”, uzun süreli destek (LTS) sürümü olup, yayınlandığı dönemde ve sonrasında birçok sunucu ortamında yaygın olarak kullanılmıştır. Her ne kadar bu sürümün resmi desteği 2019 yılında sona ermiş olsa da, birçok eski sistem veya özel proje hala bu işletim sistemi üzerinde çalışmaya devam etmektedir. Bu makale, özellikle mevcut Ubuntu 14.04 altyapılarına Apache Traffic Server entegre etmek isteyen veya bu eski nesil sistemlerin nasıl yapılandırıldığını anlamak isteyen kullanıcılara yönelik bir rehber niteliğindedir. Yeni kurulumlar için daha güncel Ubuntu sürümleri (örneğin 20.04 LTS veya 22.04 LTS) önerilmektedir.
Bu makalede, Apache Traffic Server’ı Ubuntu 14.04 üzerinde bir ters proxy olarak nasıl kuracağınızı, temel yapılandırmalarını nasıl yapacağınızı ve SSL/TLS’yi nasıl etkinleştireceğinizi adım adım açıklayacağız.
Ön Gereksinimler
Kuruluma başlamadan önce aşağıdaki ön gereksinimlerin karşılandığından emin olun:
* Ubuntu 14.04 Sunucusu: Minimum 2 GB RAM ve 2 CPU çekirdeği önerilir. Disk alanı, önbellekleme için ayrılacak boyuta göre değişir.
* Root veya sudo yetkileri: Kurulum ve yapılandırma işlemleri için yönetici yetkileri gereklidir.
* Temel Ağ Bilgisi: IP adresleri, portlar ve DNS hakkında temel bilgiye sahip olmak faydalıdır.
* Arka Uç Sunucular: ATS’nin istekleri yönlendireceği en az bir çalışan web sunucusu (Apache HTTP Server, Nginx vb.) olmalıdır. Bu sunucunun IP adresi ve portu bilinmelidir.
* İnternet Bağlantısı: Gerekli paketleri indirmek ve ATS kaynak kodunu çekmek için aktif bir internet bağlantısı gereklidir.
* DNS Yapılandırması (İsteğe Bağlı ama Önerilir): ATS’nin ters proxy olarak hizmet vereceği alan adının (örneğin example.com), ATS sunucusunun genel IP adresine işaret etmesi gerekmektedir.
Sistem Güncellemesi ve Temel Paketlerin Kurulumu
Kuruluma başlamadan önce sistemin güncel olduğundan ve gerekli derleme bağımlılıklarının yüklü olduğundan emin olalım. Ubuntu 14.04 depolarında ATS’nin eski bir sürümü bulunabilir, ancak en güncel özellikler ve performans iyileştirmeleri için kaynak koddan derlemek genellikle tercih edilen yöntemdir.
1. Sistem Güncellemesi:
sudo apt-get update
sudo apt-get upgrade -y
2. Gerekli Derleme Bağımlılıklarının Kurulumu:
ATS’yi kaynak koddan derlemek için bir dizi geliştirme aracına ve kütüphaneye ihtiyacımız olacak.
sudo apt-get install -y build-essential libtool autoconf automake libssl-dev libpcre3-dev tcl-dev libcap-dev pkg-config libncurses5-dev libhwloc-dev libxml2-dev zlib1g-dev liblzma-dev libjemalloc-dev
Bu komut, derleme için gerekli olan C/C++ derleyicisi, otomatik yapılandırma araçları, SSL kütüphaneleri, düzenli ifade kütüphaneleri ve diğer bağımlılıkları yükleyecektir. libjemalloc-dev özellikle bellek yönetimi optimizasyonları için önerilir.
Apache Traffic Server Kaynak Kodundan Derleme ve Kurulumu
Ubuntu 14.04 depolarındaki ATS sürümü eski olabileceğinden, en güncel ve kararlı sürümü Apache Traffic Server web sitesinden indirip kaynak koddan derlemek en iyi yaklaşımdır. Bu, aynı zamanda belirli özelliklerin (SPDY, TLS on MUX gibi) etkinleştirilmesine olanak tanır.
1. ATS Kaynak Kodunu İndirme:
En güncel kararlı sürümü Apache Traffic Server’ın resmi web sitesinden (http://trafficserver.apache.org/downloads) kontrol edin. Bu makale yazıldığı sırada ATS 9.x veya 10.x sürümleri günceldir. Ubuntu 14.04’te derleme yaparken, eski kütüphane versiyonları nedeniyle bazı yeni ATS versiyonlarında sorun yaşanabilir. Genellikle 6.x veya 7.x serisi daha uyumlu olabilir, ancak en güncel stabil sürümü deneyin. Örnek olarak, 7.1.10 sürümünü kullanalım:
cd /usr/local/src
sudo wget https://archive.apache.org/dist/trafficserver/trafficserver-7.1.10.tar.bz2
sudo tar -xvf trafficserver-7.1.10.tar.bz2
cd trafficserver-7.1.10
Not: tar.bz2 yerine tar.gz uzantılı bir dosya indirirseniz, tar -xvf komutu otomatik olarak doğru sıkıştırma türünü algılar.
2. Yapılandırma (Configure):
configure betiğini çalıştırarak derleme seçeneklerini belirleriz. ATS’yi /opt/ats dizinine kurmayı tercih edeceğiz. Ayrıca, bazı yararlı özellikleri etkinleştirebiliriz.
sudo ./configure \
--prefix=/opt/ats \
--with-user=ats \
--with-group=ats \
--enable-spdy \
--enable-tls-on-mux \
--enable-experimental-plugins \
--enable-example-plugins \
--disable-rpath \
--enable-cpp11
* --prefix=/opt/ats: ATS’nin kurulacağı dizini belirtir.
* --with-user=ats --with-group=ats: ATS süreçlerinin çalışacağı kullanıcı ve grubu belirler. Henüz oluşturmadık, bir sonraki adımda oluşturacağız.
* --enable-spdy: SPDY protokol desteğini etkinleştirir (eski bir protokol, HTTP/2’ye geçmiştir).
* --enable-tls-on-mux: TLS multiplexing desteğini etkinleştirir.
* --enable-experimental-plugins: Deneysel eklentileri etkinleştirir.
* --enable-example-plugins: Örnek eklentileri etkinleştirir.
* --disable-rpath: RPATH kullanımını devre dışı bırakır.
* --enable-cpp11: C++11 standartlarını etkinleştirir, modern derleyiciler için önerilir.
3. Derleme (Make):
sudo make -j$(nproc)
-j$(nproc) seçeneği, işlemcinizin çekirdek sayısı kadar paralel derleme işi başlatarak derleme süresini kısaltır.
4. Kurulum (Make Install):
sudo make install
Bu komut, derlenmiş dosyaları --prefix ile belirttiğimiz /opt/ats dizinine kopyalar.
5. Kullanıcı ve Grup Oluşturma:
ATS süreçlerinin güvenli bir şekilde çalışması için özel bir kullanıcı ve grup oluşturalım.
sudo adduser --system --no-create-home --group ats
sudo chown -R ats:ats /opt/ats
Bu komutlar ats adında bir sistem kullanıcısı ve grubu oluşturur, ardından /opt/ats dizininin sahipliğini bu kullanıcı ve gruba verir.
6. Ortam Değişkenleri ve PATH Ayarı (İsteğe Bağlı ama Önerilir):
ATS komutlarını (örneğin traffic_ctl) her yerden çalıştırabilmek için PATH değişkenine ekleyebiliriz.
echo 'export PATH=$PATH:/opt/ats/bin:/opt/ats/sbin' | sudo tee /etc/profile.d/ats.sh
source /etc/profile.d/ats.sh
Bu, bir sonraki oturumda veya source komutuyla hemen geçerli olacaktır.
Apache Traffic Server Temel Yapılandırması
ATS’nin yapılandırma dosyaları genellikle /opt/ats/etc/trafficserver dizininde bulunur. Bu dizindeki en önemli dosyalar records.config, remap.config ve storage.config‘dir.
1. records.config – Temel Sistem Ayarları:
Bu dosya, ATS’nin genel davranışını kontrol eden ana yapılandırma dosyasıdır. Proxy portları, önbellek ayarları ve genel sistem parametreleri burada tanımlanır.
sudo nano /opt/ats/etc/trafficserver/records.config
Aşağıdaki ayarları kontrol edin veya ekleyin:
# HTTP ve HTTPS için dinlenecek portlar
CONFIG proxy.config.http.server_ports STRING 80 443
# Gelen isteklerin remap.config kurallarına göre yönlendirilmesini zorunlu kılar.
# Ters proxy için bu AÇIK olmalıdır.
CONFIG proxy.config.url_remap.remap_required INT 1
# Önbellek boyutunu RAM'de belirler (örnek: 100 MB)
CONFIG proxy.config.cache.ram_cache.size INT 100M
# Önbellek dizinini belirtir (storage.config ile birlikte kullanılır)
CONFIG proxy.config.cache.dir VARCHAR /var/cache/ats
# SSL/TLS yapılandırması için sertifika ve anahtar yolları
# Bu yollar ssl_multicert.config'de tanımlanacak sertifikalar için varsayılan olabilir.
CONFIG proxy.config.ssl.server.cert.path VARCHAR /opt/ats/etc/trafficserver/ssl
CONFIG proxy.config.ssl.server.private_key.path VARCHAR /opt/ats/etc/trafficserver/ssl
CONFIG proxy.config.ssl.server.multicert.filename VARCHAR ssl_multicert.config
# ATS'nin trafik yöneticisi ve sunucu süreçlerini başlatmasını sağlar.
CONFIG proxy.config.cluster.type INT 0 # Standalone mod
Diğer ayarlar varsayılan olarak bırakılabilir veya ihtiyaca göre ayarlanabilir. Özellikle proxy.config.url_remap.remap_required ayarının 1 olması, ters proxy olarak çalışmak için kritik öneme sahiptir.
2. storage.config – Önbellek Depolama Ayarları:
Bu dosya, ATS’nin önbelleği için hangi disk alanlarını kullanacağını tanımlar. Bir dizin veya doğrudan bir disk bölümü belirtebilirsiniz.
sudo nano /opt/ats/etc/trafficserver/storage.config
Örnek olarak, /var/cache/ats dizinini 10 GB önbellek alanı olarak kullanalım:
/var/cache/ats 10G
* Önemli: Belirttiğiniz dizinin var olduğundan ve ats kullanıcısının yazma izinlerine sahip olduğundan emin olun:
sudo mkdir -p /var/cache/ats
sudo chown -R ats:ats /var/cache/ats
Eğer ayrı bir disk bölümü kullanmak isterseniz (örneğin /dev/sdb), bunu da belirtebilirsiniz:
/dev/sdb 100G
Ancak bu durumda bölümün biçimlendirilmiş ve ATS kullanıcısının erişebileceği şekilde bağlı olması gerekir.
3. remap.config – Ters Proxy Yönlendirme Kuralları:
Bu dosya, ATS’nin hangi gelen isteği hangi arka uç sunucuya yönlendireceğini tanımlayan en önemli dosyadır. Her bir kural map anahtar kelimesiyle başlar.
sudo nano /opt/ats/etc/trafficserver/remap.config
Örnek kurallar:
# HTTP isteği için basit ters proxy
# Gelen istek: http://example.com
# Yönlendirilecek arka uç: http://192.168.1.100:8080
map http://example.com http://192.168.1.100:8080
# HTTPS isteği için ters proxy (SSL sonlandırma ATS üzerinde)
# Gelen istek: https://secure.example.com
# Yönlendirilecek arka uç: http://192.168.1.101:8080 (ATS arka uca HTTP ile bağlanır)
map https://secure.example.com http://192.168.1.101:8080
# HTTPS isteği için ters proxy (ATS arka uca HTTPS ile bağlanır)
# Gelen istek: https://api.example.com
# Yönlendirilecek arka uç: https://192.168.1.102:443 (ATS arka uca HTTPS ile bağlanır)
map https://api.example.com https://192.168.1.102:443
# Varsayılan bir kural (hiçbir kural eşleşmezse)
# map http://* http://default_backend_server:8080
* Sözdizimi: map
* gelen_URL: İstemcinin ATS’ye yaptığı isteğin URL’si (protokol ve ana bilgisayar adı dahil).
* yönlendirilecek_arka_uç_URL: İsteğin yönlendirileceği arka uç sunucunun URL’si (protokol, IP adresi/ana bilgisayar adı ve port dahil).
Birden fazla arka uç sunucu için yük dengeleme, varsayılan olarak round-robin (sırayla) algoritması ile sağlanır. Aynı gelen_URL için birden fazla map kuralı tanımlayarak bunu yapabilirsiniz:
map http://loadbalanced.example.com http://192.168.1.200:8080
map http://loadbalanced.example.com http://192.168.1.201:8080
map http://loadbalanced.example.com http://192.168.1.202:8080
Bu durumda, loadbalanced.example.com adresine gelen istekler sırasıyla 192.168.1.200, 192.168.1.201 ve 192.168.1.202 sunucularına yönlendirilecektir.
SSL/TLS Yapılandırması
ATS’nin HTTPS isteklerini işleyebilmesi için SSL/TLS sertifikalarını yapılandırmanız gerekir. Bu işlem, genellikle ssl_multicert.config ve records.config dosyalarında yapılır.
1. SSL Sertifikaları İçin Dizin Oluşturma:
Öncelikle sertifika ve özel anahtar dosyalarını saklamak için bir dizin oluşturalım:
sudo mkdir -p /opt/ats/etc/trafficserver/ssl
sudo chown -R ats:ats /opt/ats/etc/trafficserver/ssl
sudo chmod 700 /opt/ats/etc/trafficserver/ssl
Sertifika ve anahtar dosyalarını bu dizine kopyalayın. Örneğin, example.com.crt ve example.com.key. Özel anahtar dosyasının izinlerinin sadece ats kullanıcısı tarafından okunabilir olduğundan emin olun (chmod 400 example.com.key).
2. ssl_multicert.config – Çoklu Sertifika Yapılandırması:
Bu dosya, ATS’nin farklı alan adları için birden fazla SSL sertifikasını nasıl yöneteceğini belirler.
sudo nano /opt/ats/etc/trafficserver/ssl_multicert.config
Aşağıdaki formatta sertifika bilgilerinizi ekleyin:
# example.com için sertifika
dest_ip=* ssl_cert_name=example.com.crt ssl_key_name=example.com.key
# secure.example.com için sertifika
# dest_ip=* ssl_cert_name=secure.example.com.crt ssl_key_name=secure.example.com.key
dest_ip=: Gelen bağlantının hangi IP adresine yapıldığına bakılmaksızın bu sertifikanın kullanılacağı anlamına gelir. Birden fazla sertifikanız varsa ve SNI (Server Name Indication) kullanıyorsanız bu yeterlidir.
* ssl_cert_name: Sertifika dosyasının adını belirtir.
* ssl_key_name: Özel anahtar dosyasının adını belirtir.
Not: Sertifika ve anahtar dosyalarının records.config içinde tanımlanan proxy.config.ssl.server.cert.path ve proxy.config.ssl.server.private_key.path yollarında bulunduğundan emin olun. Varsayılan olarak /opt/ats/etc/trafficserver/ssl olarak ayarladık.
3. records.config içinde SSL Ayarları:
Daha önce records.config dosyasında şu satırları eklemiştik:
CONFIG proxy.config.ssl.server.cert.path VARCHAR /opt/ats/etc/trafficserver/ssl
CONFIG proxy.config.ssl.server.private_key.path VARCHAR /opt/ats/etc/trafficserver/ssl
CONFIG proxy.config.ssl.server.multicert.filename VARCHAR ssl_multicert.config
Bu ayarlar, ATS’ye sertifikaları ve özel anahtarları nerede bulacağını ve hangi çoklu sertifika yapılandırma dosyasını kullanacağını söyler.
ATS Servisinin Başlatılması ve Yönetimi
ATS’yi kurup yapılandırdıktan sonra, servisi başlatabilir ve yönetebiliriz. ATS, traffic_manager (yönetim süreci) ve traffic_server (ana proxy süreci) olmak üzere iki ana süreçten oluşur.
1. ATS Servisini Başlatma:
İlk kez başlatırken, ATS önbellek dizinlerini oluşturması ve başlatması için traffic_cop yardımcı programını kullanır.
sudo /opt/ats/bin/traffic_cop -C
sudo /opt/ats/bin/traffic_ctl server start
traffic_cop -C komutu, storage.config dosyasında belirtilen önbellek birimlerini başlatır. Ardından traffic_ctl server start ile ATS servisi başlatılır.
2. ATS Servisini Yönetme:
ATS’yi yönetmek için traffic_ctl komutunu kullanırız:
* Durum Kontrolü:
sudo /opt/ats/bin/traffic_ctl status
* Durdurma:
sudo /opt/ats/bin/traffic_ctl server stop
* Yeniden Başlatma:
sudo /opt/ats/bin/traffic_ctl server restart
* Yapılandırmayı Yeniden Yükleme (servisi durdurmadan):
sudo /opt/ats/bin/traffic_ctl config reload
Bu komut, records.config, remap.config ve ssl_multicert.config gibi dosyaları servisi yeniden başlatmadan günceller. Ancak, storage.config veya dinleme portları gibi bazı temel değişiklikler için tam yeniden başlatma gerekebilir.
3. Sistem Başlangıcında Otomatik Başlatma (Init.d Scripti):
Ubuntu 14.04, SysVinit veya Upstart kullanır. ATS’nin sistem başlangıcında otomatik olarak başlaması için bir init.d scripti oluşturabiliriz.
sudo nano /etc/init.d/trafficserver
Aşağıdaki içeriği yapıştırın:
#!/bin/bash
### BEGIN INIT INFO
# Provides: trafficserver
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Apache Traffic Server
# Description: Apache Traffic Server is a fast, scalable and extensible caching proxy server.
### END INIT INFO
ATS_HOME="/opt/ats"
ATS_BIN="${ATS_HOME}/bin"
ATS_SBIN="${ATS_HOME}/sbin"
ATS_LOGDIR="${ATS_HOME}/var/log/trafficserver"
ATS_RUNDIR="${ATS_HOME}/var/run/trafficserver"
ATS_USER="ats"
export PATH="${ATS_BIN}:${ATS_SBIN}:${PATH}"
case "$1" in
start)
echo -n "Starting Apache Traffic Server: "
mkdir -p ${ATS_LOGDIR}
mkdir -p ${ATS_RUNDIR}
chown ${ATS_USER}:${ATS_USER} ${ATS_LOGDIR} ${ATS_RUNDIR}
su -s /bin/bash ${ATS_USER} -c "${ATS_BIN}/traffic_cop -C"
su -s /bin/bash ${ATS_USER} -c "${ATS_BIN}/traffic_ctl server start"
echo "Done."
;;
stop)
echo -n "Stopping Apache Traffic Server: "
su -s /bin/bash ${ATS_USER} -c "${ATS_BIN}/traffic_ctl server stop"
echo "Done."
;;
restart)
echo -n "Restarting Apache Traffic Server: "
su -s /bin/bash ${ATS_USER} -c "${ATS_BIN}/traffic_ctl server restart"
echo "Done."
;;
reload)
echo -n "Reloading Apache Traffic Server config: "
su -s /bin/bash ${ATS_USER} -c "${ATS_BIN}/traffic_ctl config reload"
echo "Done."
;;
status)
su -s /bin/bash ${ATS_USER} -c "${ATS_BIN}/traffic_ctl status"
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
;;
esac
exit 0
Scripti kaydettikten sonra çalıştırılabilir hale getirin ve sistem başlangıcına ekleyin:
sudo chmod +x /etc/init.d/trafficserver
sudo update-rc.d trafficserver defaults
Artık servisi sudo service trafficserver start|stop|restart|reload|status komutlarıyla yönetebilirsiniz.
Test ve Doğrulama
ATS servisi çalışmaya başladıktan sonra, her şeyin doğru yapılandırıldığını doğrulamak için testler yapmalıyız.
1. Port Dinleme Kontrolü:
ATS’nin HTTP (80) ve HTTPS (443) portlarını dinleyip dinlemediğini kontrol edin:
sudo netstat -tulnp | grep traffic_server
Çıktıda 80 ve 443 portlarının traffic_server süreci tarafından dinlendiğini görmelisiniz.
2. HTTP/HTTPS Erişimi:
* Curl ile Test:
ATS’nin ters proxy olarak hizmet verdiği alan adını kullanarak bir HTTP veya HTTPS isteği gönderin:
curl -I http://example.com
curl -I https://secure.example.com
X-Cache veya Via gibi başlıkları kontrol ederek isteğin ATS üzerinden geçtiğini ve önbelleğe alınıp alınmadığını görebilirsiniz. Örneğin, X-Cache: HIT önbellekten sunulduğunu gösterir.
* Tarayıcı ile Test:
Web tarayıcınızdan alan adınıza erişmeye çalışın. İçeriğin arka uç sunucunuzdan beklendiği gibi geldiğinden emin olun. Geliştirici araçlarını kullanarak ağ isteklerini inceleyebilir ve HTTP başlıklarını kontrol edebilirsiniz.
3. ATS Metriklerini Kontrol Etme:
ATS, performans ve kullanım istatistiklerini izlemek için zengin bir metrik sistemi sunar.
sudo /opt/ats/bin/traffic_ctl metric get proxy.process.http.total_requests
sudo /opt/ats/bin/traffic_ctl metric get proxy.process.cache.lookup_hits
sudo /opt/ats/bin/traffic_ctl metric get proxy.process.cache.lookup_misses
Bu komutlar, ATS’nin kaç istek aldığını, önbellek isabet ve isabet kaçırma oranlarını gösterir.
4. Log Dosyalarını Kontrol Etme:
ATS’nin log dosyaları /opt/ats/var/log/trafficserver dizininde bulunur.
* diags.log: Hata ve uyarı mesajlarını içerir.
* access.log: Gelen HTTP/HTTPS isteklerini kaydeder.
* error.log: Genel hataları içerir.
Bu dosyaları düzenli olarak kontrol etmek, sorunları tespit etmek için önemlidir.
İleri Düzey Yapılandırma ve Optimizasyon İpuçları
ATS, çok sayıda ileri düzey yapılandırma seçeneği sunar. İşte bazı önemli noktalar:
1. Yük Dengeleme Algoritmaları:
remap.config içinde round-robin dışında farklı yük dengeleme algoritmaları da kullanabilirsiniz. Örneğin, least-conns (en az bağlantısı olan sunucuya yönlendir) veya consistent-hash (belirli bir istemciyi her zaman aynı sunucuya yönlendir).
# least-conns algoritması ile yük dengeleme
map http://loadbalanced.example.com http://192.168.1.200:8080 http://192.168.1.201:8080 @strategy=least-conns
2. Önbellekleme Politikaları:
cache.config dosyası, ATS’nin hangi içerikleri önbelleğe alıp almayacağını, ne kadar süreyle tutacağını ve hangi koşullarda yeniden doğrulanacağını daha detaylı bir şekilde kontrol etmenizi sağlar.
sudo nano /opt/ats/etc/trafficserver/cache.config
Örnek: Belirli bir URL yolunu önbelleğe alma
cache http://example.com/static/*
records.config içindeki proxy.config.http.cache.* ayarları da genel önbellekleme davranışını etkiler.
3. GZIP Sıkıştırma:
ATS, arka uç sunucudan gelen yanıtları istemciye iletmeden önce sıkıştırabilir veya arka uç sunucudan sıkıştırılmış içeriği doğrudan iletebilir. plugin.config ve header_rewrite eklentisi ile bu kontrol edilebilir.
4. HTTP/2 Desteği:
Eğer ATS’yi --enable-http2 (veya eski sürümlerde --enable-spdy) seçeneğiyle derlediyseniz, HTTP/2 protokolünü kullanabilirsiniz. Bu, records.config dosyasında etkinleştirilir:
CONFIG proxy.config.http.server_ports STRING 80 443:proto=http:proto=http2
5. Eklentiler (Plugins):
ATS, modüler bir yapıya sahiptir ve C++ veya Lua gibi dillerde yazılmış eklentilerle işlevselliği genişletilebilir.
* header_rewrite: HTTP başlıklarını yeniden yazmak için.
* lua: Lua betikleriyle gelişmiş mantık yürütmek için.
* esi: ESI (Edge Side Includes) işlemek için.
Eklentiler plugin.config dosyasında etkinleştirilir:
sudo nano /opt/ats/etc/trafficserver/plugin.config
Örnek: Header Rewrite eklentisini etkinleştirme
header_rewrite.so
Ardından, remap.config içinde bu eklentinin kurallarını tanımlamanız gerekebilir.
6. Güvenlik İpuçları:
* Firewall: ATS sunucunuzda bir güvenlik duvarı (ufw veya iptables) etkinleştirin ve sadece gerekli portlara (80, 443) dışarıdan erişime izin verin.
* ATS Kullanıcısı: ATS’yi root yerine ats gibi ayrıcalıksız bir kullanıcı ile çalıştırdığınızdan emin olun (kurulum adımlarında bunu yaptık).
* Güncel Tutma: Güvenlik açıklarına karşı ATS’yi ve işletim sistemini düzenli olarak güncelleyin.
Sorun Giderme
Kurulum veya yapılandırma sırasında sorunlarla karşılaşmak doğaldır. İşte bazı yaygın sorunlar ve çözümleri:
1. ATS Başlamıyor veya Hata Veriyor:
* Log Dosyalarını Kontrol Edin: /opt/ats/var/log/trafficserver/diags.log ve error.log dosyaları en önemli bilgi kaynaklarıdır. Hata mesajlarını dikkatlice okuyun.
* Yapılandırma Dosyası Sözdizimi: records.config, remap.config veya ssl_multicert.config dosyalarında sözdizimi hataları olabilir. traffic_ctl config validate komutu bazı hataları yakalamaya yardımcı olabilir.
* İzinler: ATS’nin log dizinlerine, önbellek dizinlerine ve sertifika/anahtar dosyalarına erişim izinlerinin doğru olduğundan emin olun (ats kullanıcısı).
* Port Çakışmaları: Başka bir servis (örneğin Apache veya Nginx) zaten 80 veya 443 portunu dinliyor olabilir. sudo netstat -tulnp komutuyla kontrol edin.
2. Web Sitesi Erişilemiyor veya Hatalı Davranıyor:
* remap.config Kontrolü: Yönlendirme kurallarının doğru olduğundan emin olun. Gelen URL’nin (protokol, ana bilgisayar adı) arka uç URL’siyle doğru eşleştiğinden emin olun.
* Arka Uç Sunucu Durumu: Arka uç sunucunuzun çalışır durumda olduğundan ve ATS’den gelen isteklere yanıt verdiğinden emin olun. Doğrudan arka uç sunucuya erişmeyi deneyin (örneğin curl http://backend_ip:port).
* DNS Ayarları: Alan adınızın ATS sunucusunun IP adresine işaret ettiğinden emin olun.
* SSL Sertifikaları: HTTPS kullanıyorsanız, sertifika ve özel anahtar dosyalarının doğru yolda olduğundan, izinlerinin doğru olduğundan ve ssl_multicert.config dosyasının doğru yapılandırıldığından emin olun.
3. Önbellek Çalışmıyor:
* storage.config: Önbellek depolama alanının doğru tanımlandığından ve ATS kullanıcısının bu dizine yazma izinleri olduğundan emin olun.
* records.config: proxy.config.cache.ram_cache.size ve proxy.config.cache.dir gibi önbellek ayarlarının etkinleştirildiğinden emin olun.
* HTTP Başlıkları: Arka uç sunucunuzdan gelen HTTP yanıt başlıklarını kontrol edin (Cache-Control, Expires). Bu başlıklar önbellekleme davranışını doğrudan etkiler. ATS, no-cache veya no-store gibi başlıkları içeren yanıtları önbelleğe almayacaktır.
Sonuç
Bu makalede, Apache Traffic Server’ı Ubuntu 14.04 üzerinde bir ters proxy olarak nasıl kuracağınızı ve yapılandıracağınızı ayrıntılı olarak ele aldık. Kaynak koddan derleme adımlarından, temel yapılandırma dosyalarının düzenlenmesine, SSL/TLS etkinleştirmeye ve servisin yönetimine kadar tüm süreçleri adım adım inceledik.
Apache Traffic Server, yüksek performanslı önbellekleme ve yük dengeleme yetenekleriyle web uygulamalarınızın performansını, güvenliğini ve ölçeklenebilirliğini önemli ölçüde artırabilecek güçlü bir araçtır. Ubuntu 14.04 gibi eski nesil sistemlerde bile doğru yapılandırma ile modern web ihtiyaçlarını karşılayabilir. Ancak, yeni kurulumlar için her zaman daha güncel ve desteklenen işletim sistemi sürümlerini tercih etmek, güvenlik ve sürdürülebilirlik açısından kritik öneme sahiptir. Bu rehber, mevcut eski sistemlerinizi optimize etmeniz veya ATS’nin çalışma prensiplerini daha iyi anlamanız için bir başlangıç noktası sağlamıştır.
