LVS原理可以看章博士的文章,Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现
OS: CentOS5.2/RHEL5.2
VIP: 129.0.3.236
LoadBalance : 129.0.3.230
BackUP: 129.0.3.231
RealServer1: 129.0.3.233
RealServer2: 129.0.3.234
1. LoadBalance配置
设置
安装ipvsadm
下载地址:http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
如果编译错误,看时候做了内核的软连接 /usr/src/linux
然后 make && make install
配置lvs
依次执行:
安装keepalived
下载地址:http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
编辑keepalived.conf
2. BackUP主机配置
BackUP主机配置同上。
只需配置文件简单修改下
启动keepalived
看系统实时日志查找出现问题
3. Realserver配置
/etc/sysctl.conf
sysctl -p生效
lo地址绑定VIP
ip addr list 查看是否绑定争取
开启Realserver上httpd
4. 调试与测试
下面是捕获的日志信息
红色表示的部分表面LoadBalance主机已经获得VIP的地址,进入MASTER状态,实现成功。
OS: CentOS5.2/RHEL5.2
VIP: 129.0.3.236
LoadBalance : 129.0.3.230
BackUP: 129.0.3.231
RealServer1: 129.0.3.233
RealServer2: 129.0.3.234
1. LoadBalance配置
设置
net.ipv4.ip_forward = 1
安装ipvsadm
下载地址:http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
如果编译错误,看时候做了内核的软连接 /usr/src/linux
然后 make && make install
配置lvs
依次执行:
ipvsadm –C
ipvsadm -A -t 129.0.3.236:80 -s wlc
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 –g
或者执行这脚本ipvsadm -A -t 129.0.3.236:80 -s wlc
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 –g
Quotation
#!/bin/sh
ipvsadm -C
ipvsadm -A -t 129.0.3.236:80 -s wlc
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 -g
ipvsadm -C
ipvsadm -A -t 129.0.3.236:80 -s wlc
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g
ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 -g
安装keepalived
下载地址:http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
编辑keepalived.conf
Quotation
./configure --prefix=/you/path/
make && make install
make && make install
lobal_defs {
notification_email {
askwan1@yahoo.com
}
notification_email_from askwan@yahoo.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
129.0.3.236
}
}
virtual_server 129.0.3.236 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 129.0.3.233 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
real_server 129.0.3.234 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
}
notification_email {
askwan1@yahoo.com
}
notification_email_from askwan@yahoo.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
129.0.3.236
}
}
virtual_server 129.0.3.236 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 129.0.3.233 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
real_server 129.0.3.234 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
}
2. BackUP主机配置
BackUP主机配置同上。
只需配置文件简单修改下
lobal_defs {
notification_email {
askwan1@yahoo.com
}
notification_email_from askwan@yahoo.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
129.0.3.236
}
}
virtual_server 129.0.3.236 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 129.0.3.233 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
real_server 129.0.3.234 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
}
notification_email {
askwan1@yahoo.com
}
notification_email_from askwan@yahoo.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
129.0.3.236
}
}
virtual_server 129.0.3.236 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 129.0.3.233 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
real_server 129.0.3.234 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
}
}
}
启动keepalived
看系统实时日志查找出现问题
3. Realserver配置
/etc/sysctl.conf
Quotation
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p生效
lo地址绑定VIP
Quotation
ip addr add 129.0.3.236/32 dev lo
ip addr list 查看是否绑定争取
开启Realserver上httpd
4. 调试与测试
下面是捕获的日志信息
Quotation
Sep 12 05:32:58 server230 kernel: IPVS: Registered protocols (TCP, UDP, AH, ESP)
Sep 12 05:32:58 server230 kernel: IPVS: Connection hash table configured (size=4096, memory=32Kbytes)
Sep 12 05:32:58 server230 kernel: IPVS: ipvs loaded.
Sep 12 06:00:35 server230 kernel: IPVS: [wlc] scheduler registered.
Sep 12 06:00:38 server230 Keepalived: Starting Keepalived v1.1.15 (09/12,2008)
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Using MII-BMSR NIC polling thread...
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.230 added
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink reflector
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink command channel
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Configuration is using : 11811 Bytes
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Service already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.233:80]
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.234:80]
Sep 12 06:00:38 server230 Keepalived: Starting Healthcheck child process, pid=10650
Sep 12 06:00:38 server230 Keepalived_vrrp: Using MII-BMSR NIC polling thread...
Sep 12 06:00:38 server230 Keepalived: Starting VRRP child process, pid=10651
Sep 12 06:00:38 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.230 added
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink reflector
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink command channel
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering gratutious ARP shared channel
Sep 12 06:00:38 server230 Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
Sep 12 06:00:38 server230 Keepalived_vrrp: Configuration is using : 36198 Bytes
Sep 12 06:00:39 server230 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(8,9)]
Sep 12 06:00:40 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236
Sep 12 06:00:41 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.236 added
Sep 12 06:00:41 server230 avahi-daemon[8014]: Registering new address record for 129.0.3.236 on eth0.
Sep 12 06:00:41 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.236 added
Sep 12 06:00:42 server230 Keepalived_healthcheckers: Removing service [129.0.3.234:80] from VS [129.0.3.236:80]
Sep 12 06:00:42 server230 Keepalived_healthcheckers: Remote SMTP server [127.0.0.1:25] connected.
Sep 12 06:00:43 server230 Keepalived_healthcheckers: SMTP alert successfully sent.
Sep 12 06:00:46 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236
Sep 12 05:32:58 server230 kernel: IPVS: Connection hash table configured (size=4096, memory=32Kbytes)
Sep 12 05:32:58 server230 kernel: IPVS: ipvs loaded.
Sep 12 06:00:35 server230 kernel: IPVS: [wlc] scheduler registered.
Sep 12 06:00:38 server230 Keepalived: Starting Keepalived v1.1.15 (09/12,2008)
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Using MII-BMSR NIC polling thread...
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.230 added
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink reflector
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink command channel
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Configuration is using : 11811 Bytes
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Service already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.233:80]
Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.234:80]
Sep 12 06:00:38 server230 Keepalived: Starting Healthcheck child process, pid=10650
Sep 12 06:00:38 server230 Keepalived_vrrp: Using MII-BMSR NIC polling thread...
Sep 12 06:00:38 server230 Keepalived: Starting VRRP child process, pid=10651
Sep 12 06:00:38 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.230 added
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink reflector
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink command channel
Sep 12 06:00:38 server230 Keepalived_vrrp: Registering gratutious ARP shared channel
Sep 12 06:00:38 server230 Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
Sep 12 06:00:38 server230 Keepalived_vrrp: Configuration is using : 36198 Bytes
Sep 12 06:00:39 server230 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(8,9)]
Sep 12 06:00:40 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236
Sep 12 06:00:41 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.236 added
Sep 12 06:00:41 server230 avahi-daemon[8014]: Registering new address record for 129.0.3.236 on eth0.
Sep 12 06:00:41 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.236 added
Sep 12 06:00:42 server230 Keepalived_healthcheckers: Removing service [129.0.3.234:80] from VS [129.0.3.236:80]
Sep 12 06:00:42 server230 Keepalived_healthcheckers: Remote SMTP server [127.0.0.1:25] connected.
Sep 12 06:00:43 server230 Keepalived_healthcheckers: SMTP alert successfully sent.
Sep 12 06:00:46 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236
红色表示的部分表面LoadBalance主机已经获得VIP的地址,进入MASTER状态,实现成功。
相关日志
LVS + piranha 之NAT配置
LVS + piranha 之Tunnel配置
LVS + piranha 之DR配置
linux下利用Haproxy和keepalived实现简单负载均衡
LVS + piranha 之NAT配置
LVS + piranha 之Tunnel配置
LVS + piranha 之DR配置
linux下利用Haproxy和keepalived实现简单负载均衡
作者:askwan@『AskWan』
地址:http://www.askwan.com/post/108/
可以转载,转载时请以链接形式注明作者和原始出处及本声明!
LVS + piranha 之NAT配置
use Pgpool-II and HeartBeat realize high availability of postgresql 

2008/09/19 17:25 | by











