Инструменты пользователя

Инструменты сайта


linux:halb
Warning: Undefined array key 15 in /home/virtwww/w_linko22-ru_c0d3353b/http/inc/html.php on line 1453

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
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 ======
 +
 ===== Подготовка ===== ===== Подготовка =====
  
 **/etc/hosts** - обязательно на каждой ноде прописываем все хосты на случай если что то может случиться с DNS **/etc/hosts** - обязательно на каждой ноде прописываем все хосты на случай если что то может случиться с DNS
  
 +===== HAProxy =====
 +
 +На обоих серверах делаем:
 +
 +<code cli>
 +cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.orig
 +cat /dev/null > /etc/haproxy/haproxy.cfg
 +vi /etc/haproxy/haproxy.cfg
 +</code>
 +
 +<file bash haproxy.cfg>
 +global
 +        log 127.0.0.1   local0
 +        log 127.0.0.1   local1 notice
 +        #log loghost    local0 info
 +        maxconn 4096
 +        #debug
 +        #quiet
 +        user haproxy
 +        group haproxy
 +
 +defaults
 +        log     global
 +        mode    http
 +        option  httplog
 +        option  dontlognull
 +        retries 3
 +        redispatch
 +        maxconn 2000
 +        contimeout      5000
 +        clitimeout      50000
 +        srvtimeout      50000
 +
 +listen webfarm 192.168.0.99:80
 +       mode http
 +       stats enable
 +       stats auth someuser:somepassword
 +       balance roundrobin
 +       cookie JSESSIONID prefix
 +       option httpclose
 +       option forwardfor # для nginx комментируем
 +       option httpchk HEAD /check.txt HTTP/1.0
 +       server webA 192.168.0.102:80 cookie A check
 +       server webB 192.168.0.103:80 cookie B check
 +</file>
 +===== keepalived =====
 +
 +Этот сервис предназначен для мониторинга и управления выделенным виртуальным адресом в кластере серверов.
 +
 +Устанавливаем его:
 +
 +  yum install -y keepalived
 +
 +Для того, что бы HAProxy смог использовать виртуальный IP адрес, мы добавляем параметр в файл **/etc/sysctl.conf**
 +
 +  net.ipv4.ip_nonlocal_bind=1
 +
 +И запускам
 +
 +  sysctl -p
 +
 +А там же нам надо в **/etc/sysconfig/iptables** разрешить MULTICAST, если нет. Добавляем строчку:
 +
 +<code bash>
 +-A INPUT -s 192.168.0.0/24 -d 224.0.0.0/8 -j ACCEPT
 +</code>
 +
 +Теперь настраиваем на keepalived на нодах. 
 +
 +==== На первой: ====
 +
 +Файл: /etc/keepalived/keepalived.conf
 +
 +<file bash keepalived.conf>
 +vrrp_script chk_haproxy {           # Requires keepalived-1.1.13
 +        script "killall -0 haproxy"     # cheaper than pidof
 +        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
 +        }
 +}
 +</file>
 +
 +И запускаем keepalived
 +
 +  service keepalived start
 +
 +Проверям конфигурацию. Должно получиться что то подобное:
 +
 +<code cli>
 +# ip addr sh eth0
 +2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
 +    link/ether 00:0c:29:63:f7:5c brd ff:ff:ff:ff:ff:ff
 +    inet 192.168.0.100/24 brd 192.168.0.255 scope global eth0
 +    inet 192.168.0.99/32 scope global eth0
 +    inet6 fe80::20c:29ff:fe63:f75c/64 scope link
 +       valid_lft forever preferred_lft forever
 +</code>
 +
 +Добавляем в автозагрузку
 +
 +  chkconfig keepalived on
 +
 +==== На второй ====
 +
 +Файл: /etc/keepalived/keepalived.conf
 +
 +Небольшое, но очень важное отличие - мы используем здесь **priority 100** вместо  **priority 101**, что бы сделать вторую ноду запасной (slave или hot-standby)
 +<file bash keepalived.conf>
 +vrrp_script chk_haproxy {           # Requires keepalived-1.1.13
 +        script "killall -0 haproxy"     # cheaper than pidof
 +        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
 +        }
 +}
 +</file>
 +
 +Запускаем:
 +
 +  /etc/init.d/keepalived start
 +
 +И смотрим, что получилось:
 +
 +<code cli>
 +# ip addr sh eth0
 +2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
 +    link/ether 00:0c:29:be:7b:3b brd ff:ff:ff:ff:ff:ff
 +    inet 192.168.0.101/24 brd 192.168.0.255 scope global eth0
 +    inet6 fe80::20c:29ff:febe:7b3b/64 scope link
 +       valid_lft forever preferred_lft forever
 +</code>
 +
 +Добавляем в автозагрузку
 +
 +  chkconfig keepalived on
 +===== Запуск =====
 +
 +Запускаем HAProxy и добавляем его в автозагрузку.
 +
 +  service haproxy start
 +
 +===== Статьи =====
 +Оригинал [[http://www.howtoforge.com/setting-up-a-high-availability-load-balancer-with-haproxy-keepalived-on-debian-lenny-p2]]
 +
 +[[http://rails.nuvvo.com/lesson/3387-nginx-+-haproxy-usage-and-a-gotcha]]
  
linux/halb.1320047336.txt.gz · Последнее изменение: 2011/10/31 11:48 — linko22@gmail.com