1 下载安装
安装包下载:
链接:https://pan.baidu.com/s/1af5YGVIP3Sb5ok8w_ITE2g
提取码:29bf
1.1 解压
tar -zxf keepalived-1.2.18.tar.gz
解压后可以在目录中看到keepalived-1.2.18目录,进入目录如下:
1.2 编译
创建目录
mkdir /usr/local/keepalived
在上图目录中执行编译命令:
./configure --prefix=/usr/local/keepalived
编译过程中如看到类似的提示,就安装C语言依赖,如下:
yum install gcc openssl-devel pcre-devel zlib-devel -y
如果出现下面的问题,需要安装依赖:
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
看到下图所示内容,就表示编译成功了:
同时在指定目录/usr/local/keepalived下已经有了文件。
1.3 安装
在解压的目录中继续执行
make && make install
安装成服务:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
设置开机启动
chkconfig keepalived on
2 配置文件
vi /etc/keepalived/keepalived.conf
2.1 Master
! Configuration File for keepalived
global_defs {
router_id test-04-microservices-db-2
}
vrrp_script chk_mysql {
script "/etc/keepalived/mysql_check.sh" ## 检测 mysql 状态的脚本路径
interval 2 ## 检测时间间隔
weight -10 ## 如果条件成立,权重-10
false 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
rise 1 #检测1次成功就算成功。但不修改优先级
}
vrrp_instance VI_1 {
state MASTER # 主节点,从节点写BACKUP
interface eth1 # 用ifconfig 或ip addr来查看你的物理网卡,我的是eth1
virtual_router_id 52 # 所有节点统一的id,一个keepalived群内,多个群之间不同
priority 100 # 主节点比从节点高,默认100
advert_int 1 # 心跳1秒一次
# authentication {
# auth_type PASS
# auth_pass 1111
# }
track_script {
chk_mysql ## 执行 MySQL 监控的服务
}
virtual_ipaddress {
172.168.2.201/24 dev eth1 label eth1:2
# 统一一个虚拟ip,绑定到子回路上,避免对真实网卡造成未知影响(网工这块没听课,知道这么写就行了,不懂自己百度吧)
}
}
2.2 Backup
! Configuration File for keepalived
global_defs {
router_id test-04-microservices-aio-5
}
vrrp_script chk_mysql {
script "/etc/keepalived/mysql_check.sh"
interval 2
weight -10
false 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 52
priority 99
nopreempt
advert_int 1
# authentication {
# auth_type PASS
# auth_pass 1111
# }
track_script {
chk_mysql
}
virtual_ipaddress {
172.168.2.201/24 dev eth1 label eth1:2
}
}
2.3 配置iptables (所有节点都要)
vi /etc/sysconfig/iptables
下面的ip地址是上面配置文件中设的,keepalived组中共用的虚拟地址网段
-A INPUT -s 172.168.2.0/24 -d 224.0.0.18 -j ACCEPT #允许组播地址通信
-A INPUT -s 172.168.2.0/24 -p vrrp -j ACCEPT #允许 VRRP(虚拟路由器冗余协议)通信
重启防火墙
/etc/init.d/iptables restart
附:开放端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT ## 比如要用80端口通信
/etc/rc.d/init.d/iptables save ## 保存
/etc/rc.d/init.d/iptables restart ## 重启防火墙
/etc/rc.d/init.d/iptables status ## 查看是否生效
3 创建监听脚本
vi /etc/keepalived/mysql_check.sh
脚本内容:
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
/etc/init.d/keepalived stop
fi
开放权限:
权限
chmod +x /etc/keepalived/mysql_check.sh
4 Keepalived服务操作
service keepalived start
service keepalived stop
service keepalived restart
5 Springboot + Durid测试
创建一个简单项目,配置一个Durid,然后配上VIP(虚拟IP)地址,就可以测试高可用了。亲测高可用,切换时间最快1秒内,慢的十几秒。