Keepalived 高可用集群详解和配置

Keepalived 高可用集群

集群类型

1、LB(Load Balance):负载均衡

LVS:四层负载均衡

HAProxy:七层/四层 负载均衡

nginx:七层负载均衡

(http/upstream,stream/upstream)

2、HA(High Availa bility):高可用集群

数据库、Redis

3、SPoF(Single Point of Failure):解决单点故障

HPC:High Performance Computing 高性能集群

集群实现高可用

建立冗余机制

1、active/passive:主/备

2、active/active:双主

3、active-->HEARTBEAT-->passive:心跳

4、active <-->HEARTBEAT <-->active:

VRRP 虚拟路由冗余

在现实的网络环境中,主机之间的通信都是通过配置静态路由(默认网关)来完成的,而主机之间的路由器一旦出现故障,就会通信失败。因此在这种通信模式下,路由器就会有单点瓶颈问题,为了解决这个问题,引入了VRRP协议(虚拟路由冗余协议)。

VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信。

VRRP可以将两台或多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器通过虚拟IP(一个或多个)对外提供服务,而在虚拟路由器内部是多个物理路由器协同工作

复制代码
虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
VIP:Virtual IP
VMAC:Virutal MAC(00-00-5e-00-01-VRID)

物理路由器:
	master:主设备
	backup:备用设备
	priority:优先级
	
通告:
	心跳
	优先级等
	周期性

工作方式:
	抢占式
	非抢占式

安全认证:
	无认证
	简单字符认证:预共享密钥
	MD5
	
工作模式:
	主/备:单虚拟路由器
	主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

VRRP角色如下

1、虚拟路由器:VRRP组中所有的路由器,拥有虚拟的IP+MAC(O0-00-5e-00-01-VRID)地址

2、主路由器(master):虚拟路由器内部通常只有一台物理路由器对外提供服务,主路由器是由选举算法产生,对外提供各种网络功能

3、备份路由器(backup):VRRP组中除主路由器之外的所有路由器,不对外提供任何服务,只接受主路由的通告,当主路由器挂掉之后,重新进行选举算法接替master路由器。

master路由器由选举算法产生,它拥有对外服务的VIP,提供各种网络服务,如ARP请求、数据转发、ICMP等等,而backup路由器不拥有VIP,也不对外提供网络服务;当master发生故障时,backup将重新进行选举,产生一个新的master继续对外提供服务

Keepalived 配置

Keepalived 基本配置

在调度机处配置,下载相关的软件:keepalived,ipvsamd(LVS)/HAProxy。

同一高可用集群内只能使用一种调度软件(LVS在Keepalived内的规则会与HAProxy冲突,导致服务启动失败)

全局配置

虚拟网段配置

实现VIP的通信

修改配置文件

进行添加或将两项都注释掉,都可进行通信(组播通信可开启两项,单播通信时需将注释掉)

复制代码
......
 12#   vrrp_strict
 13    vrrp_garp_interval 0
 14    vrrp_gna_interval 0
 15    vrrp_mcast_group4 224.0.0.18
 16#   vrrp_iptables
 17 }
 ......

日志管理

在日志配置文件内指定keepalived日志类型

复制代码
[root@ka1 keepalived]# vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 6"

修改主日志文件内的配置

复制代码
[root@ka1 keepalived]# vim /etc/rsyslog.conf

Keepalived 子配置文件生成

创建子配置文件:

在子配置文件内输入内容,如果子配置文件内内容错误,则会导致识别不到虚拟IP


抢占与非抢占

非抢占模式

修改配置文件

将两台设备都设置为备份设备

当一台设备宕机时,另一台设备接管VIP

效果演示:

抢占模式

修改配置文件

将两台设备都设置为备份设备

效果演示:

单播模式

防止数据报文过多导致调度机的负载过大

将 vrrp_strict 禁用才能使单播模式生效

修改配置文件:

效果演示:

复制代码
[root@kal ~]# tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20

设置邮箱通知

1、安装邮箱软件

复制代码
[root@ka1 ~]# yum install mailx -y

2、获取设置邮箱的登录密码(以QQ邮箱为例)

在登录QQ邮箱之后,在主页面找到账号与安全(Windows版)

点击进入到新页面,往下滑找到安全设置

点击进入到新页面,页面最下方会有一个"生成授权码"

3、编辑 mail 配置文件

复制代码
在配置文件末尾处配置

set from=邮箱地址	----发送至哪个账号
set smtp=smtp.qq.com
set smtp-auth-user=邮箱地址
set smtp-auth-password=lufwpklkkrctdgei
set smtp-auth=login
set ssl-verify=ignore

[root@ka1 ~]# echo test message | mail -s test 邮箱地址	----测试mail配置文件是否正确

4、编辑自动通知脚本文件

复制代码
[root@ka1 keepalived]# vim /etc/keepalived/mail.sh

#!/bin/bash
mail_dest='2111234420@qq.com'

mail_send()
{
  mail_subj="$HOSTNAME to be $1 vip remove"
  mail_mess="`date +%F\ %T`:vrrp remove,$HOSTNAME change $1"
  echo "$mail_mess" | mail -s "$mali_subj" $mail_dest
}
case $1 in
  master)
  mail_send master
  ;;
  backup)
  mail_send backup
  ;;
  fault)
  mail_sed fault
  ;;
  *)
  exit 1
  ;;
esac

5、编辑 keepalive 配置文件

调用编辑好的脚本文件,在设备发生变化时发送通知至指定账号

演示效果:

开启服务,KA1自动抢占VIP,KA2成为备份

多主模式

两台设备互为主/备,一台设备上存在两个虚拟的路由器ID

修改 keepalived 配置文件

一台设备内存在两个 VRID ,生成两个 VIP 地址,互相主/备

KA1 调度机:


KA2 调度机:


IPVS高可用

LVS 高可用

1、LVS 配置为DR 模式

服务主机配置:

复制代码
[root@server1 ~]# ip a a 172.25.254.100/32 dev lo	----RS主机添加 VIP 地址

关闭 RS 主机的VRP 应答功能,只接不发
[root@server1 ~]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore 
[root@server1 ~]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@server1 ~]# echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce 
[root@server1 ~]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce 

2、在调度机处修改 Keepalived 的配置,添加 LVS 的规则

调度机下载 LVS 软件(ipvsadm):

复制代码
[root@ka1 ~]# yum install ipvsadm -y	----安装 LVS 软件

修改 keepalived 配置文件:

3、演示效果

当一台 RS 主机宕机时,自动将宕机的设备规则移除:

未宕机时可访问两台服务器:

一台服务器宕机时只能访问一台:

HAproxy 高可用

使用脚本实现主从切换

脚本编写:

复制代码
判断文件是否存在,不存在则输出值为0,存在则为1
#!/bin/bash
[ ! -f "/etc/test" ]

修改keepalived配置文件

调用脚本,当脚本的值为1时,将其权重降低30,从而达到切换主从的目的,当脚本值不为1时,其权重重新回到初始值

效果演示:

文件不存在时,VIP在 KA1上

文件存在时,VIP 漂移至 KA2 上

HAProxy 的高可用实现

注意:keepalived 配置文件内,LVS 的规则配置应注释掉;如果之前进行过 LVS 集群的配置,应将 RS 服务器的 arp 应答功能打开

1、调度机服务器下载 HAProxy

复制代码
[root@ka1 ~]# yum install haproxy -y

2、修改 haproxy 配置文件

复制代码
[root@ka2 ~]# vim /etc/haproxy/haproxy.cfg

3、修改调度机的内核参数

复制代码
[root@ka2 ~]# vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1	----在末尾行添加

4、编辑脚本

复制代码
[root@ka1 keepalived]# vim /etc/keepalived/test.sh
#!/bin/bash
killall -0 haproxy	----当 haproxy 服务关闭时输出值1

5、修改 keepalived 配置文件

效果演示:

关闭 haproxy 服务,VIP 自动漂移至 KA2

相关推荐
网硕互联的小客服28 分钟前
服务器如何应对SYN Flood攻击?
运维·服务器·网络
厦门辰迈智慧科技有限公司1 小时前
现代化水库运行管理矩阵建设的要点
运维·网络·物联网·线性代数·安全·矩阵·监测
苦逼IT运维1 小时前
Jenkins + SonarQube 从原理到实战三:SonarQube 打通 Windows AD(LDAP)认证与踩坑记录
运维·服务器·windows·docker·云计算·jenkins·devops
GalaxyPokemon1 小时前
Linux的pthread怎么实现的?(包括到汇编层的实现)
运维·开发语言·c++
Deepoch1 小时前
当机械臂装上「智能大脑」:Deepoc具身智能模型如何重构传统自动化
运维·重构·自动化
yy里3 小时前
H5性能优化实践
前端·性能优化
科大饭桶3 小时前
Linux系统编程Day13 -- 程序地址空间(进阶)
linux·运维·c语言·数据结构·c++
二川bro4 小时前
第十篇:3D模型性能优化:从入门到实践
3d·性能优化
纯洁的小魔鬼4 小时前
Centos 用户管理
运维·centos·用户
国科安芯4 小时前
MCU外设初始化:为什么参数配置必须优先于使能
网络·单片机·嵌入式硬件·性能优化·硬件工程