高可用集群keepalived

1.实现高可用

提升系统高用性的解决方案:降低MTTR- Mean Time To Repair(平均故障时间)

解决方案:建立冗余机制

active/passive 主/备

active/active 双主

active --> HEARTBEAT --> passive

active <--> HEARTBEAT <--> active

2.VRRP

虚拟路由冗余协议,解决静态网关单点风险

通告:心跳,优先级等;

周期性 工作方式:抢占式,非抢占式

安全认证:

无认证 ;简单字符认证:预共享密钥 MD5

工作模式:

主/备:单虚拟路由器 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

3.keepalived部署

3.1简介

基于vrrp协议完成地址流动

为vip地址所在的节点生成ipvs规则(在配置文件中预先定义)

为ipvs集群的各RS做健康状态检测

基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持nginx、haproxy等服务

3.2keepalived架构

checkers:监测real server

system call:实现 vrrp 协议状态转换时调用脚本的功能

vrrp stack:VIP消息通告

SMTP:邮件组件

IPVS wrapper:生成IPVS规则 为LVS准备的套件,挂掉的主机会配提出策略

Netlink Reflector:网络接口

WatchDog:监控进程

控制组件:提供keepalived.conf 的解析器,完成Keepalived配置

IO复用器:针对网络目的而优化的自己的线程抽象

3.3keepalived实验环境配置

准备四台红帽七的虚拟机

两台KA,两台RS

KA1IP:172.25.254.10

KA2IP:172.25.254.20

RS1IP:172.25.254.110

RS2IP:172.25.254.120

在两台RS上安装httpd,并将各自ip写进发布目录,然后测试在kA上是否连接成功

[root@ka1 ~]# curl 172.25.254.120 realserver2-172.25.254.120

4.虚拟路由的配置

4.1基本配置

安装keepalive

yum install keepalived -y

在ka1和ka2中安装keepalived

配置文件:/etc/keepalived/keepalived.conf

配置文件组成

GLOBAL CONFIGURATION

Global definitions: 定义邮件配置,route_id,vrrp配置,多播地址等

VRRP CONFIGURATION

VRRP instance(s): 定义每个vrrp虚拟路由器

LVS CONFIGURATION

Virtual server group(s)

Virtual server(s): LVS集群的VS和RS

4.2全局配置

进入配置文件

vim /etc/keepalived/keepalived.cong

vrrp_strict:强制使用vrrp协议

vrrp_skip_check_adv_addr #对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一 个报文是同一 #个路由器,则跳过检查,默认 值为全检查

vrrp_garp_interval 0 #报文发送延迟,0表示不延迟

vrrp_gna_interval 0 #消息发送延迟

vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围:

4.3配置虚拟路由

master端

interface eth0 :绑定为当前虚拟路由器使用的物理接口

virtual_router_id 100:每个虚拟路由器惟一标识,范围:0-255,要确认在同一网络中此值必须唯一

priority 100 :当前物理节点在此虚拟路由器的优先级,范围:1-254

advert_int 1 :vrrp通告的时间间隔,默认1s

authentication:认证机制

uth_pass 1111 :预共享密钥

label eth0:1:设定网卡的子接口,一块网卡可以设定很多子接口

backup端

scp /etc/keepalived/keeplived.conf root@172.25.254.20:/etc/keepalived/keeplived.conf

将master端的配置文件复制到backup端,节省时间,但需要进入配置文件中修改角色,以及降低backup的优先级

[root@KA2 ~]# tcpdump -i eth0 -nn host 224.0.0.18#抓包命令查看数据包的传输情况

-i:eth0接收的数据

-nn:不做解析

host:观察哪个ip

4.4虚拟路由的通讯

vip的访问功能默认会禁掉

如果想能ping通需要进入keepalived主配置文件在global_defs中的最后一行加入vrrp_iptables,以及打开vrrp_srtick或者将这两个都禁掉,且这两台KA都需要加

重启服务

iptables -nL会发现丢弃数据策略就没有了

4.5keepalived日志分离

默认情况下keepalived的日志和其他的日志是混在一起的

[root@KA1 ~]# vim /etc/sysconfig/keepalived#编辑这个文件在里面加入KEEPALIVED_OPTIONS="-D -S 6"

重启keepalived

[root@ka1 ~]#vim /etc/rsyslog.conf

此处的local6.*的数字要与在上面编辑文件中的数字保持一致且范围是0-7

重启服务,就会生成日志

4.6独立子配置文件

当生产环境复杂时主配置文件中内容过多,不易管理,我们通过子配置文件将配置文件独立出来,我们需要指定一条路径

进入主配置文件写在global_defs下面

include /etc/keepalived/conf.d/*.conf#相关子配置文件

mkdir -p /etc/keepalived/conf.d

5.非抢占模式和延迟抢占

问题引入:ka1挂掉后vip会移到ka2,当ka1恢复运行会将vip抢回去,这样就会导致vip在ka1和ka2中来回漂移,造成网络抖动

5.1非抢占模式

两台主机都要加非抢占模式,且角色都是backup,优先级不需要修改

重启服务

5.2延迟抢占模式

延迟抢占模式,不会立即将vip抢过去会在指定的时间抢回来

设置抢占时间为5s,两台机子都需要设置抢占时间且都为backup

6.keepalived-vip单播设定

主机之间利用多播相互通告消息,会造成网络拥塞,可以替换成单播,减少网络流量

注意:启用 vrrp_strict 时,不能启用单播

进入主配置文件

在那台配置源就写哪台在20上与10上写的时相反的

7.keepalived-邮件通知

安装 yum install mailx -y

7.1.设置邮件代理

进入qq邮箱,进入账号与安全,生成授权码

[root@KA1 ~]# vim /etc/mail.rc #客户端邮件配置文件

#######mail set##########

set from=1551145187@qq.com

set smtp=smtp.qq.com

set smtp-auth-user=1551145187@qq.com

set smtp-auth-password=授权码

set smtp-auth=login

set ssl-verify=ignore

KA2中做相同配置

7.2.写一个邮件通知的脚本

vim /etc/keepalived/mail.sh

#!/bin/bash

mail_dest='1551145187@qq.com'

mail_send()

{

mail_subj="$HOSTNAME to be $1 vip move"//邮件标题

mail_msg="date +%F\ %T: vrrp 转移,$HOSTNAME 变为 $1"//邮件正文

echo "$mail_mess" | mail -s "$mail_subj" $mail_dest//用echo命令发邮件

}

case $1 in

master)

mail_send master

;;

backup)

mail_send backup

;;

fault)

mail_send fault

;;

*)

exit 1

;;

esac

给脚本执行权限[root@KA1 +KA2 ~]# chmod +x /etc/keepalived/mail.sh

在配置文件写触发命令,两台主机都要写

重启服务

8.keepalived-双主模式

问题引入:单主结构在同一时间只有一台keepalived对外提供服务,此主机繁忙,而另一台主机却很空闲,利用率低,而双主结构可以解决这一问题,所以西要两个vip

进入ka1的主配置文件加一个配用

vrrp_instance VI_2 {

state BACKUP

interface eth0

virtual_router_id 200

priority 80

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.25.254.200 dev et0 label eth0:2

}

unicast_src_ip 172.25.254.10

unicast_peer{

172.25.254.20

}

}

重启服务

进入ka2的主配置文件加一个主

vrrp_instance VI_2 {

state MASTER

interface eth0

virtual_router_id 200

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.25.254.200 dev et0 label eth0:2

}

unicast_src_ip 172.25.254.20

unicast_peer{

172.25.254.10

}

}

重启服务

9.实现IPVS的高可用

keepalived也可以提供后端检测

LVS-DR模式

在两台rs中加两个ip为100的环回,并且关闭他们的arp请求

如果要永久关闭将其写入vim /etc/sysctl.d/arp.conf中,然后让系统重新识别sysctl --system

在Keepalived中安装ipvsadm软件

yum install ipvsadm -y

进入主配置文件配置两台主机

重启服务

ipvsadm -Ln//查看策略

lvs不提供后端检测,结合keepalived之后当一台挂断后,会自动在策略中将其踢除,当开启后也会自动加回来,此时ka2的策略不生效,因为vip不在ka2

此时如果将ka1关闭,vip会移到ka2上,但客户端不会出现影响,保证客户顺畅的访问

10.vrrp脚本控制VIP

问题引入:如何通过haproxy的状态来完成vip的漂移,解决方案在keepalived中haproxy的状态,如果存活则不动,如果挂了则降低自身优先级来完成vip的漂移

10.1编辑脚本

vim /ect/keepalived/test.sh

[ ! -f /mnt/zee ]

echo $?#查看返回值

chmod +x /ect/keepalived/test.sh#给执行权限

10.2更改主配置文件

11.keepalived+haproxy的高可用

两台主机安装haproxy

yum instaall haproxy -y

在两个ka1和ka2中启用内核参数

[root@rhel7-ka1 & ka2 ~]# vim /etc/sysctl.conf net.ipv4.ip_nonlocal_bind = 1 当本机没有vip时可以做到远程监控,要不然haproxy起不来

[root@rhel7-ka1 & ka2 ~]# sysctl -p

进入haproxy的主配置文件,两台主机都要写

开启haproxy服务

systemctl enable --now haproxy

要关闭这两台rs的环回,以及开启arp响应,以及关闭keeplived的策略,因为keepalived和haproxy的策略不能同时存在

进入keepalived的主配置文件注释掉这些策略

此时haproxy挂掉后,vip没有飘到另一台主机上,于是我们需要通过检测hapoxy的状态来降低haproxy挂掉主机的优先级,使vip飘到另一台主机上

killall -o haproxy#检测haoproxy的状态

将检测命令写入脚本

vim /etc/keepalived/test.sh

#!/bin/bash killall -0 haproxy

进入keepalived主配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值