一、vrrp 概述

 1.VRRP协议

 虚拟路由冗余协议,是IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议.

 VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混

 乱,准许主机使用单路由器,及时在在实际第一跳路由器使用失败的情形下仍能够维护路由器 

 间的连通性。

 2.VRRP基本术语

   wKiom1c5QDnw3h94AAKFMyZEoHU139.jpg

 3.VRRP工作原理

   wKiom1c5Q4ezG_f4AAGCclsdDcU471.jpg

 4.VRRP的主要功能

   1.master 路由器的选择功能

   2.master 路由器的状态通告

   3.VRRP 认证功能

 5.VRRP高可用工作模型

   1.主备模型

   联网业务由master路由器承担,当master路由器出现故障时候,才会由选出来的backup路由器

   接替主路由器的工作

   wKiom1c5Q5yS2A3wAADCC921Bcc917.jpg

   2.主主模型

   在路由器的一个接口上可以创建多个虚拟机路由器,似的该路由器可以在一个虚拟路由器中作

   为master路由器,同时在其它的虚拟路由器中作为backup路由器,主主模型备份方式可以实现

   负载分担的功能

   wKiom1c5RIHQ8Zj3AADwHmelu00857.jpg


 二、keepalived高可用调度器

  1.keepalived 的功能

     keepalived程序是vrrp协议在linux主机上以守护进程方式的实现。能够根据配置

   文件生成ipvs规则,并对各RealServer的健康做检测,以及loadbalance主机和Backup

   主机之间failover的实现

   CentOS 6.4+,程序包已经在base源提供;

  2.程序组件有

    1.核心程序 、IO复用器、内存管理、配置文件分析器

    wKiom1c5RqaSWk9FAAG6DSX0ajw432.jpg

  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

}

  wKiom1c5ckPiIHSDAAB9jdlgn7Y783.jpg

 3.配置vrrp实例:

   vrrp instance:虚拟路由器

        vrrp_instance Name {

             ...

   }

   vrrp synchronization group

      vrrp_sync_group Name {

             ...

   }

    

    1)基本配置;

    wKiom1c5c_aBLGPTAACTw5w4fiQ429.jpg

    2)认证方式配置;

    wKioL1c5dS7iAGTOAABp_x2i9DA382.jpg

   3)虚拟IP地址配置

    wKioL1c5dZ_gDAPZAAA3t8HsVMg543.jpg

  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"

}



好了,就写到这里吧,写博客看来也挺痛苦的,继续加油,师傅领进门修行靠个人。继续跟着马哥前行吧。