Ключевые слова:http, virtual, cluster, linux, balance, (найти похожие документы)
From: Шешко Алексей <sheshka@yahoo.com.>
Newsgroups: email
Date: Mon, 3 May 2006 14:31:37 +0000 (UTC)
Subject: Обеспечение надежности http(s) сервисов с помощью Linux Virtual Server.
-------------------
Задача: Обеспечить надежность http и https сервисов, устранить единую точку отказа.
Решение: Предполагаем следующее решение:
Траффик поступающий на реальный ip 209.x.x.19 редиректиться на
"виртуальный" ip 10.0.2.50/8, который перемещаеться между
балансировщиками нагрузки LB1 и LB2, имеющими на интерфейсе eth0 ip
10.0.1.230/8 и 10.0.1.231/8 соответсвенно.
Далее трафик с интерфейса eth1, имеющего "виртуальный" ip
192.168.120.50/24 уходит на пул "реальных" серверов, в нашем примере
192.168.120.86 и 192.168.120.87. Для реализации используем http://www.ultramonkey.org/3/
Балансировщики нагрузки взаимодействуют с друг другом посредством
мультикаст пакетов, и если мастер LB1 перестал отвечать, "виртуальные"
ip мигрируют на резервный балансировщик LB2. Доступность "реальных"
серверов проверяется посредством tcp connect. Установка небходимого
софта никаких сложностей не имеет, просто ставим нужные нам rpm пакеты,
однако "любителям наблюдать за выводом gcc" стоит быть осторожными, так
как файл /sbin/ipvsadm должен быть собран с использованием заголовочных
файлов текущей версии ядра, в противном случае его работа может быть
непредсказуемой.
Следует заметить что никаких модификаций софта на "реальных" серверах не
производилось.
Таким образом мы устранем точку отказа балансировщика нагрузки
посредством его резервирования, а так же резервируем http(s) сервера,
т.е. устраняем точку отказа еденичного http(s) сервера - получаем
High-Availability и High-Performance решение.
________ _____
| | | |
| | | .86 |
| LB1 |-------->----| |
|(active)|____ |_____|
|________| |
| |
--->----VIP | _____
__|_____ \--->----| |
| | | .87 |
| LB2 | | |
| | |_____|
| |
|________|
/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
/etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 10
#bcast eth0
mcast eth0 225.0.0.1 696 1 0
#udpport 695
node LB1 LB2
auto_failback on
ping 10.0.1.11
#respawn hacluster /usr/lib64/heartbeat/ipfail
/etc/ha.d/haresources
LB1 IPaddr::10.0.2.50/8/eth0 IPaddr::192.168.120.50/24/eth1 ldirectord::ldirectord.cf
/etc/ha.d/authkeys
auth 1
1 sha1 f176669675682f063d2b088c1b462a2f
/etc/ha.d/conf/ldirectord.cf
# Global Directives
checktimeout=5
checkinterval=5
#fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
#logfile="local0"
quiescent=no
# A sample virtual with a fallback that will override the goble setting
# the real must start at least 4 spaces from left margin
#your "index.html" file must contain the string "happy"
virtual=10.0.2.50:443
real=192.168.120.86:443 masq
real=192.168.120.87:443 masq
fallback=127.0.0.1:443
service=https
request="aaaa.html"
receive="aaaa"
checktype = connect
scheduler=wlc
persistent=120
netmask=255.255.255.0
protocol=tcp
virtual=10.0.2.50:80
real=192.168.120.86:80 masq
real=192.168.120.87:80 masq
fallback=127.0.0.1:80
service=http
request="aaaa.html"
receive="aaaa"
checktype = connect
scheduler=wlc
persistent=120
netmask=255.255.255.0
protocol=tcp
Ссылки по теме:
1. http://www.linux-ha.org/
2. http://www.ultramonkey.org/3/linux-ha.html
(c) 2006 Шешко Алексей, sheshka@yahoo.com
http://sky-zebra.net/Linux-Virtual-Server.txt