keepalived实现了高可用集群,最初是为了lvs设计的,专门监控服务器各节点的状态,后来加入了VRRP功能,防止单点故障.
####################################################################################################
使用keepalived实现web服务器的高可用
####################################################################################################
1.环境配置
为移动终端和两台web服务器配置好ip和yum源(上图的ip仅供参考)
2.安装web服务
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "192.168.4.100" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd
[root@web2 ~]# yum -y install httpd
[root@web2 ~]# echo "192.168.4.200" > /var/www/html/index.html
[root@web2 ~]# systemctl restart httpd
3.安装Keepalived软件
[root@web1 ~]# yum -y install keepalived
[root@web2 ~]# yum -y install keepalived
4.修改web1的配置文件
[root@web1 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
[email protected] //设置报警收件人邮箱
}
notification_email_from [email protected] //设置发件人
smtp_server 192.168.200.1 //定义邮箱服务器
smtp_connect_timeout 30
router_id web1 //设置路由id号
}
vrrp_instance VI_1 {
state MASTER //主服务器为MASTER(备份服务器为BACKUP)
interface eth0 //定义网络接口
virtual_router_id 51 //主备服务器VRID号必须一致
priority 100 //服务器优先级,优先级高,优先获取VIP,主服务器必须比备份服务器的优先级高
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 //主备服务器的密码必须一致
}
virtual_ipaddress { //主服务器优先获取该VIP
192.168.4.80
}
}
[root@web1 ~]# systemctl start keepalived //启动服务
5.修改web2的配置文件
[root@web2 ~]# vim /etc/keepalived/keepalived.conf //与web1配置相差不多,但是需要修改一些配置
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id web2 // 路由id改为web2
}
vrrp_instance VI_1 {
state BACKUP //设置为备份服务器BACKUP
interface eth0
virtual_router_id 51
priority 50 //优先级设置为50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.4.80
}
}
[root@web2 ~]# systemctl start keepalived
6.关闭防火墙和selinux
[root@web1 ~]# iptables -F //启动keepalived会自动添加一个drop的防火墙规则,需要清空
[root@web1 ~]# setenforce 0
[root@web2 ~]# iptables -F
[root@web2 ~]# setenforce 0
7.查看两台web服务器的VIP信息
[root@web1 ~]# ip addr show eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:fb:44:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.4.100/24 brd 192.168.4.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.4.80/32 scope global eth0
valid_lft forever preferred_lft forever
[root@web2 ~]# ip addr show eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:c6:ee:7c brd ff:ff:ff:ff:ff:ff
inet 192.168.4.200/24 brd 192.168.4.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.4.80/32 scope global eth0
valid_lft forever preferred_lft forever
8.客户端测试访问
使用curl命令连接http://192.168.4.80,查看web界面;当关闭web1服务器时,再次访问http://192.168.4.80,查看web界面为web2服务器的页面.
#####################################################################################################
当配置文件写错了,启动了keepalived的服务时:
1. 发现无法查看web服务器所获取的VIP信息;
2.当配置文件修改正确并重启keepalived服务后,web2服务器依然无法查看web服务器所获取的VIP信息;
3.因为两台web服务器的优先级,web1大于web2,需要把web1的keepalived服务stop,然后查看web2服务器的keepalived服务,再 次查看会出现所获取的VIP信息.