Download & Install:
命令行安装:
apt-get install keepalived
或者
压缩包安装:
tar -zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/usr/local/keepalived
make
make install
下面几步不是必须,为了以后操作方便,建议执行:
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
Config
为keepalived创建配置文件存放路径:
mkdir -p /etc/keepalived/
打开配置文件:
vim /etc/keepalived/keepalived.conf
配置如下:
global_defs
{
notification_email
{
baifanmvp@163.com
}
notification_email_from baifanmvp@163.com
smtp_server 127.0.0.1
stmp_connect_timeout 30
router_id lnmp_node1
}
vrrp_instance lnmp {
state MASTER
interface em1
virtual_router_id 100
priority 170
advert_int 5
track_interface {
em1
}
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.200
}
}
- global_defs: 全局配置标识,表面下面的区域{}是全局配置
- notification_email: 里面填邮箱地址,如果keepalived在发生诸如切换操作时会的发邮件到配置上的邮箱,邮件地址可以多个,每行一个
- notification_email_from:表示发送通知邮件时邮件源地址是谁
- smtp_server:表示发送email时使用的smtp服务器地址,可以填127.0.0.1
- smtp_connect_timeout:连接smtp超时时间
- vrrp_instance:各服务器上实例配置域,这里按本服务器的具体情况填值
- state:本实例启动状态,MASTER/SLAVE,不管填MASTER/SLAVE,最终还是要看本机器的权重。
- interface:实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的,这里按本机情况而定
- virtual_router_id:这里设置VRID,如果两台机器是同一个备份组,设置一样
- priority:设置本节点的优先级,优先级高的为master,不能超过255
- advert_int:组播信息发送间隔,同一个备份组两个机器设置必须一样,默认是1S
- authentication:验证域,同组的机器auth_type(验证类型)和auth_pass(验证密码)必须一样
- virtual_ipaddress:VIP,为master机器设置的虚拟地址,和实例绑定的网卡(interface)设置到一个网段
Start:
Ubuntu:
/usr/local/keepalived/sbin/keepalived
redhat:
/usr/local/keepalived/sbin/keepalived
or
sudo /etc/init.d/keepalived restart
启动好以后可以用 ip a
命令看虚拟IP的绑定情况,我的配置是192.168.1.135上的权重高,所以VIP绑定到135上面
(ape2!1076)~(h135:135)ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether d4:ae:52:6c:74:69 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.135/24 brd 192.168.1.255 scope global em1
inet 192.168.1.200/32 scope global em1
inet6 fe80::d6ae:52ff:fe6c:7469/64 scope link
于是此时就可以用192.168.1.200
这个IP访问135这台机器(VIP)
当然,也可用192.168.1.135
来访问这台机器(IP)
可能碰到的问题:
- 在配好主从备份之后,发现虚拟IP能ping通,但是访问虚拟IP对应机器上的服务(不是apache或者mysql之类的公用软件)却不成功,这是因为要访问的服务绑定了主机上的一个实体IP不是INADDR_ANY地址,所以连接不上。
记得设置防火墙和关闭selinux策略
配置iptables,添加VRRP通讯支持:iptables -A INPUT -d 224.0.0.18 -j ACCEPT
关闭selinux:
vim /etc/sysconfig/selinux
修改:
SELINUX=disabled #setenforce 0