前言:由于keepalived是以广播形式发送信息,因此主从服务器必须在同一网段!!!
由于本人在配置前并不知晓,所以服务器地址有错误,因此并不能真正实现vip的浮动。但此文在虚拟机同一网段运行通过
1.下载keepalived 安装包至/home/目录
cd /home
wget -c http://www.keepalived.org/software/keepalived-1.1.20.tar.gz
chmod +x keepalived-1.1.20.tar.gz 赋予操作权限
2. 查看服务器是否安装过kernelcd /usr/src/kernels
ls
如果执行结果为空则需要安装kernel
yum install kernel-devel
再次查看是否安装成功并记住kernel版本号
[root@localhost home]# tar -zxvf keepalived-1.1.20.tar.gz
[root@localhost home]# cd keepalived-1.1.20
[root@localhost keepalived-1.1.20]# ln -s /usr/src/kernels/2.6.9-78.EL-i686 /usr/src//linux
[root@localhost keepalived-1.1.20]# ./configure
错误解决办法:
yum -y install gcc 安装gcc组件
./configure
--------------------------------------------------------------------------------------------------------------------yum install -y openssl-devel 重新编译
./configure
--------------------------------------------------------------------------------------------------------------------
yum install popt-devel ,重新编译
./configure
--------------------------------------------------------------------------------------------------------------------
红色方框内都为yes代表安装成功。否则安装失败。(可能还需要某些组件,把为no的百度一下安装即可,然后再重新./configure)
4.编译以及编译安装
[root@localhost keepalived-1.1.20]# make && make install
5.修改配置文件及路径[root@localhostkeepalived-1.1.20]#
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
[root@localhostkeepalived-1.1.20]#
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost keepalived-1.1.20]# mkdir /etc/keepalived
[root@localhostkeepalived-1.1.20]#
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@localhost keepalived-1.1.20]# cp /usr/local/sbin/keepalived /usr/sbin/
6.设置为服务,开机启动[root@localhost keepalived-1.1.20]# vi /etc/rc.local
7.关闭selinux
vi /etc/sysconfig/selinux
修改
SELINUX=disabled
SELINUXTYPE=disabled
8.关闭防火墙
service iptables stop
echo "1">/proc/sys/net/ipv4/ip_forward
10.在/etc/sysctl.conf中配置内核参数
net.ipv4.ip_forward=1
11.开机默认启动ip_vs模块
vi /etc/rc.d/rc.sysinit
在底部添加
#load LVS IPVS modules
modprobe ip_vs
配置后需要重启,如本次不重启直接在命令行里输入
modprobe ip_vs 启动该模块
12.配置MATER keepalived.conf vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_MASTER #机器标识
}
vrrp_instance VI_1 {
state BACKUP #state指定instance的初始状态,但这里指定的不算,还是得通过优先级竞选来确定。两台配置此处均是BACKUP。
interface em1 #实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,可用ip a 查看当前ip地址是绑在那个网卡上的
virtual_router_id 51 #这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址,需要和Slave一致
priority 100 #设置本节点的优先级,优先级高的为master,如另外一个节点配置为90,那此节点就是master
advert_int 1 #检查间隔,默认为1秒
nopreempt #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.33 #这里设置的就是VIP,也就是虚拟IP地址
}
}
virtual_server 192.168.200.33 3306 { #vip配置
delay_loop 2 #每隔2秒检查一次real_server状态
lb_algo wrr
lb_kind DR
persistence_timeout 60 #会话保持时间
protocol TCP
real_server 192.168.200.32 3306 { #本机地址
weight :3
notify_down /etc/keepalived/MySQL.sh #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 10 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
}
配置SLAVE keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_MASTER #机器标识
}
vrrp_instance VI_1 {
state BACKUP #state指定instance的初始状态,但这里指定的不算,还是得通过优先级竞选来确定。两台配置此处均是BACKUP。
interface em1 #实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,可用ip a 查看当前ip地址是绑在那个网卡上的
virtual_router_id 51 #这里设置VRID,这里非常重要,相同的VRID为一个组,他将决定多播的MAC地址,需要和Slave一致
priority 90 #设置本节点的优先级,优先级高的为master,如另外一个节点配置为90,那此节点就是master
advert_int 1 #检查间隔,默认为1秒
nopreempt #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.33 #这里设置的就是VIP,也就是虚拟IP地址
}
}
virtual_server 192.168.200.33 3306 { #vip配置
delay_loop 2 #每隔2秒检查一次real_server状态
lb_algo wrr
lb_kind DR
persistence_timeout 60 #会话保持时间
protocol TCP
real_server 192.168.201.173 3306 { #本机地址
weight :3
notify_down /etc/keepalived/MySQL.sh #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 10 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
}
13.Mysql服务停止执行脚本
vi /etc/keepalived/MySQL.sh
hmod +x /etc/keepalived/MySQL.sh
当mysql停止服务时停止keepalived服务,并发出预警邮件给指定用户
14.安装sendMail
yum install sendmail sendmail-cf
service sendmail start
15.在两台服务器上分别启动keepalived和mysql服务(先主后从)
service mysql start #注意要先启动mysql,因为keepalived会检查mysql服务状态。
service keepalived start
ip a
会发现vip已经挂在主服务器上了,而从服务器是没有的
16.测试
主服务器运行
service mysql stop
service keepalived status
查看当mysql服务停止时是否keepalived服务也一样停止了
在从服务器上运行
ip a
看vip时候浮动到从服务器上了