{"id":603,"date":"2015-08-22T10:29:57","date_gmt":"2015-08-22T07:29:57","guid":{"rendered":"https:\/\/furkansandal.com\/nginx-sunucular-uzerinde-http-load-balancer-konfigurasyonu\/"},"modified":"2015-08-22T10:29:57","modified_gmt":"2015-08-22T07:29:57","slug":"nginx-sunucular-uzerinde-http-load-balancer-konfigurasyonu","status":"publish","type":"post","link":"https:\/\/furkansandal.com\/nginx-sunucular-uzerinde-http-load-balancer-konfigurasyonu\/","title":{"rendered":"Nginx Sunucular \u00dczerinde HTTP Load Balancer Konfig\u00fcrasyonu"},"content":{"rendered":"
\n

\nBu yaz\u0131m\u0131zda bir web sunucunun HTTP Load Balancer olarak
\nnas\u0131l konfig\u00fcre edilece\u011fini ele alaca\u011f\u0131z. Buradaki amac\u0131m\u0131z y\u00fck alt\u0131nda kalan
\nsunucular\u0131m\u0131z\u0131n hizmet kesintisine u\u011framas\u0131n\u0131 elimizden geldi\u011fince engellemek
\nolacak.<\/p>\n

\nKonfig\u00fcrasyonlar\u0131 son y\u0131llarda olduk\u00e7a pop\u00fcler olan Nginx
\nweb sunucular \u00fczerinde ger\u00e7ekle\u015ftirece\u011fiz. Yaz\u0131da bahsedece\u011fimiz LB
\nayarlar\u0131\u00a0 temel d\u00fczeyde konfig\u00fcrasyonlar\u0131
\ni\u00e7erecek.\u00a0 Benzer ayarlar\u00a0 Apache web sunucular \u00fczerinde de
\nger\u00e7ekle\u015ftirilebilir. <\/div>\n
\n\u0130\u015fletim sistemi olarak Ubuntu Server kullan\u0131lm\u0131\u015ft\u0131r.<\/div>\n
\nSenaryomuzu \u00f6zetleyecek olursak;<\/div>\n
\nToplamda 3 adet Nginx web sunucu. Bunlardan 1 tanesi LB
\ndi\u011fer ikisi bu LB arkas\u0131nda \u00e7al\u0131\u015fan web sunucular olarak ayarlanacak.<\/div>\n

\nNginx LB metodlar\u0131ndan round robin ad\u0131 verilen metodu
\nkullanarak i\u015flemlerimizi ger\u00e7ekle\u015ftirece\u011fiz.<\/p>\n

<\/p>\n

\nKonfig\u00fcrasyon Ad\u0131mlar\u0131<\/b><\/div>\n
\n\u00d6ncelikle t\u00fcm sunucular\u0131m\u0131za Nginx y\u00fckleyelim.<\/div>\n
\napt-get install nginx \u2013y<\/div>\n
\nKurdu\u011fumuz sunuculara IP adreslerini atayal\u0131m. Ben s\u0131ras\u0131yla
\n192.168.2.222, 192.168.2.223, 192.168.2.224 IP adreslerini at\u0131yorum. Yap\u0131lan
\ni\u015flemin daha iyi anla\u015f\u0131labilmesi i\u00e7in Web sunucular\u0131n isimlerini web01 ve web02
\nolarak de\u011fi\u015ftiriyorum. Ayr\u0131ca html sayfalar\u0131na da bu isimleri ekleyerek
\ng\u00f6nderilen isteklerin hangi sunucuya gitti\u011finin anla\u015f\u0131lmas\u0131n\u0131 kolayla\u015ft\u0131rmaya
\n\u00e7al\u0131\u015ft\u0131m.<\/div>\n
\nDefault kurulumda html ayarlar\u0131 i\u00e7in a\u015fa\u011f\u0131daki yol
\nizlenebilir;<\/div>\n
\n<\/div>\n
\n<\/div>\n

\nLoad Balancer Ayar\u0131<\/b><\/p>\n

\nYaz\u0131m\u0131z\u0131n ba\u015f\u0131nda bahsetti\u011fim gibi burada round-robin metodu
\nkullanarak bir y\u00fck dengeleme yapmaya \u00e7al\u0131\u015faca\u011f\u0131z. Round-robin metodu k\u0131saca
\nisteklerin belirtilen IP adreslerine e\u015fit veya sizin belirledi\u011finiz y\u00fcke g\u00f6re
\nda\u011f\u0131lt\u0131lmas\u0131n\u0131 sa\u011flayan metoda verilen isimdir.\u00a0<\/div>\n
\n\u00d6rne\u011fin bizim senaryomuzda ilk istek 223 adresine giderken
\nikinci istek 224 adresine gidecek ve HTTP \u00fczerinden gelen isteklerin da\u011f\u0131l\u0131m\u0131
\nsa\u011flanacak. Bu konfig\u00fcrasyon i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar izlenebilir;<\/div>\n
\nKonfig\u00fcrasyon dosyas\u0131na \/etc\/nginx\/sites-available alt\u0131ndan
\neri\u015febiliriz.<\/div>\n
\n<\/div>\n
\nBuradaki default dosyas\u0131 herhangi bir text edit\u00f6r ile
\na\u00e7\u0131yoruz. Sadece senaryomuza uygun olan bilgileri\u00a0 girmek i\u00e7in ayarlara ba\u015flamadan \u00f6nce bu dosyada
\nbulunan bilgileri temizledim.<\/div>\n
\n<\/div>\n

\nA\u015fa\u011f\u0131daki resimde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi \u00f6ncelikle senaryomuz i\u00e7in isteklerin
\nda\u011f\u0131t\u0131laca\u011f\u0131 sunucu adreslerimizi bir blog halinde tan\u0131ml\u0131yoruz. Bu i\u015flem i\u00e7in
\n\u201cupstream\u201d parametresi ve bu parametreden sonra gelecek bir isim belirtmemiz
\ngerekiyor.<\/p>\n

\n<\/div>\n

\nSunucu bloglar\u0131m\u0131z\u0131 tan\u0131mlad\u0131ktan sonra isteklerin hangi
\nport \u00fczerinden hangi dizine gidece\u011fini a\u015fa\u011f\u0131daki gibi server blogu alt\u0131na
\ntan\u0131ml\u0131yoruz. Burada gelen t\u00fcm isteklerin daha \u00f6nce belirledi\u011fimiz sunuculara
\nda\u011f\u0131lmas\u0131 i\u00e7in \u201cproxy_pass\u201d parametresi ve bir \u00f6nceki ayarda tan\u0131mlad\u0131\u011f\u0131m\u0131z
\nismi ba\u015f\u0131na \u201chttp\u201d koyarak buraya ekliyoruz.<\/p>\n

\n<\/div>\n

\n\u0130\u015flemleri tamamlad\u0131ktan sonra konfig\u00fcrasyonu dosyas\u0131n\u0131
\nkaydedip edit\u00f6rden \u00e7\u0131k\u0131yoruz.<\/p>\n

\nYapt\u0131\u011f\u0131m\u0131z konfig\u00fcrasyonun aktif \u00a0hale gelmesi i\u00e7in a\u015fa\u011f\u0131daki komutu
\nkullanabiliriz. E\u011fer bir hata olursa nginx servisi bu komut \u00e7al\u0131\u015ft\u0131r\u0131l\u0131rken
\nsize bilgi verecektir.<\/p>\n

\n<\/div>\n
\n\u0130\u015flem ba\u015far\u0131 ile ger\u00e7ekle\u015ftiyse \u015fimdi yap\u0131lan
\nkonfig\u00fcrasyonlar\u0131m\u0131z\u0131 test edebiliriz.<\/div>\n
\nBen LB olarak ayarlad\u0131\u011f\u0131m sunucum \u00fczerinden http istekleri
\nolu\u015fturarak test ettim. Bu i\u015flem i\u00e7in \u201ccurl\u201d komutu kullan\u0131labiliriz.<\/div>\n
\nA\u015fa\u011f\u0131da g\u00f6r\u00fcld\u00fc\u011f\u00fc IP adresine istek g\u00f6nderdi\u011fimde yaz\u0131n\u0131n
\nba\u015f\u0131nda i\u00e7eri\u011fini d\u00fczenledi\u011fimiz Web01 sunucusu yan\u0131t veriyor.\u00a0<\/div>\n
\n<\/div>\n
\nEri\u015fimi teyit etmek i\u00e7in eri\u015fim loglar\u0131 da kontrol
\nedebiliriz. A\u015fa\u011f\u0131da g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi web01 sunucusuna gelen istek 192.168.2.222
\nLB olarak konfig\u00fcre etti\u011fimiz sunucudan gelmi\u015f durumda.<\/div>\n
\n<\/div>\n

\nWeb01 isimli sunucumuza gelen iste\u011fi teyit ettikten sonra
\nayn\u0131 IP adresine bir istek daha yap\u0131yoruz.<\/p>\n

\nBu sefer iste\u011fimize cevap Web02 sunucumuzdan geldi. \u015eimdi
\nbir \u00f6nceki istekte oldu\u011fu gibi eri\u015fim loglar\u0131n\u0131 kontrol edelim.<\/p>\n

\n<\/div>\n
\nSunucumuza gelen istek web01 sunucusunda oldu\u011fu gibi
\n192.168.2.222 \u00fczerinden gelmektedir.\u00a0<\/div>\n
\n<\/div>\n

\nS\u00fcrekli olu\u015fturulan http isteklerinde loglar a\u015fa\u011f\u0131daki gibi
\ng\u00f6r\u00fcnecektir. G\u00f6nderilen istekler bu \u015fekilde iki sunucu \u00fczerine da\u011f\u0131t\u0131lacak ve web
\nsunucular\u0131n\u0131za binen y\u00fck dengelenmi\u015f olacakt\u0131r.<\/p>\n

\n<\/div>\n
\n<\/div>\n<\/div>\n

Furkan SANDAL <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"

Bu yaz\u0131m\u0131zda bir web sunucunun HTTP Load Balancer olarak nas\u0131l konfig\u00fcre edilece\u011fini ele alaca\u011f\u0131z. Buradaki amac\u0131m\u0131z y\u00fck alt\u0131nda kalan sunucular\u0131m\u0131z\u0131n…<\/p>\n","protected":false},"author":1,"featured_media":604,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","footnotes":""},"categories":[6,1,9,10,3,7,11,4],"tags":[78,76,92,88,89,26,91,83,93,81,90,79,82,77,80,84,85,87,86],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/furkansandal.com\/wp-content\/uploads\/2015\/08\/html1.png?fit=675%2C152&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6BM7I-9J","amp_enabled":true,"_links":{"self":[{"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/posts\/603"}],"collection":[{"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/comments?post=603"}],"version-history":[{"count":0,"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/posts\/603\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/media\/604"}],"wp:attachment":[{"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/media?parent=603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/categories?post=603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/furkansandal.com\/wp-json\/wp\/v2\/tags?post=603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}