您的位置:首页 > 运维架构 > 网站架构

keepalived 高可用调度器配置

2016-05-16 16:43 615 查看
一、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"
}

好了,就写到这里吧,写博客看来也挺痛苦的,继续加油,师傅领进门修行靠个人。继续跟着马哥前行吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息