5-2企业高可用方案-keepalived入门及模块讲解

物理路由器:
        master:主设备
        backup:备用设备
        priority:优先级
    VIP:Virtual IP
    VMAC:Virtual MAC(00-00-5e-00-01-VRID)
        GraciousARP

通告:心跳,优先级等;周期性;

抢占式,非抢占式;

安全工做:
    认证:
        无认证
        简单字符认证
        MD5

工做模式:
    主/备:单虚拟路径器;
    主/主:主/备(虚拟路径器1),备/主(虚拟路径器2)

keepalived:
vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务;
基于vrrp协议完成地址流动;
为全部ipvs节点生成ipvs规则(在配置文件中预先定义);
为ipvs集群的各RS作健康状态检测,基于检测结果完成节点管理;
基于脚本调用接口经过执行脚本完成脚本中定义的功能,进而影响集群事务(这里说的是完成其余服务的高可用);node

组件:
    核心组件:
        vrrp stack
        ipvs wrapper
        checkers
    控制组件:配置文件分析器
    IO复用器
    内存管理组件

HA Cluster的配置前提:
(1)各节点时间必须同步;
ntp,chrony
(2)确保iptables及selinux不会成为阻碍;
(3)各节点之间可经过主机名互相通讯(对KeepAlived并不是必须);
(4)确保各节点的用于集群服务的接口支持MULTICAST通讯;
D类:224.0.0.0~239.255.255.255
(5)各节点之间的root用户能够基于密钥认证的ssh服务完成互相通讯;(并不是必须)linux

keepalived安装配置:
CentOS6.4+随base仓库提供;vim

程序环境:
    主配置文件:/etc/keepalived/keepalived.conf
    主程序文件:/usr/sbin/keepalived
    Unit File:keepalived.service
    Unit File的环境配置文件:/etc/sysconfig/keepalived
配置文件组件部分:---有三个配置段
    TOP HIERACHY---顶级配置段
        GLOBAL CONFIGURATION
            Global definitions---全局定义
            Static routes/addresses---静态路由
        VRRP CONFIGURATION
            VRRP synchronization group(s):vrrp同步组;(同进同退,两台路由器对外提供虚拟IP,对内也提供虚拟IP,可是vip1在哪台路由器上,vip2也应该在哪一个节点上,nat集群须要同步组)
            VRRP instance(s)(实例):每一个vrrp instance 即一个vrrp路由器;
        LVS CONFIGURATION
            Virtual server group(s)
            Virtual server(s):ipvs集群的vs和rs;

单主配置示例:
    !Configuration File forkeepalived

    global_defs {
        notification_email {
            root@localhost
        }
        notification_email_from keepalived@localhost
        smtp_server 127.0.0.1
        smtp_connect_timeout 30
        router_id node1
        vrrp_mcast_group4 224.0.100.19
    }

    vrrp_instance VI_1 {
        state BACKUP
        interface eno16777736
        virtual_router_id 14
        priority 98
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 571f97b2
        }
        virtual_ipaddress {
            10.1.0.91/16 dev eno16777736
        }
    }

配置语法:
    配置虚拟路由器:
     vrrp_instance <STRING> {
        ......
     }

     专用参数:
        state MASTER|BACKUP:当前节点在此虚拟路由器上的初始状态;只能有一个是MASTER,余下的都应该为BACKUP;
        interface IFACE_NAME:绑定为当前虚拟路由器使用的物理接口;
        virtual_router_id VRID:当前虚拟路由器的惟一标识,范围是0-255;
        priority 100:当前主机在此虚拟路由器中的优先级;范围1-254;
        advert_int 1:vrrp通告的时间间隔;
        authentication {
            auth_type AH|PASS
            auth_pass <PASSWORD>
        }
        virtual_ipaddress {
            <IPADDR>/<MASK>brd<IPADDR>dev<STRING>scpoe<SCOPE>label<LABEL>
            192.168.200.17/24 dev eth1
            192.168.200.18/24 dev eth2 label eth2:1
        }
        track_interface {
            eth0
            eth1
            ...
        }
        配置要监控的网络接口,一旦接口出现故障,则转为FAULT状态;
        nopreempt:定义工做模式为非抢占模式;
        preempt_delay 300:抢占模式下,节点上线后触发新选举操做的延迟时长;

        定义通知脚本:
            notify_master<STRING>|<QUOTED-STRING>:当前节点成为主节点时触发的脚本;
            notify_backup<STRING>|<QUOTED-STRING>:当前节点转为备节点时触发的脚本;
            notify_fault<STRING>|<QUOTED-STRING>:当前节点转为"失败"状态时触发的脚本;
            notify<STRING>|<QUOTED-STRING>:通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知

视频中的配置:集群中各节点是经过多播通讯,要保证多播功能是打开的
node1:
ntpdate 172.16.0.1---同步时间
vim /etc/chrony.conf---chronyd服务的配置文件,把其中的server能够指向本地主机测试用
systemctl restart chronyd.service---重启服务
systemctl enable chronyd.service---设置成开机自动启动
iptables -vnL---查看有没有规则,没有就能够,若是有,不能清空能够添加一条放行重启iptables服务
yum info iptables-services---查看iptables服务安装包信息
cat /etc/hosts---查看域名解析
ifconfig---网卡信息中要包含MULTICAST这个信息,才表示支持多播功能
ip link set multicast on dev eno16777736---开启网卡的多播功能安全

yum -y install keepalived
rpm -ql keepalived---查看包服务器

视频中keepalived.conf
!Configuration File for keepalived网络

global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---发邮件地址,能够假装源地址,可是有的服务器不容许假装,要经过下面的smtp_server的检查
smtp_server 127.0.0.1---通常是本机,可使用ss -tnl查看25号端口始终是开启的,能够很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s能够给上邮件的标题,收邮件的命令是mail,就能够看到收到的邮件,按提示的数字就能够打开查看邮件
smtp_connect_timeout 30
router_id nide1---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,可是有可能会冲突,能够本身随便写一个
}app

vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state MASTER---配置为主设备,可是还须要设置优先级
priority 100---优先级是100
interface eno167777736---把vip绑定到哪一个网卡设备
virtual_router_id 33---0到255之间使用哪个都行,可是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,能够用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736 label eno16777736:0
}
}ssh

scp keepalived.conf node2:/etc/keepalived/---复制到node2节点
systemctl start keepalived.service---此时启动keepalived,就会抢占成为主节点
systemctl status keepalived
ifconfig---就能够看到ip地址配置上去了,若是此时停掉服务,node2节点仍然会抢回去
tcpdump -i eno16777736 -nn host 224.1.101.33---监听网卡上指向224.1.101.33的信息包,能够看到一秒钟发送一个包tcp


双主模型的配置:
视频中keepalived.conf
!Configuration File for keepalivedide

global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---发邮件地址,能够假装源地址,可是有的服务器不容许假装,要经过下面的smtp_server的检查
smtp_server 127.0.0.1---通常是本机,可使用ss -tnl查看25号端口始终是开启的,能够很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s能够给上邮件的标题,收邮件的命令是mail,就能够看到收到的邮件,按提示的数字就能够打开查看邮件
smtp_connect_timeout 30
router_id nide1---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,可是有可能会冲突,能够本身随便写一个
}

vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state MASTER---配置为主设备,可是还须要设置优先级
priority 100---优先级是100
interface eno167777736---把vip绑定到哪一个网卡设备
virtual_router_id 33---0到255之间使用哪个都行,可是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,能够用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736
}
}

vrrp_instance VI_2 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state BACKUP---配置为主设备,可是还须要设置优先级
priority 96---优先级是100
interface eno167777736---把vip绑定到哪一个网卡设备
virtual_router_id 34---0到255之间使用哪个都行,可是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass Ra3S7Uy2---这里不要使用默认的1111,能够用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.98/16 dev eno16777736
}
}

systemctl stop keepalived.service---有时候不支持重载配置,因此须要重启服务
systemctl start keepalived.service
tcpdump -i eno16777736 -nn host 224.1.101.33
ip a l---列出网卡上的ip地址---能够看到同一个网卡有多个ip地址

node2:
ntpdate 172.16.0.1---同步时间
systemctl restart chronyd.service---重启服务
systemctl enable chronyd.service---设置成开机自动启动
systemctl status chronyd.service---查看状态若是显示enabled就表示已经开机自动启动

视频中keepalived.conf
!Configuration File for keepalived

global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---发邮件地址,能够假装源地址,可是有的服务器不容许假装,要经过下面的smtp_server的检查
smtp_server 127.0.0.1---通常是本机,可使用ss -tnl查看25号端口始终是开启的,能够很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s能够给上邮件的标题,收邮件的命令是mail,就能够看到收到的邮件,按提示的数字就能够打开查看邮件
smtp_connect_timeout 30
router_id nide2---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,可是有可能会冲突,能够本身随便写一个
}

vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state BACKUP---配置为从设备,可是还须要设置优先级
priority 96---优先级应该比master低
interface eno167777736---把vip绑定到哪一个网卡设备
virtual_router_id 33---0到255之间使用哪个都行,可是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,能够用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736 label eno16777736:0
}
}

systemctl start keepalived.service---node2节点启动,此时node2节点优先级最高,因此把本身配置为master
systemctl status keepalived.service---会显示状态信息,进入主节点模式,而且ip地址也配置上去了


双主模型的配置:
视频中keepalived.conf
!Configuration File for keepalived

global_defs {
notification_email {---收邮件地址,要在互联网上真正能接收br/>root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc---发邮件地址,能够假装源地址,可是有的服务器不容许假装,要经过下面的smtp_server的检查
smtp_server 127.0.0.1---通常是本机,可使用ss -tnl查看25号端口始终是开启的,能够很容易的从本机发送邮件到本机,例如:echo "hello" | mail -s "hi" root@localhost---s能够给上邮件的标题,收邮件的命令是mail,就能够看到收到的邮件,按提示的数字就能够打开查看邮件
smtp_connect_timeout 30
router_id nide1---用来标识当前主机
vrrp_mcast group4 224.1.101.33---224.0.0.18是默认的,可是有可能会冲突,能够本身随便写一个
}

vrrp_instance VI_1 {---第一个实例就是第一个路由器,VI_1是名称随便定义
state MASTER---配置为主设备,可是还须要设置优先级
priority 100---优先级是100
interface eno167777736---把vip绑定到哪一个网卡设备
virtual_router_id 33---0到255之间使用哪个都行,可是两个设备之间要统一
advert_int 1---每隔多长时间向外通告一次
authentication {---要不要认证
auth_type PASS---简单字符串认证
auth_pass RT3SKUI2---这里不要使用默认的1111,能够用openssl rand -base64 7生成一个随机的字符串
}
virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名
172.16.0.99/16 dev eno16777736
}
}

vrrp_instance VI_2 {---第一个实例就是第一个路由器,VI_1是名称随便定义state MASTER---配置为主设备,可是还须要设置优先级priority 100---优先级是100interface eno167777736---把vip绑定到哪一个网卡设备virtual_router_id 34---0到255之间使用哪个都行,可是两个设备之间要统一advert_int 1---每隔多长时间向外通告一次authentication {---要不要认证auth_type PASS---简单字符串认证auth_pass Ra3S7Uy2---这里不要使用默认的1111,能够用openssl rand -base64 7生成一个随机的字符串}virtual_ipaddress {---指定IP地址的格式为ip、掩码、设备、别名172.16.0.98/16 dev eno16777736}}

相关文章
相关标签/搜索