HAProxy znamená High Availability Proxy, je to bezplatný a open source nástroj pro vyrovnávání zátěže, který umožňuje vyvážit příchozí provoz (TCP a na základě HTTP ) distribucí mezi backendové servery pomocí různých kritérií.
Jinými slovy, můžeme říci, že HAProxy se používá k zajištění odolnosti proti chybám a vysoké dostupnosti v případě, že jeden uzel dostává příliš mnoho souběžných požadavků. Používají jej nejznámější webové stránky jako GitHub, Stack Overflow a Tumbler.
V tomto článku budeme diskutovat o tom, jak nainstalovat a nakonfigurovat HAProxy na CentOS 8/RHEL 8 pro webové servery Nginx. Níže jsou uvedeny podrobnosti o nastavení mé laboratoře haproxy,
- HAProxy Server – 192.168.1.10 (haproxy-centos8)
- Nginx Server 1 – 192.168.1.11 (nginx-node01)
- Nginx Server 2 – 192.168.1.12 (nginx-node01)
Pojďme se vrhnout na kroky instalace a konfigurace HAProxy na CentOS 8 / RHEL 8
Krok:1) Aktualizujte soubor /etc/hosts vašeho HAProxy serveru
Přihlaste se do svého systému CentOS 8 nebo RHEL 8, kde nainstalujete haproxy, přidejte následující řádky do souboru /etc/hosts,
192.168.1.10 haproxy-centos8 192.168.1.11 nginx-node01 192.168.1.12 nginx-node02
Po aktualizaci souboru hosts se ujistěte, že můžete pingnout na uzly Nginx,
Krok:2) Nainstalujte a nakonfigurujte HAProxy na CentOS 8 / RHEL 8
Balíček Haproxy je k dispozici ve výchozích úložištích balíčků CentOS 8 a RHEL 8, takže jej lze snadno nainstalovat pomocí příkazu dnf. Před instalací haproxy se však doporučuje aktualizovat váš systém. Proveďte tedy následující příkaz
[email protected] ~]# dnf update -y [email protected] ~]# reboot
Nyní použijte následující příkaz dnf k instalaci haproxy,
[[email protected] ~]# dnf install haproxy
Jakmile je haproxy úspěšně nainstalován, nakonfigurujte jej úpravou jeho konfiguračního souboru „/etc/haproxy/haproxy.cfg “.
Před úpravou souboru je vždy dobrým zvykem vytvořit zálohu původního souboru a spustit následující příkaz,
[[email protected] ~]# cd /etc/haproxy/ [[email protected] haproxy]# cp haproxy.cfg haproxy.cfg-org [[email protected] haproxy]#
V konfiguračním souboru upravíme dvě sekce frontend a backend . V sekci Frontend definujeme haproxy IP a její port, uri statistiky a název backendu. V sekci Backend definujeme typ algoritmu pro vyrovnávání zátěže, který budeme používat, jako je kruhové zpracování a nejmenší připojení atd., a název backendového serveru, IP adresy a port, příklad je uveden níže,
[[email protected] haproxy]# vi haproxy.cfg ………………… frontend http_balancer bind 192.168.1.10:80 option http-server-close option forwardfor stats uri /haproxy?stats # acl url_static path_beg -i /static /images /javascript /stylesheets # acl url_static path_end -i .jpg .gif .png .css .js # use_backend static if url_static default_backend nginx_webservers backend nginx_webservers mode http balance roundrobin option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost server nginx-node01 192.168.1.11:80 check server nginx-node02 192.168.1.12:80 check ………………………………
Uložte a ukončete soubor
Nakonfigurujte rsyslog tak, aby ukládal všechny statistiky HAProxy, upravte konfigurační soubor rsyslog „/etc/rsyslog.conf “ a zrušte komentář na řádku 19 a 20,
[[email protected] ~]# vi /etc/rsyslog.conf …… module(load="imudp") input(type="imudp" port="514") ……
Uložte a ukončete soubor.
Nyní vytvořte soubor haproxy.conf pro rsyslog , vložte následující řádky
[[email protected] ~]# vi /etc/rsyslog.d/haproxy.conf local2.=info /var/log/haproxy-access.log local2.notice /var/log/haproxy-info.log
uložte a ukončete soubor
Restartujte a povolte službu rsyslog, aby byla dostupná po restartování
[[email protected] ~]# systemctl restart rsyslog [[email protected] ~]# systemctl enable rsyslog
Nyní konečně spusťte haproxy, ale před spuštěním haproxy služby nastavte následující selinuxové pravidlo
[[email protected] ~]# setsebool -P haproxy_connect_any 1
Spusťte a povolte haproxy pomocí příkazů pod systemctl
[[email protected] ~]# systemctl start haproxy [[email protected] ~]# systemctl enable haproxy
Povolte haproxy port (v našem případě je to 80) v operačním firewallu, spusťte příkaz pod firewall-cmd,
[[email protected] ~]# firewall-cmd --permanent --add-port=80/tcp [[email protected] ~]# firewall-cmd --reload
Až nyní je instalace a konfigurace HAProxy dokončena, přejděme k uzlům Nginx
Krok:3) Nainstalujte NGINX a spusťte jeho službu
Přihlaste se do obou uzlů nginx, nainstalujte nginx a spusťte jeho službu pomocí následujících příkazů.
# dnf install nginx -y # systemctl start nginx # systemctl enable nginx
Upravme soubor index.html příslušného uzlu,
Pro nginx-node01
[[email protected] ~]# cd /usr/share/nginx/html [[email protected] html]# echo "Nginx Node01 - Welcome to First Nginx Web Server" > index.html
Pro nginx-node02
[[email protected] ~]# cd /usr/share/nginx/html [[email protected] html]# echo "Nginx Node02 - Welcome to 2nd Nginx Web Server" > index.html
Povolte port Nginx (80) v bráně firewall operačního systému v obou uzlech pomocí níže uvedeného příkazu
# firewall-cmd --permanent --add-service=http # firewall-cmd --reload
Krok:4) Otestujte, zda vaše HAProxy funguje správně nebo ne
Přihlaste se k haproxy serveru a spusťte několikrát příkaz curl, abyste zjistili, zda je provoz distribuován způsobem round-robin
[[email protected] ~]# curl 192.168.1.10
Perfektní, to potvrzuje, že haproxy funguje správně, protože rozděluje provoz mezi dva uzly,
Pojďme to ověřit také z webového prohlížeče,
Výše uvedené potvrzuje, že HAProxy se úspěšně nakonfigurovalo na CentOS 8 a RHEL 8.
Stav svého haproxy můžete zobrazit prostřednictvím webového prohlížeče, zadejte url:http://
V našem případě bude adresa URL http://192.168.1.10/haproxy?stats
Můžeme také zobrazit statistiky HAProxy ze souboru protokolu ( /var/log/haproxy-access.log ).
To je vše z tohoto tutoriálu, doufám, že vám tyto kroky pomohou hladce nastavit HAProxy na CentOS 8 a RHEL 8. Podělte se prosím o své cenné zpětné vazby a komentáře.
Přečtěte si také :Jak nastavit Django Python Framework na CentOS 8