服务器集群
实现两台机器某台80端口异常自动切换另一台机器并不抢占
keepalived实现vip漂移
环境俩台sentos7 ip:10.4.7.11和10.4.7.12 VIP:10.4.7.10
10.4.7.12
第一台服务器:
[root@192 ~]# yum -y install httpd
[root@192 ~]# yum -y install keepalived
[root@192 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.4.7.10
}
}
virtual_server 10.4.7.10 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 10.4.7.12 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
第二台服务器
priority real_server state 修改即可
测试
ip a 命令可以查看vip是否漂移 如果正常 将一方keepalived停止 vip就会飘到另一台服务器
[root@192 ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:ea:3c:b0 brd ff:ff:ff:ff:ff:ff
inet 10.4.7.12/24 brd 192.168.0.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 10.4.7.10/32 scope global ens33
keepalived不抢占模式
将state全部设置为BACKUP 在这一行下方添加nopreempt一项 重启俩台主机的keepalived服务 就会发现将MASTER结点的keepalived停掉 vip会自动切到BACKUP结点 但是重启MASTER结点的keepalived服务vip不会回到MASTER结点 所以称为不抢占模式
keepalived主要是通过vip的漂移,来实现服务的 主,从的切换 如果仅仅停止下面的服务并不会导致keepalived漂移 下面实现这个问题
第一台
[root@192 ~]#vim /etc/keepalived/keepalived.conf
real_server 10.4.7.11 80 {
weight 1
notify_down /etc/keepalived/httpd.sh
[root@192 ~]# cat /etc/keepalived/httpd.sh
#!/bin/bash
pkill keepalived
systemctl restart keepalived
[root@192 ~]# cd /etc/keepalived/
[root@192 keepalived]# chmod +x httpd.sh
[root@192 ~]# systemctl restart keepalived
第二台同上修改
这是一个检测脚本,作用是当httpd停止工作时自动关闭本机的keepalived,当httpd正常启动之后,要手动启动keepalived服务。