0基础概述:
keepalived如果想要配置两台服务器的高可用,部署的东西一定要采用相同的账号密码和端口,keepalived其实就是代理,默认keepalived的VIP端口号是与其代理的服务器一一对应的。
举个例子,你现在有两台服务器,A服务器为主服务器,B服务器为副服务器,我们以Mysql为例,A服务器上的Mysql端口号是3306,B服务器上为3309,如果在不额外配置的情况下,肯定是无法成功转移到B服务器上的,用户名和密码亦是同理。
keepalived搭建:
1、Master安装keepalived
安装keepalived
yum install –y kernel-devel openssl-develpopt-devel
yum install -y keepalived
修改配置:
! Configuration File for keepalived
global_defs {
# 当keepalived服务出现特定事件(如主备切换、服务故障等)时,会向这些邮箱发送通知邮件
notification_email {
admin1@qq.com
}
# 定义发送通知邮件的发件邮箱地址
notification_email_from admin@qq.com
# 指定用于发送通知邮件的SMTP服务器地址
smtp_server smtp.qq.com
# 设置连接SMTP服务器的超时时间
smtp_connect_timeout 30
# SMTP服务器验证身份
smtp_user admin@qq.com
# 授权码
smtp_password "xxxxxxxx"
}
vrrp_script chk_mysql_port {
# 指定要执行的脚本路径
script "/tmp/mysql.sh"
# 设置脚本执行的时间间隔
interval 2
}
# 定义VRRP实例,用于实现虚拟路由器冗余功能
vrrp_instance VI_1 {
# 定义当前节点在此VRRP实例中的初始状态,可选值为MASTER(主节点)或BACKUP(备份节点)
state MASTER
# 指定绑定虚拟IP的网卡接口名称
interface eth0
# 设置本机的IP地址
mcast_src_ip 192.168.110.73
# 虚拟路由器标识,同一个VRRP组内(即多个节点共同参与的冗余场景)的所有节点此值必须一致
virtual_router_id 51
# 定义节点的优先级,数字越大优先级越高
priority 101
# 定义VRRP通告消息的发送间隔时间,单位为秒,用于节点之间交换状态信息,保持状态同步
advert_int 1
# 配置VRRP实例的认证信息,用于节点之间验证通信的合法性
authentication {
auth_type PASS
auth_pass 123456
}
# 定义虚拟IP地址及对应的子网掩码
virtual_ipaddress {
192.168.110.79/24
}
# 定义跟踪脚本相关配置
track_script {
chk_mysql_port
}
}
注:keepalived的配置文件读取顺序是从上往下读取的,创建方法,必须要在引用方法的上方,例如上方我配置了跟踪脚本,必须要在track_script 引用的上方,不能出现在下方,否则,运行会出现错误,即找不到引用的方法。
编写kill_keepalived.sh
vim /tmp/mysql.sh
mysql.sh内容如下
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" == 0 ];then
systemctl stop keepalived
fi
设置权限
chmod 755 /tmp/mysql.sh
启动keepalived
systemctl start keepalived
2、Slave安装keepalived
安装keepalived
yum install –y kernel-devel openssl-develpopt-devel
yum install -y keepalived
修改配置:
! Configuration File for keepalived
global_defs {
# 当keepalived服务出现特定事件(如主备切换、服务故障等)时,会向这些邮箱发送通知邮件
notification_email {
admin1@qq.com
}
# 定义发送通知邮件的发件邮箱地址
notification_email_from admin@qq.com
# 指定用于发送通知邮件的SMTP服务器地址
smtp_server smtp.qq.com
# 设置连接SMTP服务器的超时时间
smtp_connect_timeout 30
# SMTP服务器验证身份
# smtp_user admin@qq.com
# 授权码
# smtp_password "xxxxxxxxx"
}
vrrp_script chk_mysql_port {
# 指定要执行的脚本路径
script "/tmp/mysql.sh"
# 设置脚本执行的时间间隔
interval 2
}
# 定义VRRP实例,用于实现虚拟路由器冗余功能
vrrp_instance VI_1 {
# 定义当前节点在此VRRP实例中的初始状态,可选值为MASTER(主节点)或BACKUP(备份节点)
state BACKUP
# 指定绑定虚拟IP的网卡接口名称
interface eth0
# 设置本机的IP地址
mcast_src_ip 192.168.110.71
# 虚拟路由器标识,同一个VRRP组内(即多个节点共同参与的冗余场景)的所有节点此值必须一致
virtual_router_id 51
# 定义节点的优先级,数字越大优先级越高
priority 99
# 定义VRRP通告消息的发送间隔时间,单位为秒,用于节点之间交换状态信息,保持状态同步
advert_int 1
# 配置VRRP实例的认证信息,用于节点之间验证通信的合法性
authentication {
auth_type PASS
auth_pass 123456
}
# 定义虚拟IP地址及对应的子网掩码
virtual_ipaddress {
192.168.110.79/24
}
# 定义跟踪脚本相关配置
track_script {
chk_mysql_port
}
}
注:不知道为什么,这里的邮箱提示报错,尚未解决,如果有能解决的请解决一下。
编写kill_keepalived.sh
vim /tmp/mysql.sh
mysql.sh内容如下
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" == 0 ];then
systemctl stop keepalived
fi
设置权限
chmod 755 /tmp/mysql.sh
启动keepalived
systemctl start keepalived