全网最细高可用集群keeplived知识点总结

一.高可用集群

1.1.高可用集群的类型

LB:Load Balance 负载均衡

HA:High Availability 高可用集群 数据库、

Redis SPoF: Single Point of Failure,解决单点故障

HPC:High Performance Computing 高性能集群,解决单个主机算力不足的问题

1.2.系统可用性

A = MTBF / (MTBF+MTTR)

MTBF:在线时间

MTTR:平均故障处理时间

1.3.系统故障

硬件故障:设计缺陷、wear out(损耗)、非人为不可抗拒因素

软件故障:设计缺陷 bug

1.4 实现高可用

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

解决方案:建立冗余机制

active/passive 主/备

active/active 双主

active --> HEARTBEAT --> passive

active--> HEARTBEAT--> active

1.5.VRRP:Virtual Router Redundancy Protocol

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

物理层:路由器、三层交换机

软件层:keepalived

1.5.1.VRRP 相关术语

虚拟路由器:Virtual Router

虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器

VIP:Virtual IP VMAC:Virutal MAC (00-00-5e-00-01-VRID)

物理路由器: 1.master:主设备 2.backup:备用设备 3.priority:优先级

1.5.2 VRRP 相关技术

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

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

安全认证

1.无认证

2.简单字符认证:预共享密钥

3.MD5

工作模式: 主/备:单虚拟路由器 主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

二.keepalived

2.1.keepalived是什么

vrrp 协议的软件实现,原生设计目的为了高可用 ipvs服务

功能:

1.基于vrrp协议完成地址流动

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

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

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

2.2.keepalived架构

用户空间核心组件:

vrrp stack:VIP消息通告

checkers:监测real server

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

SMTP:邮件组件

IPVS wrapper:生成IPVS规则

Netlink Reflector:网络接口

WatchDog:监控进程

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

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

内存管理组件:为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

2.3.Keepalived 环境准备

各节点时间必须同步:ntp, chrony

关闭防火墙及SELinux

各节点之间可通过主机名互相通信:非必须

建议使用/etc/hosts文件实现:非必须

各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信:非必须

2.4.keepalived 相关文件

软件包名:keepalived

主程序文件:/usr/sbin/keepalived

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

配置文件示例:/usr/share/doc/keepalived/

Unit File:/lib/systemd/system/keepalived.service

Unit File的环境配置文件:/etc/sysconfig/keepalived

2.5.Keepalived 实验环境配置

dnf install keepalived -y
systemctl start keepalived

2.5.1.实验环境配置

主机ipvip
KA1172.25.254.10172.25.254.100
KA2172.25.254.20172.25.254.100
realserver1172.25.254.110172.25.254.100
realserver2172.25.254.120172.25.254.100

realserver1和realserver2安装httpd并启动服务:

[root@realserver1 ~]# yum install httpd -y
[root@realserver1 ~]# echo 172.25.254.110 > /var/www/html/index.html
[root@realserver1 ~]# systemctl enable --now httpd
[root@realserver2 ~]# yum install httpd -y
[root@realserver2 ~]# echo 172.25.254.120 > /var/www/html/index.html
[root@realserver2 ~]# systemctl enable --now httpd

测试:

说明环境完好,可以进行下一步实验

2.5.2.虚拟路由配置

在KA1和KA2中安装keepalived:

yum install keepalived -y
全局设定:
vim /etc/keepalived/keepalived.conf

vip设定:

启动服务:
systemctl enable --now keepalived.service
测试:

同理KA2也要设定VIP
快捷方法:
scp /etc/keepalived/keepalived.conf root@172.25.254.20:/etc/keepalived/keepalived.conf

修改文件

注意:优先级不能相同

systemctl enable --now keepalived.service
抓包测试:

  虚拟路由的通讯设定:

在KA1和KA2中添加

重启服务:
systemctl restart keepalived.service

测试:

注意:

这两个要开一定都开或者都注释

2.5.3.keepalived日志分离

进入日志中修改(范围0~7)

重启服务

[root@ka1 ~]# systemctl restart keepalived.service

修改日志中的内容并重启服务:

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

测试:

2.5.4.实现独立子配置文件

当生产环境复杂时, /etc/keepalived/keepalived.conf

文件中内容过多,不易管理 将不同集群的配置,比如:不同集群的VIP配置放在独立的子配置文件中利用include 指令可以实现包含 子配置文件

创建文件编辑文件:
mkdir -p /etc/keepalived/conf.d
vim /etc/keepalived/conf.d/172.25.254.100.conf
在/etc/keepalived/keepalived.conf修改文件

重启服务:

systemctl restart keepalived.service

三.keepalived实验

3.1.抢占模式和非抢占模式

3.1.1.非抢占模式 nopreempt

默认为抢占模式preempt,即当高优先级的主机恢复在线后,会抢占低先级的主机的master角色, 这样会使vip在KA主机中来回漂移,造成网络抖动, 建议设置为非抢占模式 nopreempt ,即高优先级主机恢复后,并不会抢占低优先级主机的master角色 非抢占模块下,如果原主机down机, VIP迁移至的新主机, 后续也发生down时,仍会将VIP迁移回原主机

注意:要关闭 VIP抢占,必须将各 keepalived 服务器state配置为BACKUP,并将之前的注释

KA1:

KA2:(只需添加nopreempt)

重启KA1和KA2,查看vip:

只有当KA2服务关闭后,KA1才会有vip

3.1.2.抢占延迟模式 preempt_delay

抢占延迟模式,即优先级高的主机恢复后,不会立即抢回VIP,而是延迟一段时间(默认300s)再抢回 VIP

如图:为延迟5s,KA1和KA2都需设定

测试:原本在KA2上的vip回到了KA1

注意:做完此实验后最好将配置修改回去

3.2.VIP单播配置

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

KA1:

KA2:

重启服务

注意:以下两个参数一定要注释!!!

抓包测试:

3.3. Keepalived 通知脚本配置

3.3.1.邮件通知

登录QQ邮箱,点击账号与安全

点击安全设置,生成授权码

编辑mail.rc

注意:填写自己邮箱,password为授权码

发送邮件:
echo hello world | mail -s test 1952265563@qq.com
测试:

3.3.2编写脚本

创建mail.sh

完成后,给脚本加权限
chmod +x /etc/keepalived/mail.sh
在keepalived.conf添加调用方法

测试:

3.4.双主模式:

master/slave的单主架构,同一时间只有一个Keepalived对外提供服务,此主机繁忙,而另一台主机却 很空闲,利用率低下,可以使用master/master的双主架构,解决此问题。 master/master 的双主架构: 即将两个或以上VIP分别运行在不同的keepalived服务器,以实现服务器并行提供web访问的目的,提高 服务器资源利用率

虚拟路由:

重启服务,查看VIP:

停止KA2的服务:

3.5.实现IPVS的高可用性

3.5.1.实现单主的 LVS-DR 模式

在realserver1和realserver2上进行配置:

ip add add 172.25.254.100/32 dev lo

创建arp.conf并编写

测试命令是否生效:

[root@realserver2 ~]# sysctl --system

同理,realserver1也要配置

安装ipvsadm:

yum install ipvsadm -y

修改keepalived配置:

重启:

测试:

当关闭一台真机时,

测试:

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
keepalived是一种用于实现高可用性的软件,主要用于在集群中检测服务的状态,并根据检测结果进行VIP(虚拟IP)的漂移。当keepalived进程异常时,会触发VIP漂移,将VIP转移到备用节点上,以确保网站的可用性。然而,如果keepalived进程正常,但是nginx服务发生故障,就可能导致VIP不漂移,从而导致网站无法访问。为了解决这个问题,可以自己编写一个脚本来检查nginx服务的状态,如果异常,则可以通过kill掉keepalived进程来实现VIP的漂移,或者重新启动nginx服务。下面以keepalived重新启动nginx为例进行说明: 1. 首先,需要安装keepalived软件。在proxy1和proxy2两个节点上执行以下命令进行安装: ``` yum install keepalived -y ``` 2. 然后,需要在每个keepalived节点上进行配置。以proxy1节点为例,编辑keepalived的配置文件: ``` vim /etc/keepalived/keepalived.conf ``` 在配置文件中添加以下内容: ``` ! Configuration File for keepalived global_defs { router_id test111 # router_id后面的名称可以自定义 } vrrp_instance nginx_test { state MASTER interface ens33 # interface后面的名称为实际网卡名 virtual_router_id 51 priority 100 # 优先级,数值越大,优先级越高,在主备竞选时,优先级高的节点将竞选为主节点 advert_int 1 authentication { # 同一组keepalived认证 auth_type PASS auth_pass 1111 } virtual_ipaddress { # 虚拟IP,可以设置为网站的访问IP 192.168.1.100 } } ``` 保存并退出配置文件。 通过上述步骤,我们就可以实现keepalived的高可用性,当nginx服务发生故障时,通过重新启动nginx服务或者kill掉keepalived进程来实现VIP的漂移,确保网站的可用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值