ื”ืชืงื ืช ืžืื–ืŸ ื”ืขื•ืžืก HAProxy ื‘- CentOS

ืชืจื’ื•ื ื”ืžืืžืจ ื”ื•ื›ืŸ ืขืจื‘ ืชื—ื™ืœืช ื”ืงื•ืจืก "ืžื ื”ืœ ืœื™ื ื•ืงืก. ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ื•ืืฉื›ื•ืœื•ืช"

ื”ืชืงื ืช ืžืื–ืŸ ื”ืขื•ืžืก HAProxy ื‘- CentOS

ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื”ื•ื ืคืชืจื•ืŸ ื ืคื•ืฅ ืœืฉื™ื ื•ื™ ืงื ื” ืžื™ื“ื” ืื•ืคืงื™ ืฉืœ ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ืขืœ ืคื ื™ ืžืกืคืจ ืžืืจื—ื™ื ืชื•ืš ืžืชืŸ ื ืงื•ื“ืช ื’ื™ืฉื” ืื—ืช ืœืฉื™ืจื•ืช ืœืžืฉืชืžืฉื™ื. HAProxy ื”ื™ื ืื—ืช ืžืชื•ื›ื ื•ืช ื”ืงื•ื“ ื”ืคืชื•ื— ื”ืคื•ืคื•ืœืจื™ื•ืช ื‘ื™ื•ืชืจ ืœืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื”ืžืกืคืงืช ื’ื ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื” ื•ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืคืจื•ืงืกื™.

HAProxy ืฉื•ืืคืช ืœื™ื™ืขืœ ืืช ื”ืฉื™ืžื•ืฉ ื‘ืžืฉืื‘ื™ื, ืœืžืงืกื ืืช ื”ืชืคื•ืงื”, ืœืžื–ืขืจ ืืช ื–ืžืŸ ื”ืชื’ื•ื‘ื” ื•ืœื”ื™ืžื ืข ืžืขื•ืžืก ื™ืชืจ ืขืœ ื›ืœ ืžืฉืื‘ ื‘ื•ื“ื“. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื•ืชืงืŸ ืขืœ ืžื’ื•ื•ืŸ ื”ืคืฆื•ืช ืœื™ื ื•ืงืก, ื›ืžื• CentOS 8, ืฉื‘ื• ื ืชืžืงื“ ื‘ืžื“ืจื™ืš ื–ื”, ื›ืžื• ื’ื ืžืขืจื›ื•ืช ื“ื‘ื™ืืŸ 8 ะธ ืื•ื‘ื•ื ื˜ื• 16.

ื”ืชืงื ืช ืžืื–ืŸ ื”ืขื•ืžืก HAProxy ื‘- CentOS

HAProxy ืžืชืื™ืžื” ื‘ืžื™ื•ื—ื“ ืœืืชืจื™ื ืขื ืชืขื‘ื•ืจื” ื’ื‘ื•ื”ื” ืžืื•ื“ ื•ืœื›ืŸ ืžืฉืžืฉืช ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืœืฉื™ืคื•ืจ ื”ืืžื™ื ื•ืช ื•ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ืชืฆื•ืจื•ืช ืฉื™ืจื•ืชื™ ืื™ื ื˜ืจื ื˜ ืžืจื•ื‘ื™ ืฉืจืชื™ื. ืžื“ืจื™ืš ื–ื” ืžืชืืจ ืืช ื”ืฉืœื‘ื™ื ืœื”ื’ื“ืจืช HAProxy ื›ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืžืืจื— ืขื ืŸ CentOS 8, ืืฉืจ ืžื ืชื‘ ืืช ื”ืชื ื•ืขื” ืืœ ืฉืจืชื™ ื”ืื™ื ื˜ืจื ื˜ ืฉืœืš.

ื›ืชื ืื™ ืžื•ืงื“ื ืœืชื•ืฆืื•ืช ื”ื˜ื•ื‘ื•ืช ื‘ื™ื•ืชืจ, ืืชื” ืฆืจื™ืš ืœื”ื™ื•ืช ืœืคื—ื•ืช ืฉื ื™ ืฉืจืชื™ ืื™ื ื˜ืจื ื˜ ื•ืฉืจืช ืื™ื–ื•ืŸ ืขื•ืžืกื™ื. ืฉืจืชื™ ืื™ื ื˜ืจื ื˜ ื—ื™ื™ื‘ื™ื ืœื”ืคืขื™ืœ ืœืคื—ื•ืช ืฉื™ืจื•ืช ืื™ื ื˜ืจื ื˜ ื‘ืกื™ืกื™ ื›ื’ื•ืŸ nginx ืื• httpd ื›ื“ื™ ืœื‘ื“ื•ืง ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื‘ื™ื ื™ื”ื.

ื”ืชืงื ืช HAProxy ื‘- CentOS 8

ืžื›ื™ื•ื•ืŸ ืฉ-HAProxy ื”ื•ื ื™ื™ืฉื•ื ืงื•ื“ ืคืชื•ื— ื”ืžืชืคืชื— ื‘ืžื”ื™ืจื•ืช, ื™ื™ืชื›ืŸ ืฉื”ื”ืคืฆื” ื”ื–ืžื™ื ื” ืขื‘ื•ืจืš ื‘ืžืื’ืจื™ CentOS ื”ืกื˜ื ื“ืจื˜ื™ื™ื ืื™ื ื” ื”ื’ืจืกื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ. ื›ื“ื™ ืœื’ืœื•ืช ืืช ื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช, ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

sudo yum info haproxy

HAProxy ืชืžื™ื“ ืžืกืคืงืช ืฉืœื•ืฉ ื’ืจืกืื•ืช ื™ืฆื™ื‘ื•ืช ืœื‘ื—ื™ืจื”: ืฉืชื™ ื”ื’ืจืกืื•ืช ื”ื ืชืžื›ื•ืช ื‘ื™ื•ืชืจ ื•ื’ืจืกื” ืฉืœื™ืฉื™ืช ื™ืฉื ื” ื™ื•ืชืจ ืฉืขื“ื™ื™ืŸ ืžืงื‘ืœืช ืขื“ื›ื•ื ื™ื ืงืจื™ื˜ื™ื™ื. ืืชื” ืชืžื™ื“ ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืืช ื”ื’ืจืกื” ื”ื™ืฆื™ื‘ื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ื”ืจืฉื•ืžื” ื‘ืืชืจ HAProxy ื•ืœืื—ืจ ืžื›ืŸ ืœื”ื—ืœื™ื˜ ืขื ืื™ื–ื• ื’ืจืกื” ืืชื” ืจื•ืฆื” ืœืขื‘ื•ื“.

ื‘ืžื“ืจื™ืš ื–ื” ื ืชืงื™ืŸ ืืช ื”ื’ืจืกื” ื”ื™ืฆื™ื‘ื” ื”ืื—ืจื•ื ื” 2.0, ืฉืขื“ื™ื™ืŸ ืœื ื”ื™ื™ืชื” ื–ืžื™ื ื” ื‘ืžืื’ืจื™ื ื”ืกื˜ื ื“ืจื˜ื™ื™ื ื‘ื–ืžืŸ ื›ืชื™ื‘ืช ื”ืžื“ืจื™ืš. ืชืฆื˜ืจืš ืœื”ืชืงื™ืŸ ืื•ืชื• ืžื”ืžืงื•ืจ ื”ืžืงื•ืจื™. ืื‘ืœ ืจืืฉื™ืช, ื‘ื“ื•ืง ืื ืขืžื“ืช ื‘ืชื ืื™ื ื”ื“ืจื•ืฉื™ื ืœื”ื•ืจื“ื” ื•ื”ื™ื“ื•ืจ ืฉืœ ื”ืชื•ื›ื ื™ืช.

sudo yum install gcc pcre-devel tar make -y

ื”ื•ืจื“ ืืช ืงื•ื“ ื”ืžืงื•ืจ ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ืœืžื˜ื”. ืืชื” ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืื ื™ืฉ ื’ืจืกื” ื—ื“ืฉื” ื™ื•ืชืจ ื–ืžื™ื ื” ื‘- ืขืžื•ื“ ื”ื”ื•ืจื“ื” ืฉืœ HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

ืœืื—ืจ ื”ืฉืœืžืช ื”ื”ื•ืจื“ื”, ื—ืœืฅ ืืช ื”ืงื‘ืฆื™ื ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ืœืžื˜ื”:

tar xzvf ~/haproxy.tar.gz -C ~/

ืขื‘ื•ืจ ืืœ ืกืคืจื™ื™ืช ื”ืžืงื•ืจ ื”ืœื ืืจื•ื–:

cd ~/haproxy-2.0.7

ืœืื—ืจ ืžื›ืŸ ื”ืจื›ื™ื‘ ืืช ื”ืชื•ื›ื ื™ืช ืขื‘ื•ืจ ื”ืžืขืจื›ืช ืฉืœืš:

make TARGET=linux-glibc

ื•ืœื‘ืกื•ืฃ, ื”ืชืงืŸ ืืช HAProxy ืขืฆืžื”:

sudo make install

HAProxy ืžื•ืชืงืŸ ื›ืขืช, ืื‘ืœ ื–ื” ื“ื•ืจืฉ ื›ืžื” ืžื ื™ืคื•ืœืฆื™ื•ืช ื ื•ืกืคื•ืช ื›ื“ื™ ืœื’ืจื•ื ืœื–ื” ืœืขื‘ื•ื“. ื‘ื•ืื• ื ืžืฉื™ืš ืœื”ื’ื“ื™ืจ ืืช ื”ืชื•ื›ื ื” ื•ื”ืฉื™ืจื•ืชื™ื ืœืžื˜ื”.

ื”ื’ื“ืจืช HAProxy ืขื‘ื•ืจ ื”ืฉืจืช ืฉืœืš

ื›ืขืช ื”ื•ืกืฃ ืืช ื”ืกืคืจื™ื•ืช ื•ืงื•ื‘ืฅ ื”ืกื˜ื˜ื™ืกื˜ื™ืงื” ื”ื‘ืื™ื ืขื‘ื•ืจ ืขืจื›ื™ HAProxy:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

ืฆื•ืจ ืงื™ืฉื•ืจ ืกืžืœื™ ืœืงื‘ืฆื™ื ื”ื‘ื™ื ืืจื™ื™ื ื›ื“ื™ ืฉืชื•ื›ืœ ืœื”ืคืขื™ืœ ืคืงื•ื“ื•ืช HAProxy ื›ืžืฉืชืžืฉ ืจื’ื™ืœ:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

ืื ื‘ืจืฆื•ื ืš ืœื”ื•ืกื™ืฃ ืคืจื•ืงืกื™ ืœืžืขืจื›ืช ืฉืœืš ื›ืฉื™ืจื•ืช, ื”ืขืชืง ืืช ื”ืงื•ื‘ืฅ haproxy.init ืžื“ื•ื’ืžืื•ืช ืœืกืคืจื™ื™ืช /etc/init.d ืฉืœืš. ืขืจื•ืš ืืช ื”ืจืฉืื•ืช ื”ืงื•ื‘ืฅ ื›ืš ืฉื”ืกืงืจื™ืคื˜ ื™ืคืขืœ, ื•ืœืื—ืจ ืžื›ืŸ ื”ืคืขืœ ืžื—ื“ืฉ ืืช ื”-systemd daemon:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

ืืชื” ื’ื ืฆืจื™ืš ืœืืคืฉืจ ืœืฉื™ืจื•ืช ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื›ืืฉืจ ื”ืžืขืจื›ืช ืžื•ืคืขืœืช:

sudo chkconfig haproxy on

ืžื˜ืขืžื™ ื ื•ื—ื•ืช, ืžื•ืžืœืฅ ื’ื ืœื”ื•ืกื™ืฃ ืžืฉืชืžืฉ ื—ื“ืฉ ืœื”ืคืขืœืช HAProxy:

sudo useradd -r haproxy

ืœืื—ืจ ืžื›ืŸ, ืชื•ื›ืœ ืœื‘ื“ื•ืง ืฉื•ื‘ ืืช ืžืกืคืจ ื”ื’ืจืกื” ื”ืžื•ืชืงื ืช ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

ื‘ืžืงืจื” ืฉืœื ื•, ื”ื’ืจืกื” ืฆืจื™ื›ื” ืœื”ื™ื•ืช 2.0.7, ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืคืœื˜ ืœื“ื•ื’ืžื” ืœืžืขืœื”.

ืœื‘ืกื•ืฃ, ื—ื•ืžืช ื”ืืฉ ื”ืžื•ื’ื“ืจืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘- CentOS 8 ืžื’ื‘ื™ืœื” ืœืžื“ื™ ืขื‘ื•ืจ ื”ืคืจื•ื™ืงื˜ ื”ื–ื”. ื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช ื›ื“ื™ ืœืืคืฉืจ ืฉื™ืจื•ืชื™ื ื ื“ืจืฉื™ื ื•ืœืืคืก ืืช ื—ื•ืžืช ื”ืืฉ:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

ื”ื’ื“ืจืช ืžืื–ืŸ ืขื•ืžืกื™ื

ื”ื’ื“ืจืช HAProxy ื”ื™ื ืชื”ืœื™ืš ืคืฉื•ื˜ ืœืžื“ื™. ื‘ืขื™ืงืจื• ืฉืœ ื“ื‘ืจ, ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื”ื•ื ืœื•ืžืจ ืœ-HAProxy ืœืื™ืœื• ื—ื™ื‘ื•ืจื™ื ื”ื™ื ืฆืจื™ื›ื” ืœื”ืื–ื™ืŸ ื•ื”ื™ื›ืŸ ื”ื™ื ืฆืจื™ื›ื” ืœื”ืขื‘ื™ืจ ืื•ืชื.

ื–ื” ื ืขืฉื” ืขืœ ื™ื“ื™ ื™ืฆื™ืจืช ืงื•ื‘ืฅ ืชืฆื•ืจื” /etc/haproxy/haproxy.cfg ืขื ื”ื’ื“ืจื•ืช ื”ื’ื“ืจื”. ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืขืœ ืืคืฉืจื•ื™ื•ืช ื”ืชืฆื•ืจื” ืฉืœ HAProxy ื‘ื“ืฃ ื”ืชื™ืขื•ื“ืื ืืชื” ืจื•ืฆื” ืœื“ืขืช ื™ื•ืชืจ ืขืœ ื–ื”.

ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื‘ืฉื›ื‘ืช ื”ื”ื•ื‘ืœื” (ืฉื›ื‘ื” 4)

ื ืชื—ื™ืœ ืขื ื”ื”ื’ื“ืจื” ื”ื‘ืกื™ืกื™ืช. ืฆื•ืจ ืงื•ื‘ืฅ ืชืฆื•ืจื” ื—ื“ืฉ, ืœืžืฉืœ ื‘ืืžืฆืขื•ืช vi ืขื ื”ืคืงื•ื“ื” ืœืžื˜ื”:

sudo vi /etc/haproxy/haproxy.cfg

ื”ื•ืกืฃ ืืช ื”ืกืขื™ืคื™ื ื”ื‘ืื™ื ืœืงื•ื‘ืฅ. ื”ื—ืœืฃ ืฉื ืฉืจืช ืžื” ืฆืจื™ืš ืœืงืจื•ื ืœืฉืจืชื™ื ืฉืœืš ื‘ื“ืฃ ื”ืกื˜ื˜ื™ืกื˜ื™ืงื”, ื•ื›ืŸ private_ip - ื›ืชื•ื‘ื•ืช IP ืคืจื˜ื™ื•ืช ืฉืœ ื”ืฉืจืชื™ื ืฉืืœื™ื”ื ื‘ืจืฆื•ื ืš ืœื”ืคื ื•ืช ืชืขื‘ื•ืจืช ืื™ื ื˜ืจื ื˜. ืืชื” ื™ื›ื•ืœ ืœื‘ื“ื•ืง ื›ืชื•ื‘ื•ืช IP ืคืจื˜ื™ื•ืช ื‘ืœื•ื— ื”ื‘ืงืจื” ืฉืœ UpCloud ื•ืขืœ ื”ื›ืจื˜ื™ืกื™ื™ื” ืจืฉืช ืคืจื˜ื™ืช ื‘ืชืคืจื™ื˜ ืจืฉืช.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

ื–ื” ืžื’ื“ื™ืจ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืฉื›ื‘ืช ืชืขื‘ื•ืจื” (ืฉื›ื‘ื” 4) ื‘ืฉื ื—ื™ืฆื•ื ื™ http_front ื”ืื–ื ื” ื‘ื™ืฆื™ืื” 80, ืืฉืจ ืœืื—ืจ ืžื›ืŸ ืžืขื‘ื™ืจ ืชืขื‘ื•ืจื” ืœ-backend ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘ืฉื http_back. ื ืชื•ื ื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื ื ื•ืกืคื™ื /haproxy?stats ืžื—ื‘ืจ ืืช ื“ืฃ ื”ืกื˜ื˜ื™ืกื˜ื™ืงื” ืœื›ืชื•ื‘ืช ืฉืฆื•ื™ื ื”.

ืืœื’ื•ืจื™ืชืžื™ื ืฉื•ื ื™ื ืฉืœ ืื™ื–ื•ืŸ ืขื•ืžืกื™ื.

ืฆื™ื•ืŸ ืฉืจืชื™ื ื‘ื—ืœืง ื”ืื—ื•ืจื™ ืžืืคืฉืจ ืœ-HAProxy ืœื”ืฉืชืžืฉ ื‘ืฉืจืชื™ื ืืœื• ืœืื™ื–ื•ืŸ ืขื•ืžืกื™ื ืœืคื™ ืืœื’ื•ืจื™ืชื round-robin ื‘ืžื™ื“ืช ื”ืืคืฉืจ.

ืืœื’ื•ืจื™ืชืžื™ ืื™ื–ื•ืŸ ืžืฉืžืฉื™ื ื›ื“ื™ ืœืงื‘ื•ืข ืœืื™ื–ื” ืฉืจืช ื‘-backend ื›ืœ ื—ื™ื‘ื•ืจ ืžื•ืขื‘ืจ. ื”ื ื” ื›ืžื” ืžื”ืืคืฉืจื•ื™ื•ืช ื”ืฉื™ืžื•ืฉื™ื•ืช:

  • ืจื•ื‘ื™ืŸ ื”ืขื’ื•ืœ: ื›ืœ ืฉืจืช ืžืฉืžืฉ ื‘ืชื•ืจื• ืœืคื™ ืžืฉืงืœื•. ื–ื”ื• ื”ืืœื’ื•ืจื™ืชื ื”ื—ืœืง ื•ื”ื”ื•ื’ืŸ ื‘ื™ื•ืชืจ ื›ืืฉืจ ื–ืžืŸ ื”ืขื™ื‘ื•ื“ ืฉืœ ื”ืฉืจืชื™ื ื ืฉืืจ ืžื•ืคืฅ ื‘ืื•ืคืŸ ืฉื•ื•ื”. ืืœื’ื•ืจื™ืชื ื–ื” ื”ื•ื ื“ื™ื ืžื™, ื•ืžืืคืฉืจ ืœื”ืชืื™ื ืืช ืžืฉืงืœ ื”ืฉืจืช ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”.
  • Leastconn: ื”ืฉืจืช ืขื ื”ื›ื™ ืคื—ื•ืช ื—ื™ื‘ื•ืจื™ื ื ื‘ื—ืจ. Round robin ืžืชื‘ืฆืข ื‘ื™ืŸ ืฉืจืชื™ื ืขื ืื•ืชื• ืขื•ืžืก. ืฉื™ืžื•ืฉ ื‘ืืœื’ื•ืจื™ืชื ื–ื” ืžื•ืžืœืฅ ืœืกืฉื ื™ื ืืจื•ื›ื•ืช ื›ื’ื•ืŸ LDAP, SQL, TSE ื•ื›ื•', ืืš ื”ื•ื ืื™ื ื• ืžืชืื™ื ื‘ืžื™ื•ื—ื“ ืœืกืฉื ื™ื ืงืฆืจื™ื ื›ื’ื•ืŸ HTTP.
  • ืจืืฉื•ืŸ: ื”ืฉืจืช ื”ืจืืฉื•ืŸ ืขื ื—ืจื™ืฆื™ ื—ื™ื‘ื•ืจ ื–ืžื™ื ื™ื ืžืงื‘ืœ ืืช ื”ื—ื™ื‘ื•ืจ. ืฉืจืชื™ื ื ื‘ื—ืจื™ื ืžื”ืžื–ื”ื” ื”ืžืกืคืจื™ ื”ื ืžื•ืš ื‘ื™ื•ืชืจ ืœื’ื‘ื•ื” ื‘ื™ื•ืชืจ, ืืฉืจ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื•ื ืžื™ืงื•ื ื”ืฉืจืช ื‘ื—ื•ื•ื”. ื‘ืจื’ืข ืฉืฉืจืช ืžื’ื™ืข ืœ-maxconn, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืฉืจืช ื”ื‘ื.
  • ืžืงื•ืจ: ื›ืชื•ื‘ืช ื”-IP ื”ืžืงื•ืจ ืขื•ื‘ืจืช ื’ื™ื‘ื•ื‘ ื•ืžื—ื•ืœืงืช ื‘ืžืฉืงืœ ื”ื›ื•ืœืœ ืฉืœ ืฉืจืชื™ื ืคื•ืขืœื™ื ื›ื“ื™ ืœืงื‘ื•ืข ืื™ื–ื” ืฉืจืช ื™ืงื‘ืœ ืืช ื”ื‘ืงืฉื”. ื‘ื“ืจืš ื–ื•, ืื•ืชื” ื›ืชื•ื‘ืช IP ืฉืœ ื”ืœืงื•ื— ืชืขื‘ื•ืจ ืชืžื™ื“ ืœืื•ืชื• ืฉืจืช, ื‘ืขื•ื“ ื”ืฉืจืชื™ื ื™ื™ืฉืืจื• ื–ื”ื™ื.

ื”ื’ื“ืจืช ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ื‘ืจืžืช ื”ื™ื™ืฉื•ื (ืฉื›ื‘ื” 7)

ืืคืฉืจื•ืช ื–ืžื™ื ื” ื ื•ืกืคืช ื”ื™ื ืœื”ื’ื“ื™ืจ ืžืื–ืŸ ืขื•ืžืกื™ื ืœื”ืคืขืœื” ื‘ืฉื›ื‘ืช ื”ื™ื™ืฉื•ื (ืฉื›ื‘ื” 7), ื“ื‘ืจ ืฉื™ืžื•ืฉื™ ื›ืืฉืจ ื—ืœืงื™ื ืžืืคืœื™ืงืฆื™ื™ืช ื”ืื™ื ื˜ืจื ื˜ ืฉืœืš ืžืžื•ืงืžื™ื ืขืœ ืžืืจื—ื™ื ืฉื•ื ื™ื. ื ื™ืชืŸ ืœื”ืฉื™ื’ ื–ืืช ืขืœ ื™ื“ื™ ืžื ื™ืขืช ื”ืฉื™ื“ื•ืจ ืฉืœ ื”ื—ื™ื‘ื•ืจ, ืœืžืฉืœ ื‘ืืžืฆืขื•ืช ื›ืชื•ื‘ืช URL.

ืคืชื— ืืช ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืฉืœ HAProxy ื‘ืืžืฆืขื•ืช ืขื•ืจืš ื˜ืงืกื˜:

sudo vi /etc/haproxy/haproxy.cfg

ืœืื—ืจ ืžื›ืŸ ื”ื’ื“ืจ ืืช ืžืงื˜ืขื™ ื”ืงืฆื” ื•ื”ืงืฆื” ื”ืื—ื•ืจื™ ืœืคื™ ื”ื“ื•ื’ืžื” ืฉืœื”ืœืŸ:

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

ื”-frontend ืžื›ืจื™ื– ืขืœ ื›ืœืœ ACL ื‘ืฉื url_blog ืฉื—ืœ ืขืœ ื›ืœ ื”ื—ื™ื‘ื•ืจื™ื ืขื ื ืชื™ื‘ื™ื ืฉืžืชื—ื™ืœื™ื ื‘-/blog. Use_backend ืžืฆื™ื™ืŸ ืฉื—ื™ื‘ื•ืจื™ื ื”ืชื•ืืžื™ื ืœืชื ืื™ url_blog ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžื•ื’ืฉ ืขืœ ื™ื“ื™ ืงืฆื” ืขื•ืจืคื™ ื‘ืฉื blog_back, ื•ื›ืœ ืฉืืจ ื”ื‘ืงืฉื•ืช ืžื˜ื•ืคืœื•ืช ืขืœ ื™ื“ื™ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ.

ื‘ืฆื“ ื”ืื—ื•ืจื™, ื”ืชืฆื•ืจื” ืžื’ื“ื™ืจื” ืฉืชื™ ืงื‘ื•ืฆื•ืช ืฉืœ ืฉืจืชื™ื: http_back, ื›ืžื• ืงื•ื“ื, ื•ืื—ืช ื—ื“ืฉื” ื‘ืฉื blog_back, ื”ืžื˜ืคืœืช ื‘ื—ื™ื‘ื•ืจื™ื ืœ-example.com/blog.

ืœืื—ืจ ืฉื™ื ื•ื™ ื”ื”ื’ื“ืจื•ืช, ืฉืžื•ืจ ืืช ื”ืงื•ื‘ืฅ ื•ื”ืคืขืœ ืžื—ื“ืฉ ืืช HAProxy ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

sudo systemctl restart haproxy

ืื ืืชื” ืžืงื‘ืœ ืื–ื”ืจื•ืช ืื• ื”ื•ื“ืขื•ืช ืฉื’ื™ืื” ื‘ืžื”ืœืš ื”ืืชื—ื•ืœ, ื‘ื“ื•ืง ืืช ื”ืชืฆื•ืจื” ืฉืœืš ืขื‘ื•ืจืŸ ื•ื•ื“ื ืฉื™ืฆืจืช ืืช ื›ืœ ื”ืงื‘ืฆื™ื ื•ื”ืชื™ืงื™ื•ืช ื”ื“ืจื•ืฉื™ื, ื•ืœืื—ืจ ืžื›ืŸ ื ืกื” ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ืฉื•ื‘.

ื‘ื“ื™ืงืช ื”ื”ื’ื“ืจื”

ืœืื—ืจ ื”ื’ื“ืจืช ื”ืชืฆื•ืจื” ื•ื”ื”ืคืขืœื” ืฉืœ HAProxy, ืคืชื— ืืช ื›ืชื•ื‘ืช ื”-IP ื”ืฆื™ื‘ื•ืจื™ืช ืฉืœ ืฉืจืช ืžืื–ืŸ ื”ืขื•ืžืก ื‘ื“ืคื“ืคืŸ ื•ื‘ื“ื•ืง ืื ืืชื” ืžื—ื•ื‘ืจ ื›ื”ืœื›ื” ืœ-backend. ื”ืคืจืžื˜ืจ stats uri ื‘ืชืฆื•ืจื” ื™ื•ืฆืจ ื“ืฃ ืกื˜ื˜ื™ืกื˜ื™ืงื” ื‘ื›ืชื•ื‘ืช ืฉืฆื•ื™ื ื”.

http://load_balancer_public_ip/haproxy?stats

ื›ืืฉืจ ืืชื” ื˜ื•ืขืŸ ืืช ื“ืฃ ื”ืกื˜ื˜ื™ืกื˜ื™ืงื”, ืื ื›ืœ ื”ืฉืจืชื™ื ืฉืœืš ืžืจืื™ื ื™ืจื•ืง, ืื– ื”ื”ื’ื“ืจื” ื”ืฆืœื™ื—ื”!

ื”ืชืงื ืช ืžืื–ืŸ ื”ืขื•ืžืก HAProxy ื‘- CentOS

ื“ืฃ ื”ื ืชื•ื ื™ื ื”ืกื˜ื˜ื™ืกื˜ื™ื™ื ืžื›ื™ืœ ืžื™ื“ืข ืฉื™ืžื•ืฉื™ ืœืžืขืงื‘ ืื—ืจ ืžืืจื—ื™ ื”ืื™ื ื˜ืจื ื˜ ืฉืœืš, ื›ื•ืœืœ ื–ืžืŸ ืขืœื™ื™ื”/ื™ืจื™ื“ื” ื•ืžืกืคืจ ื”ืคืขืœื•ืช. ืื ื”ืฉืจืช ืžืกื•ืžืŸ ื‘ืื“ื•ื, ื•ื“ืื• ืฉื”ืฉืจืช ืžื•ืคืขืœ ื•ืฉืชื•ื›ืœื• ืœืขืฉื•ืช ping ืฉืœื• ืžืžื—ืฉื‘ ืžืื–ืŸ ื”ืขื•ืžืก.

ืื ืžืื–ืŸ ื”ืขื•ืžืก ืฉืœืš ืœื ืžื’ื™ื‘, ื•ื“ื ืฉื—ื™ื‘ื•ืจื™ HTTP ืื™ื ื ื ื—ืกืžื™ื ืขืœ ื™ื“ื™ ื—ื•ืžืช ืืฉ. ื•ื“ื ื’ื ืฉ-HAProxy ืคื•ืขืœ ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ืฉืœื”ืœืŸ:

sudo systemctl status haproxy

ื”ื’ื ื” ืขืœ ืขืžื•ื“ ื”ืกื˜ื˜ื™ืกื˜ื™ืงื” ื‘ืืžืฆืขื•ืช ืกื™ืกืžื”

ืขื ื–ืืช, ืื ื“ืฃ ื”ื ืชื•ื ื™ื ื”ืกื˜ื˜ื™ืกื˜ื™ื™ื ืคืฉื•ื˜ ืจืฉื•ื ื‘ืงืฆื” ื”ืงื“ืžื™, ืื– ื”ื•ื ืคืชื•ื— ืœื›ื•ืœื ืœืจืื•ืช, ื•ื–ื” ืื•ืœื™ ืœื ืจืขื™ื•ืŸ ื˜ื•ื‘. ื‘ืžืงื•ื ื–ืืช, ืืชื” ื™ื›ื•ืœ ืœื”ืงืฆื•ืช ืœื• ืžืกืคืจ ื™ืฆื™ืื” ืžื•ืชืื ืื™ืฉื™ืช ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ื”ื“ื•ื’ืžื” ืœืžื˜ื” ืœืกื•ืฃ ืงื•ื‘ืฅ haproxy.cfg ืฉืœืš. ื”ื—ืœืฃ ืฉื ืžืฉืชืžืฉ ะธ ืกื™ืกืžื ืœืžืฉื”ื• ื‘ื˜ื•ื—:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

ืœืื—ืจ ื”ื•ืกืคืช ืงื‘ื•ืฆืช ืžืื–ื™ื ื™ื ื—ื“ืฉื”, ื”ืกืจ ืืช ื”ืงื™ืฉื•ืจ ื”ื™ืฉืŸ ืฉืœ ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช Uri ืžืงื‘ื•ืฆืช ื”ื—ื–ื™ืช. ื‘ืกื™ื•ื, ืฉืžื•ืจ ืืช ื”ืงื•ื‘ืฅ ื•ื”ืคืขืœ ืžื—ื“ืฉ ืืช HAProxy.

sudo systemctl restart haproxy

ืœืื—ืจ ืžื›ืŸ ืคืชื—ื• ืฉื•ื‘ ืืช ืื™ื–ื•ืŸ ื”ืขื•ืžืก ืขื ืžืกืคืจ ื”ื™ืฆื™ืื” ื”ื—ื“ืฉ ื•ื”ื™ื›ื ืกื• ืขื ืฉื ื”ืžืฉืชืžืฉ ื•ื”ืกื™ืกืžื” ืฉืฆื™ื™ื ืชื ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื”.

http://load_balancer_public_ip:8181

ื•ื“ื ืฉื›ืœ ื”ืฉืจืชื™ื ืฉืœืš ืขื“ื™ื™ืŸ ืžืจืื™ื ื™ืจื•ืง ื•ืื– ืคืชื— ืจืง ืืช ื”-IP ืฉืœ ืžืื–ืŸ ื”ืขื•ืžืก ืœืœื ืžืกืคืจื™ ื™ืฆื™ืื•ืช ื‘ื“ืคื“ืคืŸ ืฉืœืš.

http://load_balancer_public_ip/

ืื ื™ืฉ ืœืš ืœืคื—ื•ืช ืžื’ื•ื•ืŸ ืฉืœ ื“ืคื™ ื ื—ื™ืชื” ื‘ืฉืจืชื™ื ื”ืื—ื•ืจื™ื™ื ืฉืœืš, ืชืฉื™ื ืœื‘ ืฉื‘ื›ืœ ืคืขื ืฉืืชื” ื˜ื•ืขืŸ ืžื—ื“ืฉ ืืช ื”ื“ืฃ ืืชื” ืžืงื‘ืœ ืชื’ื•ื‘ื” ืžืžืืจื— โ€‹โ€‹ืื—ืจ. ืืชื” ื™ื›ื•ืœ ืœื ืกื•ืช ืืœื’ื•ืจื™ืชืžื™ ืื™ื–ื•ืŸ ืฉื•ื ื™ื ื‘ืกืขื™ืฃ ื”ืชืฆื•ืจื” ืื• ืœืฆืืช ืชื™ืขื•ื“ ืžืœื.

ืžืกืงื ื”: HAProxy Load Balancer

ื‘ืจื›ื•ืช ืขืœ ื”ืชืงื ืช ืžืื–ืŸ ื”ืขื•ืžืก ืฉืœ HAProxy ืฉืœืš ื‘ื”ืฆืœื—ื”! ืืคื™ืœื• ืขื ื”ื’ื“ืจื” ื‘ืกื™ืกื™ืช ืฉืœ ืื™ื–ื•ืŸ ืขื•ืžืกื™ื, ืืชื” ื™ื›ื•ืœ ืœืฉืคืจ ืžืฉืžืขื•ืชื™ืช ืืช ื”ื‘ื™ืฆื•ืขื™ื ื•ื”ื–ืžื™ื ื•ืช ืฉืœ ื™ื™ืฉื•ื ื”ืื™ื ื˜ืจื ื˜ ืฉืœืš. ื”ืžื“ืจื™ืš ื”ื–ื” ื”ื•ื ืจืง ื”ืงื“ืžื” ืœืื™ื–ื•ืŸ ืขื•ืžืกื™ื ืขื HAProxy, ืฉืžืกื•ื’ืœ ืœื”ืจื‘ื” ื™ื•ืชืจ ืžืžื” ืฉื ื™ืชืŸ ืœื›ืกื•ืช ื‘ืžื“ืจื™ืš ื”ื”ื’ื“ืจื” ื”ืžื”ื™ืจื”. ืื ื• ืžืžืœื™ืฆื™ื ืœื”ืชื ืกื•ืช ืขื ืชืฆื•ืจื•ืช ืฉื•ื ื•ืช ื‘ืืžืฆืขื•ืช ืชื™ืขื•ื“ ื ืจื—ื‘, ื–ืžื™ืŸ ืœ-HAProxy, ื•ืœืื—ืจ ืžื›ืŸ ื”ืชื—ืœ ืœืชื›ื ืŸ ืื™ื–ื•ืŸ ืขื•ืžืกื™ื ืขื‘ื•ืจ ืกื‘ื™ื‘ืช ื”ื™ื™ืฆื•ืจ ืฉืœืš.

ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืžืกืคืจ ืžืืจื—ื™ื ื›ื“ื™ ืœื”ื’ืŸ ืขืœ ืฉื™ืจื•ืช ื”ืื™ื ื˜ืจื ื˜ ืฉืœืš ืขื ืžืจื•ื•ื— ืจืืฉ, ืžืื–ืŸ ื”ืขื•ืžืก ืขืฆืžื• ืขื“ื™ื™ืŸ ืขืฉื•ื™ ืœื”ื•ื•ืช ื ืงื•ื“ืช ื›ืฉืœ. ืืชื” ื™ื›ื•ืœ ืœืฉืคืจ ืขื•ื“ ื™ื•ืชืจ ืืช ื”ื–ืžื™ื ื•ืช ื”ื’ื‘ื•ื”ื” ืขืœ ื™ื“ื™ ื”ืชืงื ืช IP ืฆืฃ ื‘ื™ืŸ ืžืื–ื ื™ ืขื•ืžืกื™ื ืžืจื•ื‘ื™ื. ืืชื” ื™ื›ื•ืœ ืœื‘ืจืจ ืขืœ ื›ืš ืขื•ื“ ืืฆืœื ื• ืžืืžืจ ืขืœ ื›ืชื•ื‘ื•ืช IP ืฆืคื•ืช ื‘-UpCloud.

ืขื•ื“ ืขืœ ื”ืงื•ืจืก "ืžื ื”ืœ ืœื™ื ื•ืงืก. ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ื•ืืฉื›ื•ืœื•ืช"***

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”