keepalived可以用来做双机热备,此外它还有一个LVS模块可以用来做负载均衡,不过功能没有nginx强大,主要是看用途自己结合了。我用两台keepalived主备机,和三台tomcat服务机做测试。
安装keepalived无特殊要求的话,直接用简单的yum安装即可:yum -y install keepalived
安装好后 vi /etc/keepalived/keepalived.conf
来配置keepalived的主机(格式要对,有些空格不能少):
global_defs {
router_id one
}
vrrp_instance VI_1 {
state MASTER
interface enp0s8
virtual_router_id 60
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.56.100
}
}
virtual_server 192.168.56.100 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.56.34 8080 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
real_server 192.168.56.35 8080 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
real_server 192.168.56.36 8080 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
}
然后同样的路径去配置备机:
global_defs {
router_id two
}
vrrp_instance VI_1 {
state BACKUP
interface enp0s8
virtual_router_id 60
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.56.100
}
}
virtual_server 192.168.56.100 8080 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.56.34 8080 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
real_server 192.168.56.35 8080 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
real_server 192.168.56.36 8080 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 8080
}
}
}
然后再去三台tomcat服务器将tomcat部署好,如果想要在接受到虚拟ip的请求后返回数据,还需要配置一个脚本:
[root@four ~]# vi realserver.sh
#add for chkconfig
#chkconfig: 2345 70 30
#description: RealServer's script
#processname: realserver.sh
#!/bin/bash
VIP=192.168.56.100
source /etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
然后赋予权限启动它就可以了!可以在keepalived中使用ipvsadm看到!