1.配置要求
服务器:
server1:172.25.13.1 web1 rhel6.5
server2:172.25.13.2 web2 rhel6.5
server4:172.15.13.4 node1 rhel6.5
server5:172.25.13.5 node2 rhel6.5
VIP:172.25.13.100
软件:
keepalived-1.2.24.tar.gz
arptables_jf
httpd
2.软件安装及配置
[server1]
yum install -y httpd arptables_jf
echo 'ip addr add 172.25.13.100/24 dev eth0'>>/etc/rc.d/rc.local
/etc/rc.d/rc.local
arptables -A OUT -s 172.25.13.100 -j mangle --mangle-ip-s 172.25.13.1
/etc/init.d/httpd start
[server2]
yum install -y httpd arptables_jf
echo 'ip addr add 172.25.13.100/24 dev eth0'>>/etc/rc.d/rc.local
/etc/rc.d/rc.local
arptables -A OUT -s 172.25.13.100 -j mangle --mangle-ip-s 172.25.13.2
/etc/init.d/httpd start
[server4][server5]
yum install openssl-devel -y
tar zxf keepalived-1.2.24.tar.gz
cd keepalived-1.2.24
./configure --prefix=/usr/local/keepalived;make;make install
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/etc/keepalived /etc/
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
vim /etc/keepalived/keepalived.conf
/etc/init.d/keepalived start
#cat /etc/keepalived/keepalived.conf [server4]
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost #接收警报的 email 地址,可以添加多个
}
notification_email_from keepalived@server1 #设置邮件的发送地址
smtp_server 127.0.0.1 #设置 smtp server 地址
smtp_connect_timeout 30 #设置连接 smtp 服务器超时时间
router_id LVS_DEVEL #load balancer 的标识 ID,用于 email 警报
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER #备机改为BACKUP,此状态是由priority的值来决定的
interface eth0 #HA 监测网络接口
virtual_router_id 51 #主、备机的 virtual_router_id 必须相同,取值 0-255
priority 100 #主机的优先级,备份机改为 50,主机优先级一定要大于备机
advert_int 1 #主备之间的通告间隔秒数
authentication { #主备切换时的验证
auth_type PASS #设置验证类型,主要有 PASS 和 AH 两种
auth_pass 1111 #验证密码,在一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码
}
virtual_ipaddress { #设置虚拟 IP 地址,可以设置多个虚拟 IP 地址,每行一个
172.25.13.100
}
}
virtual_server 172.25.13.100 80 { #定义虚拟服务器
delay_loop 6 #每隔 6 秒查询 realserver 状态
lb_algo rr #lvs 调度算法,这里使用轮叫
lb_kind DR #LVS 是用 DR 模式
# persistence_timeout 50 50s客户端无请求则可以切换RS,当为ftpd,mysqld要打开
protocol TCP #指定转发协议类型,有 tcp 和 udp 两种
real_server 172.25.13.1 80 { #配置服务节点
weight 1
TCP_CHECK { #realserve 的状态检测设置部分,单位是秒
connect_timeout 3 #3秒无响应超时
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试间隔
}
}
real_server 172.25.13.2 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#cat /etc/keepalived/keepalived.conf [server5]
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from keepalived@server2
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.13.100
}
}
virtual_server 172.25.13.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
# persistence_timeout 50
protocol TCP
real_server 172.25.13.1 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.25.13.2 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3.测试
[server4]
ipvsadm -l
tail -f /var/log/message
[other]
curl 172.25.254.88