Ubuntu 20.04 Sunucu Üzerine HAProxy Kurulumu
Bu öğreticide sizlerle Ubuntu 20.04 işletim sistemine sahip bir sunucuda terminal üzerinden HAProxy yükleyerek configurasyonları hakkında bilgi vereceğim.
İşlemlere başlamadan önce sunucunuzun yedeğini almanızı tavsiye ederim. (snapshot, full backup vs.)
HAProxy Nedir?
HAProxy, yüksek trafik alan veya yedeklilik sağlamak istediğiniz TCP ve HTTP protokolünü kullanan uygulamalarınız için yük dengeler ve proxy hizmeti sunar.
HAProxy open source bir üründür. Ürünün enterprise versionu ise ücretlidir. Bu lisans kapsamında kurumsal destek almakla birlikte farklı özelliklerindende yararlanabilirsiniz. Biz bugün bu ürünün ücretsiz versionunu üzerinden ilerleyeceğiz.
Her zaman olduğu gibi ürünün kendi resmi sitesine gidelim ve kurulum için gerekli komutları alalım https://haproxy.debian.net/
Sunucuda ubuntunun hangi sürümünün kurulu olduğunu anlamak için aşağıdaki komutu çalıştırabilirsiniz.
Ben ubuntu 20.04.5 üzerine bu kurulumu yaptığım tarihteki son HAProxy sürümünün kurulumunu yapacağım için seçimlerimi bu yönde yaptım.
1- Adım: HAProxy yüklemek için sırasıyla aşağıdaki komutlarımızı çalıştıralım.
Aşağıdaki komutun sonuna -y parametresini eklerseniz benim gibi kurulum sırasında Y tuşuna basarak onay vermek zorunda kalmazsınız.
veya
2- Adım: Kurulumun tamamlandığına emin olmak için haproxy versionunu sorguluyoruz. Komutumuz aşağıdaki şekildedir.
3- Adım: Kurulum bittiğine göre şimdi sunucu restart olduktan sonra HAProxy servisinin otomatik olarak yeniden başlaması için aşağıdaki komutu çalıştırıyoruz.
4- Adım: Haproxy ayarlamalarına geçmeden önce son olarak HAProxy durumunu sorgulamamız gerekiyor. Status çekerek servisin aktif olup olmadığını göreceğiz.
Şimdi haproxy ile proxy işleminin nasıl yapılacağını göreceğiz. Buna başlamadan önce bazı kavramları açıklamak istiyorum.
Global:
Yapılandırma(haproxy.conf) dosyanızın en üstünde görünür. Kabul edilecek maksimum bağlantı sayısı, günlüklerin(logların) nereye iletileceği ve HAProxy Enterprise modüllerinin yükleneceği yol gibi yönergeleri tanımladığımız alandır.
Default:
Fronted, backend veya listen bölümünde ayarlayabileceğiniz parametlerin çoğunu buradan varsayılan olarak belirleyebilirsiniz. Daha sonra frontend veya backend kısmında bu ayarları tekrar belirtirseniz frontend veya backend altındaki belirttiğiniz parametreler aktif olmuş olur.
Listen:
Bu bölümde HAProxy istatisklerini görmek için tanımlama yapabiliriz. Örnek görsel aşağıdaki şekildedir.
Frontend:
Bu alanda bir frontend oluştururuz ve gideceği backend serverını belirtiriz. Yine bu alanda hangi protokol ve port üzerinden iletişim kurulacağı belirtilir.
Backend:
Front end alanında oluşturulan frontendler için isteklerin yönlendirileceği serverlerı belirtiriz. Yine bu alanda hangi protokol ve port üzerinden iletişim kurulacağı belirtilir.
Önemli olduğunu düşündüğüm bu başlıkları açıkladıktan sonra şimdi örnek bir conf file düzenleyebiliriz. Bunun için haproxy.cfg dosyasının olduğu yere gidelim.
Şimdi conf dosyasını düzenlemek için nano ile içine giriyoruz. Nano ile dosyayı düzeledikten sonra CTRL + X yapıp çıkarken Y tuşuna ve ardından enter tuşuna basıyoruz.
Aşağıdaki örnekte # simgesinden sonra altındaki satırın hangi amaçlı kullanıldığını belirtmeye çalıştım. Conf kopyala yapıştır ile alıp kendinize göre düzenleyebilirsiniz.
Conf dosyasını düzenledikten sonra aktif olması için haproxy servisini restart ediyoruz. Eğer confda hata varsa restart işlemi sonrası hata alacaksınız.
Conf dosyası başarılı bir şekilde yapılandırıldı ve servis restart olduysa aşağıdaki komut ile servisin durumuna bakıp running olduğunu görmemiz gerekmektedir.
İstatistik ekran görüntüsü
İlgili görselde backend sunuculara giden istekleri ve istekle ilgili detayları görebilirsiniz.
HAProxy gelen isteklerin loglarına aşağıdaki yerden ulaşabilirsiniz.
Log dosyasındaki son 100 satırı görmek için aşağıdaki komutu çalıştırabilirsiniz.
Aşağıdaki görselde hangi isteğin hangi servera iletildiğini kırmızı ile daire içine aldım.
f1 ve f2 isimleri haproxy.cfg dosyası içinde backend serverlara verdiğimiz takma isimlerdir.
LAB Ortamı hakkında açıklama
Bu anlatımı yapabilmek adına virtual box üzerinde 3 tane ubuntu 20.04 sanal sunucu kurdum.
192.168.2.81 : HAProxy server
192.168.2.141 : furkanbilgin.com web sunucusu - 1
192.168.2.96 : furkanbilgin.com web sunucusu - 2
İnternet tarayıcısı üzerinden yaptığım isteklerin HAProxy gitmesi için bilgisayarımda C:\Windows\System32\drivers\etc\hosts dosyasına aşağıdaki bilgileri ekledim.
Bu sayede istekler HAProxy üzerinden web sunucularına yönlendirilmiş oldu.
Not: Bazı kelime ve kavramları yanlış kullanmış olabilirim. Düzeltme için lütfen e-mail atınız.