Giriş: Yüksek Trafikli Sistemlerde Kesintisiz Çalışma (High Availability)
Modern kurumsal web altyapılarında %99.999 (Five Nines) erişilebilirlik, yılda 5 dakikadan az kesinti anlamına gelir. Tek bir sunucu (Single Point of Failure - SPOF) ne kadar güçlü olursa olsun; donanım arızaları, çekirdek çökmeleri veya ani trafik patlamaları karşısında çökmeye mahkûmdur.
Gerçek bir Yüksek Erişilebilirlik (High Availability - HA) mimarisi; akıllı DNS yönlendirmesi, sanal IP (VIP) tabanlı yük dengeleme, olay güdümlü asenkron ters vekil sunucular (Nginx Reverse Proxy) ve konteyner orkestrasyonunu (Docker Swarm / Kubernetes) katmanlı bir savunma olarak harmanlar.
[ Global Anycast DNS (Cloudflare / Route53) ]
│
┌───────────┴───────────┐
▼ ▼
[ Nginx Load Balancer 1 ] [ Nginx Load Balancer 2 ]
(Master - VRRP VIP) (Backup - VRRP VIP)
│ │
└───────────┬───────────┘
│ (Layer 7 Ingress Overlay)
┌─────────────────┼─────────────────┐
▼ ▼ ▼
[ App Node 1 ] [ App Node 2 ] [ App Node 3 ]
(Docker Replicas) (Docker Replicas) (Docker Replicas)
│ │ │
└─────────────────┼─────────────────┘
▼
[ Multi-Primary Replicated Database & Redis Cluster ]
1. Linux Çekirdek (Kernel & Sysctl) Ağ Optimizasyonu
Yüksek eşzamanlı bağlantılarda (C10K ve C100K problemleri), standart Linux çekirdek ayarları yetersiz kalır ve SYN Flood, TCP Socket Starvation veya Too many open files hataları üretir.
1.1 /etc/sysctl.conf ile Ağ Çekirdeği İyileştirmesi
Aşağıdaki çekirdek parametreleri, TCP soket tamponlarını (buffers), bağlantı kuyruklarını ve bekleme sürelerini yüksek verim için optimize eder:
# /etc/sysctl.d/99-high-performance-networking.conf
# 1. Soket ve Bağlantı Kuyruğu Kapasiteleri
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.core.netdev_max_backlog = 100000
# 2. TIME_WAIT Soketlerinin Yeniden Kullanımı ve Hızlı Kapanma
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
# 3. Dinamik Port Aralığı (Giden Bağlantılar İçin)
net.ipv4.ip_local_port_range = 1024 65535
# 4. TCP Tampon (Buffer) Boyutları (Read/Write Max: 16MB)
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# 5. SYN Cookies ile SYN Flood DDoS Koruması
net.ipv4.tcp_syncookies = 1
# 6. Dosya Tanımlayıcı (File Descriptors) Sınırları
fs.file-max = 2097152
Değişiklikleri anında uygulamak için:
sudo sysctl --system
2. Nginx Reverse Proxy: Olay Döngüsü (epoll) ve Yük Dengeleme
Nginx, her istek için ayrı bir iş parçacığı (thread) açmak yerine Linux'un epoll I/O multiplexing mekanizmasını kullanarak tek bir worker işlemcisiyle on binlerce eşzamanlı bağlantıyı sıfır CPU kaybıyla yönetir.
2.1 Üretim Seviyesi nginx.conf Yapılandırması
user nginx;
worker_processes auto;
worker_rlimit_nofile 100000;
pid /var/run/nginx.pid;
events {
worker_connections 20480;
use epoll;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Performans Direktifleri
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
keepalive_requests 10000;
reset_timedout_connection on;
# Gzip Sıkıştırma
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml font/woff2 image/svg+xml;
# Upstream Backend Havuzu (Keepalive Bağlantı Paylaşımı)
upstream backend_app_cluster {
least_conn; # En az yük taşıyan sunucuya yönlendir
server 10.0.0.11:8000 max_fails=3 fail_timeout=10s;
server 10.0.0.12:8000 max_fails=3 fail_timeout=10s;
server 10.0.0.13:8000 max_fails=3 fail_timeout=10s;
keepalive 64; # Backend ile TCP el sıkışmalarını tekrar kullan
}
server {
listen 80;
listen [::]:80;
server_name bilgiseli.net www.bilgiseli.net;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name bilgiseli.net;
ssl_certificate /etc/letsencrypt/live/bilgiseli.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/bilgiseli.net/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
location / {
proxy_pass http://backend_app_cluster;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Hızlı Yanıt ve Tamponlama
proxy_buffering on;
proxy_buffer_size 16k;
proxy_buffers 32 16k;
proxy_busy_buffers_size 64k;
proxy_connect_timeout 5s;
proxy_read_timeout 60s;
}
}
}
3. Keepalived ve VRRP Protokolü ile Sıfır Kesintili Sanal IP (VIP)
RFC 5798 (Virtual Router Redundancy Protocol) standardı, birden fazla Nginx yük dengeleyici arasında ortak bir Sanal IP (Floating Virtual IP - VIP) paylaşılmasını sağlar. Ana sunucu çökerse, yedek sunucu 1 saniye içinde VIP'yi devralır (Failover).
3.1 Master Düğüm keepalived.conf Örneği
vrrp_script check_nginx {
script "/usr/bin/killall -0 nginx"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass B1lg1s3l1_HAPass!
}
virtual_ipaddress {
10.0.0.100/24 # Sanal Floating IP
}
track_script {
check_nginx
}
}
4. Docker Swarm ile Mikroservis Orkestrasyonu ve Sıfır Kesintiyle Dağıtım (Zero-Downtime Rolling Update)
Docker Swarm, dahili Ingress Routing Mesh ve Overlay Network yetenekleri ile konteyner seviyesinde otomatik yük dengeleme sağlar.
4.1 Kurumsal docker-compose.yml Swarm Yığını
version: '3.8'
services:
app:
image: bilgiseli/core-app:latest
deploy:
replicas: 6
update_config:
parallelism: 2
delay: 10s
order: start-first
failure_action: rollback
restart_policy:
condition: on-failure
max_attempts: 3
environment:
- APP_ENV=production
- DB_HOST=db_cluster
networks:
- app-network
redis:
image: redis:7-alpine
command: redis-server --appendonly yes --requirepass "SecureClusterPass2026!"
deploy:
replicas: 1
placement:
constraints: [node.role == manager]
volumes:
- redis-data:/data
networks:
- app-network
networks:
app-network:
driver: overlay
attachable: true
volumes:
redis-data:
Dağıtımı başlatmak ve replikaları anında ölçeklemek için:
docker stack deploy -c docker-compose.yml bilgiseli_stack
docker service scale bilgiseli_stack_app=12
5. Sistem ve Network Katmanları Mühendislik Matrisi
| Katman | Teknoloji / Protokol | İşlev | Kesinti Toleransı |
|---|---|---|---|
| DNS Katmanı | Anycast DNS (BGP) | Global coğrafi yönlendirme & DDoS emilimi | %100 Yüksek |
| Giriş (Ingress) Katmanı | Keepalived + VRRP (VIP) | Yük dengeleyici yedekliliği (Master-Backup) | $< 1$ saniye failover |
| Ters Vekil (Proxy) Katmanı | Nginx (Layer 7 & Layer 4) | SSL Termination, HTTP/2, Gzip, Caching | Eşzamanlı $100K+$ req |
| Uygulama Katmanı | Docker Swarm (Overlay) | 6x Replikasyon, Rolling Update, Auto-Heal | Sıfır Kesinti (Zero Downtime) |
| Veri Katmanı | Galera Cluster / Redis Sentinel | Çift yönlü veri senkronizasyonu | Otomatik Quorum Seçimi |
6. Ağ Teşhis ve Geliştirici Araçları
Ağ bloklarınızı yapılandırmak ve IP alt ağlarını hesaplamak için Subnet & CIDR IP Hesaplayıcı aracımızı kullanabilir, DNS yayılımını doğrulamak için DNS & IP Lookup ve arka plan cron görevleriniz için Cron Tablosu Oluşturucu araçlarımızdan faydalanabilirsiniz. Ayrıca kurumsal ağ güvenliği için Zero Trust Savunma Mimarisi rehberimizi okuyabilirsiniz.
Sonuç
Yüksek erişilebilirlik bir şans değil; çekirdek seviyesindeki ince ayarlardan, konteyner orkestrasyonuna ve ağ fazlalığına (redundancy) kadar her katmanın titizlikle planlandığı bir mühendislik zaferidir.