一、vrrp 概述
1.VRRP协议
虚拟路由冗余协议,是IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议.
VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混
乱,准许主机使用单路由器,及时在在实际第一跳路由器使用失败的情形下仍能够维护路由器
间的连通性。
2.VRRP基本术语
3.VRRP工作原理
4.VRRP的主要功能
1.master 路由器的选择功能
2.master 路由器的状态通告
3.VRRP 认证功能
5.VRRP高可用工作模型
1.主备模型
联网业务由master路由器承担,当master路由器出现故障时候,才会由选出来的backup路由器
接替主路由器的工作
2.主主模型
在路由器的一个接口上可以创建多个虚拟机路由器,似的该路由器可以在一个虚拟路由器中作
为master路由器,同时在其它的虚拟路由器中作为backup路由器,主主模型备份方式可以实现
负载分担的功能
二、keepalived高可用调度器
1.keepalived 的功能
keepalived程序是vrrp协议在linux主机上以守护进程方式的实现。能够根据配置
文件生成ipvs规则,并对各RealServer的健康做检测,以及loadbalance主机和Backup
主机之间failover的实现
CentOS 6.4+,程序包已经在base源提供;
2.程序组件有
1.核心程序 、IO复用器、内存管理、配置文件分析器
3.keepalived高可用几圈配置前提
1.各节点时间要同步,不能超过1s,一半使用网络时间服务器(ntp-server)
2.确保iptables及selinux不会成为障碍
3.各节点之间可通过主机名想通信,节点的名称设定与hosts文件中解析的主机名都要保持一
致,#uname -n 获得的主机名,与解析的主机名要相同;
4.各节点之间基于秘钥认证的方式通过ssh互信通信;
备注:第3.4条非必须
三、keepalived 环境配置详解
1.程序包的安装
yum instll keepalived -y
备注:CentOS 6.4+,程序包已经在base源提供
2.生成的配置文件有
主配置文件:/etc/keepalived/keepalived.conf
Unit file:/usr/lib/systemd/system/keepalived.service
配置文件:/etc/sysconfig/keepalived
全局配置详解;
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
3.配置vrrp实例:
vrrp instance:虚拟路由器
vrrp_instance Name {
...
}
vrrp synchronization group
vrrp_sync_group Name {
...
}
1)基本配置;
2)认证方式配置;
3)虚拟IP地址配置
4.keepalived主备模型配置
1.主节点配置
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.200
}
}
2.备用节点配置
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.200
}
}
主备节点配置完毕后进行服务的启动工作
主节点;systemctl start keepalived.service
然后使用ip addr list 进行查看工作,如下所示
eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:48:cf:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.107/24 brd 192.168.1.255 scope global dynamic eno16777736
valid_lft 5109sec preferred_lft 5109sec
inet 192.168.1.200/32 scope global eno16777736
valid_lft forever preferred_lft forever 这个就是虚拟vip 已经显示在这里了。
inet6 fe80::20c:29ff:fe48:cf50/64 scope link
valid_lft forever preferred_lft forever
如果现在主节点停止服务的话,备用节点将自动上线,来代替主节点的工作。如下所示
使用命令systemctl stop keepalived.servcie
我们来看一下备节点的情况
eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:08:0d:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.129/24 brd 192.168.1.255 scope global dynamic eno16777736
valid_lft 4305sec preferred_lft 4305sec
inet 192.168.1.200/32 scope global eno16777736 现在备用节点已经得到了IP地址。
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe08:d91/64 scope link
valid_lft forever preferred_lft forever
如果主服务自动上线的话,我们的备用节点又会自动退出,主节点继续工作,备用节点去后台暂时休息。
5.keepalived 双主配置
节点1-node1:
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 171
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 0c5UMiJo
}
virtual_ipaddress {
192.168.1.200 dev eno16777736 label eno16777736:0
}
track_script {
chk_down
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
priority 98vrrp_instance VI_2 {
state BACKUP
interface eno16777736
virtual_router_id 172
advert_int 1
authentication {
auth_type PASS
auth_pass 0c6UMiJo
}
virtual_ipaddress {
192.168.1.201 dev eno16777736 label eno16777736:1
}
track_script {
chk_down
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
节点2-node2:
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 171
priority 98
advert_int 1
authentication {
auth_type PASS
auth_pass 0c5UMiJo
}
virtual_ipaddress {
192.168.1.200 dev eno16777736 label eno16777736:0
}
track_script {
chk_down
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {
state MASTER
interface eno16777736
virtual_router_id 172
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 0c6UMiJo
}
virtual_ipaddress {
192.168.1.201 dev eno16777736 label eno16777736:1
}
track_script {
chk_down
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
好了,就写到这里吧,写博客看来也挺痛苦的,继续加油,师傅领进门修行靠个人。继续跟着马哥前行吧。
本文出自 “李文明的博客” 博客,请务必保留此出处http://liwenming18.blog.51cto.com/11068518/1773956
原文地址:http://liwenming18.blog.51cto.com/11068518/1773956