keepalived服务部署通过检测端口,解决nginx服务的单点故障问题。
配置如下
修改KEEPALIVED配置文件即可
cd /etc/keepalived/
第一台配置文件
vi keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
router_id haproxy1
}
vrrp_instance VI_1 { #定义一个vrrp组,组名唯一
state MASTER #定义改主机为keepalived的master主机
interface eth0 #监控eth0号端口
virtual_router_id 58 #虚拟路由id号为58,id号唯一,这个id决定了多播的MAC地址
priority 100 #设置本节点的优先级,master的优先级 要比backup的优先级别高,数值要大
advert_int 1 #检查间隔,默认为1秒
nopreempt #优先级高的服务器设置,不抢占资源
authentication {
auth_type PASS #认证方式,密码认证
auth_pass 1111 #认证的密码,这个密码必须和backup上的一致
}
virtual_ipaddress { #设置虚拟的ip, 这个ip是以后对外提供服务的ip。
192.168.4.79/24
}
}
virtual_server 192.168.4.79 80 {
delay_loop 2
persistence_timeout 60
protocol TCP
real_server 192.168.4.193 80 { #真实ip和端口,监测nginx服务状态
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.4.249 80 {#真实ip和端口
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
第二台配置文件
vi keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
router_id haproxy2
}
vrrp_instance VI_1 { #定义一个vrrp组,组名唯一
state backup #定义改主机为keepalived的master主机
interface eth1 #监控eth1号端口 针对本服务情况修改
virtual_router_id 58 #虚拟路由id号为58,id号唯一,这个id决定了多播的MAC地址
priority 90 #设置本节点的优先级,master的优先级 要比backup的优先级别高,数值要大
advert_int 1 #检查间隔,默认为1秒
#nopreempt
authentication {
auth_type PASS #认证方式,密码认证
auth_pass 1111 #认证的密码,这个密码必须和backup上的一致
}
virtual_ipaddress { #设置虚拟的ip, 这个ip是以后对外提供服务的ip。
192.168.4.79/24
}
}
virtual_server 192.168.4.79 80 { #虚拟主机设置,ip同上。
delay_loop 2 #服务器轮询的时间间隔
# lb_algo rr #lvs的调度算法
# lb_kind DR #lvs的集群模式
nat_mask 255.255.255.0
persistence_timeout 50 #会话超时50s
protocol TCP #健康检查是用tcp还是udp
real_server 192.168.4.249 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.4.193 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
两台服务器的配置文件修改完毕后重启服务
service keepalived restart
重启服务后通过ip a命令查看虚拟ip是否存在。
以上操作完成后进行高可用测试,首先停掉其中有vip的服务器的Nginx服务,查看是否vip会漂移至另外一台,当vip漂移后,将原先停止的nginx服务启动,然后再次测试。