{"id":5756,"date":"2026-09-25T17:45:38","date_gmt":"2026-09-25T14:45:38","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/?p=5756"},"modified":"2026-09-25T06:27:03","modified_gmt":"2026-09-25T03:27:03","slug":"load-balancer-nedir-health-check-sticky-session","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/load-balancer-nedir-health-check-sticky-session\/","title":{"rendered":"Load Balancer Nedir? Health Check ve Sticky Session"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div class=\"aiw-summary\">\n<p class=\"aiw-box-title\">H\u0131zl\u0131 \u00f6zet<\/p>\n<p>Load balancer, gelen istekleri birden fazla sunucuya da\u011f\u0131tan katmand\u0131r. Health check, hangi sunucunun ger\u00e7ekten istek kabul edebildi\u011fini \u00f6l\u00e7er; sticky session ise ayn\u0131 kullan\u0131c\u0131y\u0131 m\u00fcmk\u00fcn oldu\u011funca ayn\u0131 sunucuya y\u00f6nlendirir. Sa\u011flam bir mimaride bu \u00fc\u00e7 konu, oturum ve hata y\u00f6netimiyle birlikte ele al\u0131n\u0131r.<\/p>\n<ul>\n<li>Health check yaln\u0131zca sunucunun ayakta oldu\u011funu de\u011fil, uygulaman\u0131n trafik kar\u015f\u0131lamaya haz\u0131r oldu\u011funu do\u011frulamal\u0131d\u0131r.<\/li>\n<li>Sticky session ge\u00e7ici bir uyumluluk \u00e7\u00f6z\u00fcm\u00fcd\u00fcr; oturum verisini ortak bir depoya ta\u015f\u0131mak daha esnek \u00f6l\u00e7ekleme sa\u011flar.<\/li>\n<li>TLS sonland\u0131rma, istemci ile load balancer aras\u0131ndaki \u015fifreli ba\u011flant\u0131n\u0131n nerede a\u00e7\u0131laca\u011f\u0131n\u0131 belirler.<\/li>\n<li>Kontrol u\u00e7 noktas\u0131n\u0131 etkinle\u015ftirmek ile bu u\u00e7 noktaya g\u00fcvenli eri\u015fim tan\u0131mlamak ayr\u0131 i\u015flemlerdir.<\/li>\n<\/ul>\n<\/div>\n<p>Birden fazla web sunucusuna ge\u00e7meyi d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fczde ilk beklenti genellikle basittir: Gelen trafi\u011fi sunucular aras\u0131nda payla\u015ft\u0131rmak. Ancak kullan\u0131c\u0131lar\u0131n oturumdan d\u00fc\u015fmesi, al\u0131\u015fveri\u015f sepetlerinin bo\u015f g\u00f6r\u00fcnmesi veya ar\u0131zal\u0131 bir sunucuya istek gitmeye devam etmesi, yaln\u0131zca trafik da\u011f\u0131t\u0131m\u0131n\u0131n yeterli olmad\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<p>Bu nedenle &#8220;load balancer nedir health check&#8221; sorusunun yan\u0131t\u0131, tek bir cihaz\u0131n g\u00f6rev tan\u0131m\u0131ndan daha geni\u015ftir. Load balancer istekleri se\u00e7er, health check uygun hedefleri belirler, sticky session ise oturum durumunun sunucular aras\u0131nda nas\u0131l davranaca\u011f\u0131n\u0131 etkiler. Bu kararlar\u0131 \u00fc\u00e7 par\u00e7ay\u0131 birlikte d\u00fc\u015f\u00fcnerek verebilirsiniz.<\/p>\n<div id=\"toc_container\" role=\"navigation\" aria-label=\"Table of Contents\" data-nosnippet class=\"toc_transparent no_bullets toc_numbered toc_title_center\"><p class=\"toc_title\">\u0130\u00e7indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Load_balancer_nedir_ve_hangi_sorunu_cozer\"><span class=\"toc_number toc_depth_1\">1.<\/span> Load balancer nedir ve hangi sorunu \u00e7\u00f6zer?<\/a><ul><li><a href=\"#L4_ve_L7_dagitim_arasindaki_fark\"><span class=\"toc_number toc_depth_2\">1.1.<\/span> L4 ve L7 da\u011f\u0131t\u0131m aras\u0131ndaki fark<\/a><\/li><\/ul><\/li><li><a href=\"#Health_check_nedir_neyi_gercekten_kontrol_eder\"><span class=\"toc_number toc_depth_1\">2.<\/span> Health check nedir, neyi ger\u00e7ekten kontrol eder?<\/a><ul><li><a href=\"#Iyi_bir_saglik_uc_noktasi_nasil_olmali\"><span class=\"toc_number toc_depth_2\">2.1.<\/span> \u0130yi bir sa\u011fl\u0131k u\u00e7 noktas\u0131 nas\u0131l olmal\u0131?<\/a><\/li><li><a href=\"#Basarisizlik_esikleri_neden_onemlidir\"><span class=\"toc_number toc_depth_2\">2.2.<\/span> Ba\u015far\u0131s\u0131zl\u0131k e\u015fikleri neden \u00f6nemlidir?<\/a><\/li><li><a href=\"#Teshis_ve_dar_kapsamli_duzeltme\"><span class=\"toc_number toc_depth_2\">2.3.<\/span> Te\u015fhis ve dar kapsaml\u0131 d\u00fczeltme<\/a><\/li><\/ul><\/li><li><a href=\"#Sticky_session_nedir_ve_ne_zaman_gerekir\"><span class=\"toc_number toc_depth_1\">3.<\/span> Sticky session nedir ve ne zaman gerekir?<\/a><ul><li><a href=\"#Cerez_temelli_ve_IP_temelli_yapiskanlik\"><span class=\"toc_number toc_depth_2\">3.1.<\/span> \u00c7erez temelli ve IP temelli yap\u0131\u015fkanl\u0131k<\/a><\/li><li><a href=\"#Sticky_session_yerine_ortak_oturum_depolama\"><span class=\"toc_number toc_depth_2\">3.2.<\/span> Sticky session yerine ortak oturum depolama<\/a><\/li><\/ul><\/li><li><a href=\"#TLS_sonlandirma_ve_istek_yonlendirme_karari\"><span class=\"toc_number toc_depth_1\">4.<\/span> TLS sonland\u0131rma ve istek y\u00f6nlendirme karar\u0131<\/a><\/li><li><a href=\"#Web_sunuculari_ve_is_yuku_nasil_ayrilmali\"><span class=\"toc_number toc_depth_1\">5.<\/span> Web sunucular\u0131 ve i\u015f y\u00fck\u00fc nas\u0131l ayr\u0131lmal\u0131?<\/a><\/li><li><a href=\"#Load_balancer_kurulumu_oncesi_test_ve_gozlem\"><span class=\"toc_number toc_depth_1\">6.<\/span> Load balancer kurulumu \u00f6ncesi test ve g\u00f6zlem<\/a><ul><li><a href=\"#Arizali_hedefi_kontrollu_cikarma\"><span class=\"toc_number toc_depth_2\">6.1.<\/span> Ar\u0131zal\u0131 hedefi kontroll\u00fc \u00e7\u0131karma<\/a><\/li><\/ul><\/li><li><a href=\"#Sik_Sorulan_Sorular\"><span class=\"toc_number toc_depth_1\">7.<\/span> S\u0131k Sorulan Sorular<\/a><ul><li><a href=\"#Load_balancer_tek_sunucu_icin_gerekli_midir\"><span class=\"toc_number toc_depth_2\">7.1.<\/span> Load balancer tek sunucu i\u00e7in gerekli midir?<\/a><\/li><li><a href=\"#Health_check_yaniti_hangi_HTTP_durum_kodunu_vermeli\"><span class=\"toc_number toc_depth_2\">7.2.<\/span> Health check yan\u0131t\u0131 hangi HTTP durum kodunu vermeli?<\/a><\/li><li><a href=\"#Sticky_session_guvenlik_ozelligi_midir\"><span class=\"toc_number toc_depth_2\">7.3.<\/span> Sticky session g\u00fcvenlik \u00f6zelli\u011fi midir?<\/a><\/li><li><a href=\"#Bir_health_check_adresini_herkese_acabilir_miyim\"><span class=\"toc_number toc_depth_2\">7.4.<\/span> Bir health check adresini herkese a\u00e7abilir miyim?<\/a><\/li><\/ul><\/li><li><a href=\"#Uygulanabilir_kontrol_listesi\"><span class=\"toc_number toc_depth_1\">8.<\/span> Uygulanabilir kontrol listesi<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Load_balancer_nedir_ve_hangi_sorunu_cozer\">Load balancer nedir ve hangi sorunu \u00e7\u00f6zer?<\/span><\/h2>\n<p>Load balancer, istemcilerden gelen a\u011f ba\u011flant\u0131lar\u0131n\u0131 veya HTTP isteklerini birden fazla arka u\u00e7 sunucuya y\u00f6nlendiren bile\u015fendir. Arka u\u00e7, iste\u011fi ger\u00e7ekten i\u015fleyen web sunucusu, uygulama sunucusu ya da servis anlam\u0131na gelir. Kullan\u0131c\u0131 tek bir alan ad\u0131 g\u00f6r\u00fcr; arka planda ise istekler sunucu havuzundaki uygun hedeflere da\u011f\u0131t\u0131l\u0131r.<\/p>\n<p>Tek sunuculu bir yap\u0131da donan\u0131m ar\u0131zas\u0131, bak\u0131m veya i\u015flem kapasitesinin dolmas\u0131 do\u011frudan siteyi etkiler. Load balancer, havuzdaki sunuculardan biri kullan\u0131lamad\u0131\u011f\u0131nda di\u011fer hedeflere y\u00f6nlendirme yapabilir. Ayr\u0131ca yeni bir sunucuyu havuza eklemek, trafi\u011fi kademeli olarak yaymak veya bak\u0131m s\u0131ras\u0131nda bir hedefi ge\u00e7ici olarak \u00e7\u0131karmak daha kolay hale gelir.<\/p>\n<p>Bu yap\u0131 tek ba\u015f\u0131na daha h\u0131zl\u0131 bir site garantisi vermez. Trafik da\u011f\u0131t\u0131c\u0131n\u0131n kendisi, a\u011f ba\u011flant\u0131s\u0131, veritaban\u0131, dosya depolama veya uygulama kodu darbo\u011faz olabilir. Sunucu say\u0131s\u0131n\u0131 art\u0131rmadan \u00f6nce istek t\u00fcrlerini, oturum verisini, y\u00fck\u00fc ve ortak dosya ihtiyac\u0131n\u0131 inceleyin.<\/p>\n<h3><span id=\"L4_ve_L7_dagitim_arasindaki_fark\">L4 ve L7 da\u011f\u0131t\u0131m aras\u0131ndaki fark<\/span><\/h3>\n<p>Katman 4 (L4) da\u011f\u0131t\u0131m, TCP veya UDP ba\u011flant\u0131s\u0131 gibi a\u011f bilgileriyle karar verir. Genellikle daha az uygulama bilgisi kullan\u0131r ve protokol seviyesinde \u00e7al\u0131\u015f\u0131r. Katman 7 (L7) da\u011f\u0131t\u0131m ise HTTP y\u00f6ntemi, host ad\u0131, URL yolu veya \u00e7erez gibi uygulama katman\u0131 verilerini de\u011ferlendirebilir.<\/p>\n<p>Statik dosyalar\u0131 bir hedef grubuna, API isteklerini ba\u015fka bir gruba g\u00f6ndermek L7 kurallar\u0131yla yap\u0131labilir. TLS ba\u011flant\u0131s\u0131n\u0131 load balancer \u00fczerinde a\u00e7madan yaln\u0131zca ba\u011flant\u0131 bilgilerine g\u00f6re ge\u00e7irmek ise L4 veya TLS passthrough yakla\u015f\u0131m\u0131na daha yak\u0131nd\u0131r. Se\u00e7im, y\u00f6nlendirme ihtiyac\u0131n\u0131za ve sertifika y\u00f6netiminin nerede yap\u0131laca\u011f\u0131na ba\u011fl\u0131d\u0131r.<\/p>\n<p>Load balancer&#8217;\u0131n \u00f6n\u00fcnde DNS, arkas\u0131nda web sunucular\u0131 bulunabilir. DNS bir alan ad\u0131n\u0131 belirli bir IP adresine \u00e7\u00f6zer; her HTTP iste\u011finin sa\u011fl\u0131kl\u0131 bir hedefe ula\u015f\u0131p ula\u015fmad\u0131\u011f\u0131n\u0131 tek ba\u015f\u0131na denetlemez. DNS y\u00f6nlendirmesi ile load balancer health check mekanizmas\u0131n\u0131 ayn\u0131 g\u00f6rev gibi de\u011ferlendirmeyin.<\/p>\n<h2><span id=\"Health_check_nedir_neyi_gercekten_kontrol_eder\">Health check nedir, neyi ger\u00e7ekten kontrol eder?<\/span><\/h2>\n<p>Health check, load balancer&#8217;\u0131n arka u\u00e7 sunuculara belirli aral\u0131klarla g\u00f6nderdi\u011fi sa\u011fl\u0131k denetimidir. Denetim ba\u015far\u0131l\u0131ysa hedef havuzda tutulur; ba\u015far\u0131s\u0131zl\u0131k belirli bir e\u015fi\u011fi a\u015farsa hedef ge\u00e7ici olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r. B\u00f6ylece normal kullan\u0131c\u0131 istekleri, cevap veremeyen veya hatal\u0131 cevap \u00fcreten bir sunucuya g\u00f6nderilmez.<\/p>\n<p>Basit bir TCP kontrol\u00fc yaln\u0131zca portun ba\u011flant\u0131 kabul etti\u011fini g\u00f6sterir. HTTP kontrol\u00fc ise belirli bir URL&#8217;ye istek g\u00f6ndererek durum kodunu ve gerekirse yan\u0131t i\u00e7eri\u011fini do\u011frular. Web sunucusu \u00e7al\u0131\u015f\u0131yor g\u00f6r\u00fcn\u00fcrken PHP-FPM, veritaban\u0131 veya uygulaman\u0131n kritik ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 bozulmu\u015f olabilir. Bu durumda yaln\u0131zca TCP kontrol\u00fcne g\u00fcvenmek, uygulama haz\u0131r de\u011filken hedefi sa\u011fl\u0131kl\u0131 g\u00f6sterebilir.<\/p>\n<h3><span id=\"Iyi_bir_saglik_uc_noktasi_nasil_olmali\">\u0130yi bir sa\u011fl\u0131k u\u00e7 noktas\u0131 nas\u0131l olmal\u0131?<\/span><\/h3>\n<p>Sa\u011fl\u0131k u\u00e7 noktas\u0131, uygulaman\u0131n trafik almaya haz\u0131r olup olmad\u0131\u011f\u0131n\u0131 h\u0131zl\u0131 ve \u00f6ng\u00f6r\u00fclebilir bi\u00e7imde yan\u0131tlamal\u0131d\u0131r. \u00d6rne\u011fin <code>\/healthz<\/code> veya <code>\/ready<\/code> gibi bir yol kullan\u0131labilir. Bu adlar \u00f6rnektir; uygulaman\u0131z\u0131n y\u00f6nlendirme yap\u0131s\u0131na ve operasyon politikan\u0131za g\u00f6re farkl\u0131 bir yol se\u00e7ebilirsiniz.<\/p>\n<p>\u0130ki farkl\u0131 kontrol\u00fc ay\u0131rmak yararl\u0131d\u0131r. Liveness, s\u00fcrecin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131; readiness ise iste\u011fi kar\u015f\u0131lamak i\u00e7in gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131n haz\u0131r oldu\u011funu anlat\u0131r. Load balancer \u00e7o\u011fu web sitesi i\u00e7in readiness benzeri bir kontrol kullan\u0131r. Her kontrolde a\u011f\u0131r rapor sorgular\u0131, tam sayfa \u00fcretimi veya d\u0131\u015f servislere uzun beklemeli \u00e7a\u011fr\u0131lar \u00e7al\u0131\u015ft\u0131rmak yeni bir y\u00fck olu\u015fturabilir.<\/p>\n<p>Veritaban\u0131n\u0131 kontrol etmek gerekiyorsa salt okunur, k\u00fc\u00e7\u00fck ve zaman a\u015f\u0131m\u0131 olan bir sorgu tercih edin. \u00d6deme servisi gibi harici bir ba\u011f\u0131ml\u0131l\u0131k ge\u00e7ici olarak kullan\u0131lam\u0131yorsa uygulaman\u0131z\u0131n trafik kabul politikas\u0131n\u0131 \u00f6nceden belirleyin. Her d\u0131\u015f servisi health check&#8217;e eklemek, k\u0131sa s\u00fcreli bir ba\u011f\u0131ml\u0131l\u0131k sorununda t\u00fcm sunucular\u0131n hatal\u0131 bi\u00e7imde havuzdan \u00e7\u0131kmas\u0131na neden olabilir.<\/p>\n<div class=\"aiw-note aiw-note-warning\">\n<p class=\"aiw-box-title\">Dikkat<\/p>\n<p>Health check u\u00e7 noktas\u0131n\u0131 etkinle\u015ftirmek, d\u0131\u015far\u0131dan g\u00fcvenli eri\u015fim yolunu tan\u0131mlamakla ayn\u0131 i\u015flem de\u011fildir. Uygulama bu yolu \u00fcretse bile web sunucusu veya load balancer \u00fczerinde yaln\u0131zca beklenen a\u011flardan eri\u015fim izni verin. Kimlik bilgilerini yan\u0131t g\u00f6vdesine koymay\u0131n; durum bilgisini gereksiz ayr\u0131nt\u0131 vermeden d\u00f6nd\u00fcr\u00fcn.<\/p>\n<\/div>\n<h3><span id=\"Basarisizlik_esikleri_neden_onemlidir\">Ba\u015far\u0131s\u0131zl\u0131k e\u015fikleri neden \u00f6nemlidir?<\/span><\/h3>\n<p>Tek bir ba\u015far\u0131s\u0131z istekte sunucuyu havuzdan \u00e7\u0131karmak, ge\u00e7ici a\u011f gecikmelerinde gereksiz y\u00f6n de\u011fi\u015ftirmeye yol a\u00e7abilir. \u00c7ok fazla ba\u015far\u0131s\u0131zl\u0131k beklemek ise ar\u0131zal\u0131 hedefe daha uzun s\u00fcre trafik g\u00f6nderir. Interval, timeout, unhealthy threshold ve healthy threshold de\u011ferleri birlikte de\u011ferlendirilmelidir.<\/p>\n<p>\u00d6rne\u011fin 5 saniyelik aral\u0131kla yap\u0131lan kontrollerde zaman a\u015f\u0131m\u0131 2 saniye olabilir; fakat bu yaln\u0131zca a\u00e7\u0131klay\u0131c\u0131 bir \u00f6rnektir. Ger\u00e7ek de\u011ferleri a\u011f gecikmenizi, uygulaman\u0131n normal yan\u0131t s\u00fcresini ve hata tolerans\u0131n\u0131z\u0131 \u00f6l\u00e7erek belirleyin. De\u011fi\u015fiklikten sonra hedefin ger\u00e7ekten havuza girip \u00e7\u0131kt\u0131\u011f\u0131n\u0131 ve kullan\u0131c\u0131 isteklerinin davran\u0131\u015f\u0131n\u0131 g\u00f6zlemleyin.<\/p>\n<h3><span id=\"Teshis_ve_dar_kapsamli_duzeltme\">Te\u015fhis ve dar kapsaml\u0131 d\u00fczeltme<\/span><\/h3>\n<p>Bir sunucu health check&#8217;te ba\u015far\u0131s\u0131z oluyorsa \u00f6nce load balancer&#8217;\u0131n kontrol adresinden ilgili hedefe eri\u015fip eri\u015femedi\u011fini test edin. Ard\u0131ndan ayn\u0131 URL&#8217;yi hedef sunucuda yerel olarak ve do\u011fru Host ba\u015fl\u0131\u011f\u0131yla \u00e7a\u011f\u0131r\u0131n. B\u00f6ylece a\u011f, web sunucusu y\u00f6nlendirmesi ve uygulama katman\u0131 sorunlar\u0131n\u0131 birbirinden ay\u0131rabilirsiniz.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">curl -i --max-time 3 -H &quot;Host: example.test&quot; http:\/\/127.0.0.1\/healthz<\/code><\/pre>\n<p>Bu komut yaln\u0131zca g\u00f6zlem i\u00e7indir; alan ad\u0131n\u0131 ve yolu kendi yap\u0131n\u0131za g\u00f6re de\u011fi\u015ftirin. \u00d6nko\u015ful olarak hedef sunucuda curl bulunmal\u0131, yerel web sunucusu HTTP iste\u011fini dinlemeli ve health check yolu tan\u0131ml\u0131 olmal\u0131d\u0131r. Yan\u0131t beklenen durum kodunu vermiyorsa \u00f6nce health check yolunu ve web sunucusunun ilgili konum kural\u0131n\u0131 d\u00fczeltin; uygulaman\u0131n di\u011fer ayarlar\u0131n\u0131 ayn\u0131 anda de\u011fi\u015ftirmeyin.<\/p>\n<p>D\u00fczeltme sonras\u0131nda \u00fc\u00e7 noktay\u0131 do\u011frulay\u0131n: Hedef sunucudan beklenen durum kodu geliyor mu, load balancer hedefi healthy olarak i\u015faretliyor mu ve ger\u00e7ek bir kullan\u0131c\u0131 iste\u011fi do\u011fru yan\u0131t\u0131 al\u0131yor mu? De\u011fi\u015fiklik veri veya y\u00f6nlendirme kural\u0131 i\u00e7eriyorsa \u00f6nce yap\u0131land\u0131rma yede\u011fi al\u0131n ve \u00f6nceki dosyaya d\u00f6nme ad\u0131m\u0131n\u0131 haz\u0131r tutun.<\/p>\n<h2><span id=\"Sticky_session_nedir_ve_ne_zaman_gerekir\">Sticky session nedir ve ne zaman gerekir?<\/span><\/h2>\n<p>Sticky session, ayn\u0131 istemciyi sonraki isteklerde m\u00fcmk\u00fcn oldu\u011funca ayn\u0131 arka u\u00e7 sunucuya y\u00f6nlendirme y\u00f6ntemidir. &#8220;Oturum yap\u0131\u015fkanl\u0131\u011f\u0131&#8221; olarak da adland\u0131r\u0131l\u0131r. Load balancer bunu kendi \u00fcretti\u011fi bir \u00e7erez, uygulama \u00e7erezi, kaynak IP adresi veya benzeri bir y\u00f6nlendirme anahtar\u0131yla sa\u011flayabilir.<\/p>\n<p>Bu ihtiya\u00e7 genellikle oturum verisinin yaln\u0131zca kullan\u0131c\u0131n\u0131n ilk ba\u011fland\u0131\u011f\u0131 sunucuda tutulmas\u0131ndan do\u011far. Kullan\u0131c\u0131 giri\u015f yapt\u0131\u011f\u0131nda oturum birinci sunucunun yerel dosyas\u0131na yaz\u0131l\u0131r; sonraki istek ikinci sunucuya giderse ikinci sunucu bu oturumu bulamayabilir. Kullan\u0131c\u0131 yeniden giri\u015f ekran\u0131na g\u00f6nderilebilir veya sepeti bo\u015f g\u00f6r\u00fcnebilir.<\/p>\n<p>Sticky session bu sorunu h\u0131zl\u0131ca azalt\u0131r, ancak sorunun veri mimarisini ortadan kald\u0131rmaz. Yap\u0131\u015fkan y\u00f6nlendirme nedeniyle baz\u0131 sunucular di\u011ferlerinden daha fazla oturum ta\u015f\u0131yabilir. Sunucu ar\u0131zalan\u0131rsa o sunucuya ba\u011fl\u0131 kullan\u0131c\u0131lar\u0131n oturumu yine kaybolabilir. Ayr\u0131ca otomatik \u00f6l\u00e7ekleme, bak\u0131m ve y\u00fck da\u011f\u0131l\u0131m\u0131 daha az esnek hale gelir.<\/p>\n<h3><span id=\"Cerez_temelli_ve_IP_temelli_yapiskanlik\">\u00c7erez temelli ve IP temelli yap\u0131\u015fkanl\u0131k<\/span><\/h3>\n<p>\u00c7erez temelli y\u00f6ntemde load balancer veya uygulama, istemciye hangi hedefe ba\u011flanaca\u011f\u0131n\u0131 belirleyen bir \u00e7erez verir. Bu y\u00f6ntem, ayn\u0131 ortak a\u011f arkas\u0131ndaki \u00e7ok say\u0131da kullan\u0131c\u0131n\u0131n tek bir kaynak IP olarak g\u00f6r\u00fcnmesi sorununu azalt\u0131r. \u00c7erez silinir, s\u00fcresi dolarsa veya istemci farkl\u0131 bir politika uygularsa yap\u0131\u015fkanl\u0131k bozulabilir.<\/p>\n<p>IP temelli y\u00f6ntemde kaynak IP, hedef se\u00e7imi i\u00e7in anahtar olarak kullan\u0131l\u0131r. Mobil a\u011flar, kurumsal proxy&#8217;ler ve NAT kullanan kullan\u0131c\u0131lar nedeniyle ayn\u0131 IP birden fazla ki\u015fiyi temsil edebilir. IP de\u011fi\u015fti\u011finde kullan\u0131c\u0131 ba\u015fka sunucuya gidebilir. Bu nedenle IP yap\u0131\u015fkanl\u0131\u011f\u0131n\u0131 oturum g\u00fcvenli\u011fi veya veri tutarl\u0131l\u0131\u011f\u0131 i\u00e7in tek ba\u015f\u0131na g\u00fcvenilir bir \u00e7\u00f6z\u00fcm saymay\u0131n.<\/p>\n<h3><span id=\"Sticky_session_yerine_ortak_oturum_depolama\">Sticky session yerine ortak oturum depolama<\/span><\/h3>\n<p>Daha \u00f6l\u00e7eklenebilir yakla\u015f\u0131m, oturum verisini t\u00fcm uygulama sunucular\u0131n\u0131n eri\u015febildi\u011fi ortak bir depoya ta\u015f\u0131makt\u0131r. Redis, Memcached veya payla\u015f\u0131ml\u0131 veritaban\u0131 bu ama\u00e7la kullan\u0131labilir; do\u011fru se\u00e7im veri kal\u0131c\u0131l\u0131\u011f\u0131, eri\u015fim s\u00fcresi ve kay\u0131p tolerans\u0131na ba\u011fl\u0131d\u0131r. Oturum verisinin hangi bile\u015fende tutulaca\u011f\u0131n\u0131 belirlerken eri\u015fim yetkilerini ve silinme politikas\u0131n\u0131 da tan\u0131mlay\u0131n.<\/p>\n<p>WordPress, WooCommerce veya \u00f6zel bir PHP uygulamas\u0131nda dosya tabanl\u0131 oturumlar sunucuya \u00f6zg\u00fc kal\u0131yorsa, \u00f6nce uygulaman\u0131n oturum ve \u00f6nbellek davran\u0131\u015f\u0131n\u0131 do\u011frulay\u0131n. Ortak depolama yap\u0131land\u0131rmas\u0131na ge\u00e7meden \u00f6nce mevcut oturumlar\u0131n nas\u0131l sonland\u0131r\u0131laca\u011f\u0131n\u0131 ve ba\u011flant\u0131 bilgilerinin nas\u0131l geri al\u0131naca\u011f\u0131n\u0131 planlay\u0131n. Yap\u0131land\u0131rma de\u011fi\u015fikli\u011fi \u00f6ncesinde ilgili dosyalar\u0131n ve verilerin yede\u011fini al\u0131n.<\/p>\n<p>Bu konu i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/php-session-ve-cache-depolamasini-dogru-secmek-dosya-redis\/\">PHP oturum ve \u00f6nbellek depolama se\u00e7eneklerini<\/a> kar\u015f\u0131la\u015ft\u0131ran PHP Session ve Cache Depolamas\u0131n\u0131 Do\u011fru Se\u00e7mek yaz\u0131s\u0131, dosya, Redis ve Memcached aras\u0131ndaki farklar\u0131 de\u011ferlendirmenize yard\u0131mc\u0131 olabilir. \u0130\u00e7eri\u011finizin gerektirdi\u011fi depolama se\u00e7imini uygulama belgeleri ve mevcut hosting s\u0131n\u0131rlar\u0131yla birlikte kontrol edin.<\/p>\n<div class=\"aiw-note aiw-note-example\">\n<p class=\"aiw-box-title\">\u00d6rnek senaryo<\/p>\n<p>\u0130ki web sunuculu bir WooCommerce sitesi d\u00fc\u015f\u00fcn\u00fcn. Varsay\u0131m olarak sepet oturumu her sunucuda yerel dosyada tutuluyor ve veritaban\u0131 iki sunucu taraf\u0131ndan ortak kullan\u0131l\u0131yor. Kullan\u0131c\u0131 ilk istekte Sunucu A&#8217;ya gider, \u00fcr\u00fcn ekler ve sonraki istekte Sunucu B&#8217;ye y\u00f6nlenirse B, A&#8217;daki oturum dosyas\u0131n\u0131 bulamayabilir. Ge\u00e7ici \u00e7\u00f6z\u00fcm sticky session olabilir; daha dayan\u0131kl\u0131 \u00e7\u00f6z\u00fcm ise oturum verisini ortak bir depoya ta\u015f\u0131mak ve ard\u0131ndan yap\u0131\u015fkanl\u0131\u011fa olan ihtiyac\u0131 yeniden test etmektir.<\/p>\n<\/div>\n<h2><span id=\"TLS_sonlandirma_ve_istek_yonlendirme_karari\">TLS sonland\u0131rma ve istek y\u00f6nlendirme karar\u0131<\/span><\/h2>\n<p>TLS, istemci ile servis aras\u0131ndaki ba\u011flant\u0131y\u0131 \u015fifreleyen protokold\u00fcr. TLS sonland\u0131rma, \u015fifreli ba\u011flant\u0131n\u0131n bir noktada a\u00e7\u0131lmas\u0131 ve HTTP iste\u011finin sonraki bile\u015fene iletilmesi anlam\u0131na gelir. Bu i\u015flem load balancer \u00fczerinde yap\u0131l\u0131rsa sertifikalar burada y\u00f6netilir; arka u\u00e7 sunuculara HTTP veya yeniden \u015fifrelenmi\u015f HTTPS ba\u011flant\u0131s\u0131 kurulabilir.<\/p>\n<p>Load balancer \u00fczerinde sonland\u0131rman\u0131n avantaj\u0131, sertifika yenileme ve L7 y\u00f6nlendirme kurallar\u0131n\u0131 tek noktada y\u00f6netmektir. Ancak load balancer ile arka u\u00e7 aras\u0131ndaki a\u011f\u0131n g\u00fcvenilirli\u011fi, i\u00e7 a\u011f politikas\u0131 ve hassas veri gereksinimleri ayr\u0131ca de\u011ferlendirilmelidir. \u0130\u00e7 ba\u011flant\u0131da da TLS kullanacaksan\u0131z sertifika do\u011frulamas\u0131, isim \u00e7\u00f6z\u00fcmleme ve g\u00fcven zinciri planlanmal\u0131d\u0131r.<\/p>\n<p>Uygulaman\u0131n istemci IP&#8217;si, protokol\u00fc ve host bilgisi i\u00e7in iletilen ba\u015fl\u0131klar\u0131 do\u011fru i\u015fledi\u011fini do\u011frulay\u0131n. G\u00fcvenilmeyen istemcilerin bu ba\u015fl\u0131klar\u0131 do\u011frudan taklit etmesine izin vermeyin; yaln\u0131zca g\u00fcvenilir proxy katman\u0131ndan gelen bilgileri kabul edecek \u015fekilde web sunucusunu ve uygulamay\u0131 yap\u0131land\u0131r\u0131n.<\/p>\n<h2><span id=\"Web_sunuculari_ve_is_yuku_nasil_ayrilmali\">Web sunucular\u0131 ve i\u015f y\u00fck\u00fc nas\u0131l ayr\u0131lmal\u0131?<\/span><\/h2>\n<p>Load balancer web isteklerini da\u011f\u0131t\u0131r; fakat arka plandaki her i\u015f ayn\u0131 kayna\u011f\u0131 t\u00fcketmez. PHP-FPM web i\u015f\u00e7ileri, gelen HTTP iste\u011fini i\u015fler. CLI ile \u00e7al\u0131\u015fan cron g\u00f6revleri, kuyruk t\u00fcketicileri veya planlanm\u0131\u015f komutlar ise HTTP \u00e7a\u011fr\u0131s\u0131 yapmad\u0131klar\u0131 s\u00fcrece PHP-FPM i\u015f\u00e7isi t\u00fcketmez. Bu iki i\u015f\u00e7i t\u00fcr\u00fcn\u00fc ayn\u0131 kapasite hesab\u0131nda kar\u0131\u015ft\u0131rmak yanl\u0131\u015f te\u015fhise yol a\u00e7ar.<\/p>\n<p>\u00d6rne\u011fin health check yan\u0131t\u0131 h\u0131zl\u0131 olsa bile uzun s\u00fcren kuyruk i\u015fleri CPU, bellek veya veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131 t\u00fcketebilir. Bu durumda load balancer ar\u0131zal\u0131 de\u011fildir; web ve arka plan i\u015f y\u00fckleri ayn\u0131 sunucuda kaynak rekabeti ya\u015f\u0131yor olabilir. <a href=\"https:\/\/www.dchost.com\/blog\/php-session-ve-queue-iscileri-icin-ayri-php-fpm-islem-havuzu-kurmak\/\">PHP Session ve Queue \u0130\u015f\u00e7ileri \u0130\u00e7in Ayr\u0131 PHP-FPM \u0130\u015flem Havuzu Kurmak<\/a> ba\u015fl\u0131\u011f\u0131ndaki ayr\u0131m, web istekleriyle kuyruk g\u00f6revlerini ayr\u0131 kaynak politikalar\u0131yla ele alman\u0131z i\u00e7in ilgili bir sonraki okumad\u0131r.<\/p>\n<p>Te\u015fhis s\u0131ras\u0131nda PHP-FPM durumunu, web sunucusu eri\u015fim g\u00fcnl\u00fcklerini, uygulama hata g\u00fcnl\u00fcklerini ve kuyruk \u00e7al\u0131\u015fma durumunu ayr\u0131 inceleyin. Health check i\u00e7in uygulama s\u00fcre\u00e7lerinin haz\u0131r olmas\u0131 gerekir; ancak kuyruk i\u015f\u00e7isinin \u00e7al\u0131\u015fmas\u0131, tek ba\u015f\u0131na web hedefinin healthy veya unhealthy oldu\u011funu belirlememelidir.<\/p>\n<h2><span id=\"Load_balancer_kurulumu_oncesi_test_ve_gozlem\">Load balancer kurulumu \u00f6ncesi test ve g\u00f6zlem<\/span><\/h2>\n<p>\u0130ki sunucuyu \u00fcretim trafi\u011fine almadan \u00f6nce hangi hedefin hangi istekleri kar\u015f\u0131layaca\u011f\u0131n\u0131 yaz\u0131l\u0131 hale getirin. Statik dosyalar\u0131n her sunucuda ayn\u0131 olup olmad\u0131\u011f\u0131n\u0131, y\u00fcklemelerin nerede tutuldu\u011funu, oturumun nas\u0131l payla\u015f\u0131ld\u0131\u011f\u0131n\u0131 ve veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131n nas\u0131l y\u00f6netildi\u011fini kontrol edin. Bir sunucuda olu\u015fan dosya di\u011ferinde bulunmuyorsa, yaln\u0131zca trafik da\u011f\u0131tmak tutars\u0131z yan\u0131t \u00fcretebilir.<\/p>\n<p>Ard\u0131ndan kontroll\u00fc bir kapasite testi yap\u0131n. Tek bir sanal kullan\u0131c\u0131yla yap\u0131lan istek testi, ger\u00e7ek e\u015fzamanl\u0131l\u0131k ve kuyruk davran\u0131\u015f\u0131n\u0131 g\u00f6stermez. <a href=\"https:\/\/www.dchost.com\/blog\/trafik-patlamasindan-once-load-test-yapmak-k6-jmeter-ve-locust\/\">Trafik patlamas\u0131ndan \u00d6nce Load Test Yapmak<\/a>: k6, JMeter ve Locust ile Kapasite \u00d6l\u00e7me Rehberi ba\u015fl\u0131\u011f\u0131ndaki yakla\u015f\u0131mlar\u0131 inceleyerek test senaryosunu oturum a\u00e7ma, \u00fcr\u00fcn g\u00f6r\u00fcnt\u00fcleme, sepet ve \u00f6deme gibi i\u015f ak\u0131\u015flar\u0131na g\u00f6re d\u00fczenleyebilirsiniz.<\/p>\n<p>Testte yaln\u0131zca ortalama yan\u0131t s\u00fcresini izlemeyin. Hata oran\u0131, 95. veya 99. y\u00fczdelik yan\u0131t s\u00fcresi, health check ba\u015far\u0131s\u0131zl\u0131klar\u0131, ba\u011flant\u0131 havuzlar\u0131, CPU, bellek ve veritaban\u0131 gecikmesini birlikte de\u011ferlendirin. Say\u0131sal e\u015fikleri kendi uygulaman\u0131z\u0131n normal \u00e7al\u0131\u015fma \u00f6l\u00e7\u00fcmlerinden t\u00fcretin; burada evrensel bir de\u011fer yoktur.<\/p>\n<h3><span id=\"Arizali_hedefi_kontrollu_cikarma\">Ar\u0131zal\u0131 hedefi kontroll\u00fc \u00e7\u0131karma<\/span><\/h3>\n<p>Bir hedefi bak\u0131m i\u00e7in devre d\u0131\u015f\u0131 b\u0131rakmadan \u00f6nce yeni ba\u011flant\u0131 kabul\u00fcn\u00fc durdurma veya draining \u00f6zelli\u011fi varsa bunu kullan\u0131n. Draining, mevcut ba\u011flant\u0131lar\u0131n tamamlanmas\u0131na izin verirken yeni istekleri ba\u015fka hedeflere y\u00f6nlendirmektir. Sticky session kullan\u0131yorsan\u0131z, mevcut \u00e7erezlerin ve uzun s\u00fcreli ba\u011flant\u0131lar\u0131n nas\u0131l davranaca\u011f\u0131n\u0131 ayr\u0131ca test edin.<\/p>\n<p>Ard\u0131ndan tek hedefli bir ar\u0131za senaryosu uygulay\u0131n. Hedefin health check&#8217;te ba\u015far\u0131s\u0131z olmas\u0131n\u0131, havuzdan \u00e7\u0131kar\u0131lmas\u0131n\u0131 ve kalan sunucunun isteklere cevap vermesini g\u00f6zlemleyin. Geri d\u00f6n\u00fc\u015fte hedefi do\u011frudan tam trafikle a\u00e7mak yerine \u00f6nce health check sonucunu, uygulama g\u00fcnl\u00fcklerini ve kaynak kullan\u0131m\u0131n\u0131 kontrol edin.<\/p>\n<h2><span id=\"Sik_Sorulan_Sorular\">S\u0131k Sorulan Sorular<\/span><\/h2>\n<h3><span id=\"Load_balancer_tek_sunucu_icin_gerekli_midir\">Load balancer tek sunucu i\u00e7in gerekli midir?<\/span><\/h3>\n<p>Tek sunucuda genellikle ek bir da\u011f\u0131t\u0131m katman\u0131 \u015fart de\u011fildir. Ancak TLS sonland\u0131rma, merkezi y\u00f6nlendirme veya ileride yap\u0131lacak yatay \u00f6l\u00e7ekleme i\u00e7in kullan\u0131labilir. Ek bile\u015fenin bak\u0131m ve hata alan\u0131n\u0131 da hesaba kat\u0131n.<\/p>\n<h3><span id=\"Health_check_yaniti_hangi_HTTP_durum_kodunu_vermeli\">Health check yan\u0131t\u0131 hangi HTTP durum kodunu vermeli?<\/span><\/h3>\n<p>\u00c7o\u011fu yap\u0131land\u0131rmada haz\u0131r hedef i\u00e7in 2xx aral\u0131\u011f\u0131nda bir yan\u0131t kullan\u0131l\u0131r. Kesin kabul edilen kod, load balancer \u00fcr\u00fcn\u00fcn\u00fcn ayarlar\u0131na ve uygulaman\u0131z\u0131n readiness politikas\u0131na ba\u011fl\u0131d\u0131r. Yan\u0131t g\u00f6vdesinden \u00e7ok durum kodu ve zaman a\u015f\u0131m\u0131 davran\u0131\u015f\u0131 \u00f6nemlidir.<\/p>\n<h3><span id=\"Sticky_session_guvenlik_ozelligi_midir\">Sticky session g\u00fcvenlik \u00f6zelli\u011fi midir?<\/span><\/h3>\n<p>Hay\u0131r. Sticky session y\u00f6nlendirme davran\u0131\u015f\u0131d\u0131r; kimlik do\u011frulama, yetkilendirme veya oturum \u00e7erezinin korunmas\u0131 yerine ge\u00e7mez. Oturum \u00e7erezlerini g\u00fcvenli niteliklerle \u00fcretmek ve sunucu taraf\u0131 oturum politikas\u0131n\u0131 ayr\u0131ca uygulamak gerekir.<\/p>\n<h3><span id=\"Bir_health_check_adresini_herkese_acabilir_miyim\">Bir health check adresini herkese a\u00e7abilir miyim?<\/span><\/h3>\n<p>A\u00e7mak zorunda de\u011filsiniz. Load balancer&#8217;\u0131n kontrol kaynaklar\u0131ndan eri\u015fime izin verip genel internet eri\u015fimini s\u0131n\u0131rland\u0131rabilirsiniz. D\u00f6nen yan\u0131t, altyap\u0131 bile\u015fenleri veya hata ayr\u0131nt\u0131lar\u0131 hakk\u0131nda gereksiz bilgi vermemelidir.<\/p>\n<h2><span id=\"Uygulanabilir_kontrol_listesi\">Uygulanabilir kontrol listesi<\/span><\/h2>\n<ul>\n<li>Arka u\u00e7 sunucular\u0131n g\u00f6revini, ortak veri ihtiyac\u0131n\u0131 ve trafik ak\u0131\u015f\u0131n\u0131 yaz\u0131l\u0131 olarak belirleyin.<\/li>\n<li>TCP kontrol\u00fc ile uygulaman\u0131n haz\u0131r olma kontrol\u00fcn\u00fc birbirinden ay\u0131r\u0131n.<\/li>\n<li>Health check yolunun h\u0131zl\u0131, d\u00fc\u015f\u00fck maliyetli ve gerekli ba\u011f\u0131ml\u0131l\u0131klarla s\u0131n\u0131rl\u0131 oldu\u011funu do\u011frulay\u0131n.<\/li>\n<li>Kontrol u\u00e7 noktas\u0131na eri\u015fimi yaln\u0131zca g\u00fcvenilir load balancer kaynaklar\u0131yla s\u0131n\u0131rland\u0131r\u0131n.<\/li>\n<li>Oturum verisinin yerel dosyada m\u0131, ortak depoda m\u0131 tutuldu\u011funu do\u011frulay\u0131n.<\/li>\n<li>Sticky session kullan\u0131yorsan\u0131z sunucu ar\u0131zas\u0131nda oturum kayb\u0131 ve y\u00fck dengesizli\u011fi riskini belgelendirin.<\/li>\n<li>TLS sertifikalar\u0131n\u0131n nerede sonland\u0131r\u0131laca\u011f\u0131n\u0131 ve arka u\u00e7 ba\u011flant\u0131s\u0131n\u0131n nas\u0131l korunaca\u011f\u0131n\u0131 kararla\u015ft\u0131r\u0131n.<\/li>\n<li>PHP-FPM web i\u015f\u00e7ilerini CLI cron ve kuyruk i\u015f\u00e7ilerinden ayr\u0131 izleyin.<\/li>\n<li>Bir hedefi draining ile \u00e7\u0131karma, health check ile geri alma ve \u00f6nceki yap\u0131land\u0131rmaya d\u00f6nme ad\u0131mlar\u0131n\u0131 test edin.<\/li>\n<li>Ger\u00e7ek kullan\u0131c\u0131 ak\u0131\u015flar\u0131n\u0131 i\u00e7eren kapasite ve ar\u0131za testlerini \u00fcretim \u00f6ncesinde tekrarlay\u0131n.<\/li>\n<\/ul>\n<p>\u0130lk sonraki ad\u0131m\u0131n\u0131z, mevcut sunuculardan birinde yaln\u0131zca salt okunur bir readiness u\u00e7 noktas\u0131 haz\u0131rlamak ve bunu yerel istekle do\u011frulamak olabilir. Ard\u0131ndan load balancer \u00fczerinde tek hedefli bir test yap\u0131n; health check sonucu, oturum davran\u0131\u015f\u0131 ve geri d\u00f6n\u00fc\u015f ad\u0131m\u0131 netle\u015fmeden t\u00fcm trafi\u011fi yeni mimariye ta\u015f\u0131may\u0131n.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Load balancer&#8217;\u0131n trafik da\u011f\u0131t\u0131m\u0131n\u0131, health check ile hedef do\u011frulamay\u0131 ve sticky session yakla\u015f\u0131m\u0131n\u0131n s\u0131n\u0131rlar\u0131n\u0131 \u00f6\u011frenin.<\/p>\n","protected":false},"author":4,"featured_media":5752,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30],"tags":[593,592,594,596,597,595],"class_list":["post-5756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-nedir","tag-health-check","tag-load-balancer","tag-sticky-session","tag-tls-sonlandirma","tag-web-sunucusu","tag-yuk-dengeleme"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/5756","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=5756"}],"version-history":[{"count":1,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/5756\/revisions"}],"predecessor-version":[{"id":5758,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/5756\/revisions\/5758"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/5752"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=5756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=5756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=5756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}