Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
linux:halb [2011/10/31 11:48] linko22@gmail.com создано |
linux:halb [2011/11/01 09:45] (текущий) linko22@gmail.com [HAProxy] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== High Availability and Load-Balancing ====== | ====== High Availability and Load-Balancing ====== | ||
+ | |||
===== Подготовка ===== | ===== Подготовка ===== | ||
**/ | **/ | ||
+ | ===== HAProxy ===== | ||
+ | |||
+ | На обоих серверах делаем: | ||
+ | |||
+ | <code cli> | ||
+ | cp / | ||
+ | cat /dev/null > / | ||
+ | vi / | ||
+ | </ | ||
+ | |||
+ | <file bash haproxy.cfg> | ||
+ | global | ||
+ | log 127.0.0.1 | ||
+ | log 127.0.0.1 | ||
+ | #log loghost | ||
+ | maxconn 4096 | ||
+ | #debug | ||
+ | #quiet | ||
+ | user haproxy | ||
+ | group haproxy | ||
+ | |||
+ | defaults | ||
+ | log | ||
+ | mode http | ||
+ | option | ||
+ | option | ||
+ | retries 3 | ||
+ | redispatch | ||
+ | maxconn 2000 | ||
+ | contimeout | ||
+ | clitimeout | ||
+ | srvtimeout | ||
+ | |||
+ | listen webfarm 192.168.0.99: | ||
+ | mode http | ||
+ | stats enable | ||
+ | stats auth someuser: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | ===== keepalived ===== | ||
+ | |||
+ | Этот сервис предназначен для мониторинга и управления выделенным виртуальным адресом в кластере серверов. | ||
+ | |||
+ | Устанавливаем его: | ||
+ | |||
+ | yum install -y keepalived | ||
+ | |||
+ | Для того, что бы HAProxy смог использовать виртуальный IP адрес, мы добавляем параметр в файл **/ | ||
+ | |||
+ | net.ipv4.ip_nonlocal_bind=1 | ||
+ | |||
+ | И запускам | ||
+ | |||
+ | sysctl -p | ||
+ | |||
+ | А там же нам надо в **/ | ||
+ | |||
+ | <code bash> | ||
+ | -A INPUT -s 192.168.0.0/ | ||
+ | </ | ||
+ | |||
+ | Теперь настраиваем на keepalived на нодах. | ||
+ | |||
+ | ==== На первой: | ||
+ | |||
+ | Файл: / | ||
+ | |||
+ | <file bash keepalived.conf> | ||
+ | vrrp_script chk_haproxy { # Requires keepalived-1.1.13 | ||
+ | script " | ||
+ | interval 2 # check every 2 seconds | ||
+ | weight 2 # add 2 points of prio if OK | ||
+ | } | ||
+ | |||
+ | vrrp_instance VI_1 { | ||
+ | interface eth0 | ||
+ | state MASTER | ||
+ | virtual_router_id 51 | ||
+ | priority 101 # 101 on master, 100 on backup | ||
+ | virtual_ipaddress { | ||
+ | 192.168.0.99 | ||
+ | } | ||
+ | track_script { | ||
+ | chk_haproxy | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | И запускаем keepalived | ||
+ | |||
+ | service keepalived start | ||
+ | |||
+ | Проверям конфигурацию. Должно получиться что то подобное: | ||
+ | |||
+ | <code cli> | ||
+ | # ip addr sh eth0 | ||
+ | 2: eth0: < | ||
+ | link/ether 00: | ||
+ | inet 192.168.0.100/ | ||
+ | inet 192.168.0.99/ | ||
+ | inet6 fe80:: | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Добавляем в автозагрузку | ||
+ | |||
+ | chkconfig keepalived on | ||
+ | |||
+ | ==== На второй ==== | ||
+ | |||
+ | Файл: / | ||
+ | |||
+ | Небольшое, | ||
+ | <file bash keepalived.conf> | ||
+ | vrrp_script chk_haproxy { # Requires keepalived-1.1.13 | ||
+ | script " | ||
+ | interval 2 # check every 2 seconds | ||
+ | weight 2 # add 2 points of prio if OK | ||
+ | } | ||
+ | |||
+ | vrrp_instance VI_1 { | ||
+ | interface eth0 | ||
+ | state MASTER | ||
+ | virtual_router_id 51 | ||
+ | priority 100 # 101 on master, 100 on backup | ||
+ | virtual_ipaddress { | ||
+ | 192.168.0.99 | ||
+ | } | ||
+ | track_script { | ||
+ | chk_haproxy | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Запускаем: | ||
+ | |||
+ | / | ||
+ | |||
+ | И смотрим, | ||
+ | |||
+ | <code cli> | ||
+ | # ip addr sh eth0 | ||
+ | 2: eth0: < | ||
+ | link/ether 00: | ||
+ | inet 192.168.0.101/ | ||
+ | inet6 fe80:: | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Добавляем в автозагрузку | ||
+ | |||
+ | chkconfig keepalived on | ||
+ | ===== Запуск ===== | ||
+ | |||
+ | Запускаем HAProxy и добавляем его в автозагрузку. | ||
+ | |||
+ | service haproxy start | ||
+ | |||
+ | ===== Статьи ===== | ||
+ | Оригинал [[http:// | ||
+ | |||
+ | [[http:// | ||