кластер для squid
Собираю кластер для squid(пока из двух машин, в будущем, возможно, буду добавлять). Цели кластера - отказоустойчивость и балансировка нагрузки(нынешний сервер обслуживает около 3,5к пользователей, хочу распределить эту нагрузку).
Пробую на CentOS 6.2 и piranha(lvs, nanny, pulse) и возникли несколько вопросов:
- есть ли смысл поднимать и lvs-роутер, и squid на одной машине?
- если есть(как я пока и пробую), как заставить это работать? У меня пока работает виртуальный IP и по нему я имею доступ к вроде как кластеризованному прокси, но если «уронить» активный сервер, backup-сервер не подхватывает запросы, да и балансировка нагрузки, судя по всему, не работает.
Конфиги:
/etc/sysconfig/iptables
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 10.1.6.16/32 -p tcp -m tcp --dport 8080 -j REDIRECT
-A PREROUTING -d 10.1.6.16/32 -p tcp -m tcp --dport 80 -j REDIRECT
-A PREROUTING -p tcp -d 10.1.6.16/32 --dport 8080 -j MARK --set-mark 443
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 631 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1344 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3636 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 539 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
/etc/sysconfig/ipvsadm
-A -t 10.1.6.16:8080
-a -t 10.1.6.16:8080 -r 10.1.6.14 -m
-A -t 10.1.6.16:80
-a -t 10.1.6.16:80 -r 10.1.6.14 -m
serial_no = 69
primary = 10.1.6.14
service = lvs
backup_active = 1
backup = 10.1.6.15
heartbeat = 1
heartbeat_port = 539
keepalive = 5
deadtime = 15
network = direct
debug_level = NONE
monitor_links = 1
syncdaemon = 1
virtual squid {
active = 1
address = 10.1.6.16 eth0:1
vip_nmask = 255.255.255.255
fwmark = 443
port = 8080
use_regex = 0
load_monitor = none
scheduler = lc
protocol = tcp
timeout = 5
reentry = 15
quiesce_server = 0
server s-proxy0 {
address = 10.1.6.14
active = 1
weight = 1000
}
server s-proxy1 {
address = 10.1.6.15
active = 1
weight = 1000
}
}
virtual apache {
active = 1
address = 10.1.6.16 eth0:2
vip_nmask = 255.255.255.255
port = 80
send = "GET / HTTP/1.0\r\n\r\n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = lc
protocol = tcp
timeout = 5
reentry = 15
quiesce_server = 0
server s-proxy0 {
address = 10.1.6.14
active = 1
weight = 1000
}
server s-proxy1 {
address = 10.1.6.15
active = 1
weight = 1000
}
}