keepalived原理以及lvs、nginx跟keeplived的运用

keepalived基础

keepalived的原理是根据vrrp协议(主备模式)去设定的

vrrp技术相关原理

状态机; 

优先级0~255 心跳线1秒

 vrrp工作模式 

双主双备模式

VRRP负载分担过程

vrrp安全认证:使用共享密匙 

 keepalived工具介绍

keepalived是专门为LVS和HA(高可用主备模式)设计的一款健康行检查工具

举例说明:当有两台lvs服务器工作时,出现故障,而lvs本身又无法健康性检查,所以借助keepalived工具

当主服务器出现故障,此时备服务器顶上,当主服务器恢复时,有三种模式

1.抢占模式(当主恢复好时,立马切换到这)

2.不抢占模式(当主恢复好时,依然在备服务器上运行)

3.延迟抢占(当主恢复好时,多少秒从备切换到主上)

 keepalived架构

 

 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 CentOS

主配置文件详解: 

/etc/keepalived/keepalived.conf 
global_defs {notification_email {root@localhost#keepalived 发生故障切换时邮件发送的目标邮箱,可以按行区分写多个root@localhost360601212@qq.com }notification_email_from keepalived@localhost  #发邮件的地址smtp_server 127.0.0.1     #邮件服务器地址smtp_connect_timeout 30   #邮件服务器连接timeoutrouter_id R1#每个keepalived主机唯一标识,建议使用当前主机名,但多节点重名不影响vrrp_skip_check_adv_addr  #对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查
vrrp_strict 
#严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置。vrrp_garp_interval 0 #gratuitous ARP messages 免费ARP报文发送延迟,0表示不延迟vrrp_gna_interval 0 #unsolicited NA messages (不请自来)消息发送延迟vrrp_mcast_group4 224.0.0.18 #指定组播IP地址范围:224.0.0.0到239.255.255.255,默认值:224.0.0.18 vrrp_iptables        #此项和vrrp_strict同时开启时,则不会添加防火墙规则,如果无配置vrrp_strict项,则无需启用此项配置
}

 

 切记:在修改配置文件的时候,记得备份,以防万一出错

配置文件讲解

简要来说,全局配置只需要改三处

1.自己的ip  2.路由id名字 3.严格模式关闭

 给lvs调度器设置:

state MASTER|BACKUP
#当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
interface IFACE_NAME 
#绑定为当前虚拟路由器使用的物理接口,如:eth0,bond0,br0,可以和VIP不在一个网卡
virtual_router_id VRID 
#每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
priority 100 
#当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同advert_int 1
#vrrp通告的时间间隔,默认1sauthentication { 
#认证机制auth_type AH|PASS   #AH为IPSEC认证(不推荐),PASS为简单密码(建议使用)auth_pass <PASSWORD> #预共享密钥,仅前8位有效,同一个虚拟路由器的多个keepalived节点必须一样
}
include    /etc/keealived/conf.d/*.conf
virtual_ipaddress { 
#虚拟IP,生产环境可能指定上百个IP地址<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>192.168.200.100 #指定VIP,不指定网卡,默认为,注意:不指定/prefix,默认为/32192.168.200.101/24 dev eth1   #指定VIP的网卡,建议和interface指令指定的岗卡不在一个网卡192.168.200.102/24 dev eth2 label eth2:1 #指定VIP的网卡label 
}
track_interface { 
#配置监控网络接口,一旦出现故障,则转为FAULT状态实现地址转移eth0eth1…
}

 

如果当项目中,有很多的虚拟ip,则建立子配置文件

虚拟服务器端的具体配置

  delay_loop 6#健康间隔时间6秒lb_algo rr#调度算法轮询lb_kind DR#lvs模式为DR persistence_timeout 0#连接保持时间改为0 否则 无法体现效果protocol TCP#采用协议

 

 真实服务器端配置:

   weight 1#45行删除#节点权重TCP_CHECK{connect_port 80#检查目标端口connect_timeout 3#连接超时 nb_get_retry 3#重试次数delay_before_retry 3#重试间隔时间}}

解释说明:检查80端口,相当于keepalived 用curl这个命令访问真是服务器的80端口,如果80端口能访问,代表活着,如果80端口检查失败,则下线,不会自动调度过去。

超时时间3秒,如果3秒不回应,则代表此真是服务器挂掉

重试次数3次,去访问80端口,3次以上,如果不回复,则认为此服务器挂掉

实验操作

 

 

第一步,四台服务器全部关闭防火墙,关闭防护

 

主lvs调度服务器:

先下载lvs keepalived

 第二步切换到主配置文件,然后备份

 第三步 修改主配置文件

 

 

 随后,ipvsadm -ln 查看一下规则  虚拟ip 跟真实ip都在里面

 备LVS服务器配置

第一步 下载ipvsadm keepalived

然后进入到主lvs(centos1)服务器将配置文件直接复制到备服务器里面,省的重新写配置文件了 

 然后再进入到备服务器,将data里面的keepalived配置文件移动到自己keepalived的配置文件中

 然后再keepalived配置文件中修改里面的备模式  路由id名  优先级即可

 修改过配置文件,然后重启

然后开启ipvsadm

 

 centos3 真实服务器配置(httpd)

 

 加入虚拟ip  是因为DR模式,lvs服务器跟真实服务器要用相同的虚拟ip地址,真实服务器回给客户端才不会有冲突,并且要将路由转发给关了,当配置相同的虚拟ip时,客户端访问,lvs服务器跟真是服务器会同时响应,但是客户端应到lvs服务器,所以要将真实服务器的路由转发功能给关闭

ifconfig lo:0 192.168.68.188 netmask 255.255.255.255

关闭路由转发

 

然后给网页写入内容

 

 然后关闭长连接

 

centos4真是服务器配置

然后配置虚拟ip 并且关闭路由转发

ifconfig lo:0 192.168.68.188 netmask 255.255.255.255

 

然后关闭长连接(是为了更好的出现7-3 到7-4的转换)

然后客服端去访问虚拟服务器

 

 现在模拟,当主lvs关闭keepalived服务时,7-3 7-4页面是否会出来

客户端访问时,还是会出现7-3 7-4 是因为lvs直接到备服务器上面了

 打开备服务器,虚拟ip跑到备服务器上面了,所以还是会正常运行

我们keepalived默认是抢占模式,可以看一下,再次打开主keepalived服务器,然后看虚拟ip

 

非抢占模式:

 

 操作如下:

主lvs服务器 

 nopreempt

然后重启

 备服务器配置:

随后,关闭主服务器,查看虚拟机ip,可以看见开启非抢占模式,主服务器关闭之后重启 虚拟ip不会回到主服务器上

 

而是当主服务器关闭,切换到备服务器上,就一直在备服务器上了  可以查看备服务器

 

延迟抢占

 

preempt_delay 60 

 主服务器配置

 备服务器配置

然后模拟主服务器关闭

 

密码是明文传输的,可以通过抓包看见

 

组播地址

 vrrp默认的单播地址是224.0.0.18

如果要修改组播地址,主备服务器都要修改 加在严格模式下方

vrrp_mcast_group4 234.6.6.6(这地址自定义)范围224~239

 主备的修改是一样的  都是backup

 随后,保存,然后重启

在备服务器上抓包

 

修改单播地址

 unicast_src_ip 192.168.68.3unicast_peer{192.168.68.4}

 主服务器配置

备服务器配置

 

 

 

通知脚本 

#!/bin/bash
#
contact='940132245@qq.com'
notify() {mailsubject="$(hostname) to be $1, vip floating"mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)notify master;;
backup)notify backup;;
fault)notify fault;;
*)echo "Usage: $(basename $0) {master|backup|fault}"exit 1;;
esac

 在主服务器上面配置

写一个脚本 keepalive.sh

 

随后,给这个脚本文件加上权限

 

 随后,修改主配置文件

 notify_master "/opt/keepalive.sh master"notify_backup "/opt/keepalive.sh backup"notify_fault "/opt/keepalive.sh fault"

随后,保存重启

 

 然后模拟master故障

随后,打开自己的qq邮箱,会发一个邮件过来

 

日志功能 

 

 随后,在日志文件中添加6级别

 因为修改了keepalived 跟rsyslog 所以都要重新加载

因为把keepalived日志放在了data下面 可以查看一下

 查看一下日志

 

重点! 脑裂

脑裂的意思就是,当主服务器没有故障时,备服务器认为自己是主,虚拟ip188会出现在主备上面 

 怎么模拟脑裂?------>在备服务器上模拟屏蔽掉主服务器所有的报文,包括屏蔽vrrp协议

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/521393.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

德人合科技|天锐绿盾加密软件——数据防泄漏系统

德人合科技是一家专注于提供企业级信息安全解决方案的服务商&#xff0c;提供的天锐绿盾加密软件是一款专为企业设计的数据安全防护产品&#xff0c;主要用于解决企事业单位内部敏感数据的防泄密问题。 www.drhchina.com PC端&#xff1a; https://isite.baidu.com/site/wjz012…

从根到叶:深入理解二叉搜索树

我们的心永远向前憧憬 尽管活在阴沉的现在 一切都是暂时的,转瞬即逝, 而那逝去的将变为可爱 &#x1f31d;(俄) 普希金 <假如生活欺骗了你> 1.二叉搜索树的概念 概念:搜索树&#xff08;Search Tree&#xff09;是一种有序的数据结构&#xff0c;用于存储和组…

redis缓存(穿透, 雪崩, 击穿, 数据不一致, 数据并发竞争 ), 分布式锁(watch乐观锁, setnx, redission)

redis的watch缓存机制 WATCH 机制原理&#xff1a; WATCH 机制&#xff1a;使用 WATCH 监视一个或多个 key , 跟踪 key 的 value 修改情况&#xff0c;如果有key 的 value 值在事务 EXEC 执行之前被修改了&#xff0c;整个事务被取消。EXEC 返回提示信息&#xff0c;表示 事务已…

杭州哪家男科医院好呢?杭州天目山医院排名实时公开!

杭州哪家男科医院好呢&#xff1f;杭州天目山医院排名实时公开&#xff01; 2024-03-07 10:03:32杭州天目山男科医院 核心提示&#xff1a;杭州天目山医院男科&#xff0c;坐落于浙江省杭州市西湖区古墩路6号&#xff0c;是一所与国际接轨的省市医保定点医院。杭州天目山男科…

快速体验transformers安装、应用之旅

目录 准备工作&#xff1a;安装必要的库 选择你的机器学习框架 不同任务的Pipeline 使用Pipeline 在当前人工智能的快速发展时代&#xff0c;&#x1f917; Transformers库成为了众多开发者和数据科学爱好者的宝贵工具。它不仅简化了使用预训练模型的过程&#xff0c;还提供…

腾讯云服务器多少钱一年和1个月价格,最便宜的不要钱!

腾讯云服务器多少钱一年&#xff1f;61元一年起&#xff0c;2核2G3M配置&#xff0c;腾讯云2核4G5M轻量应用服务器165元一年、756元3年&#xff0c;4核16G12M服务器32元1个月、312元一年&#xff0c;8核32G22M服务器115元1个月、345元3个月&#xff0c;腾讯云服务器网txyfwq.co…

mysql中两千万大表做时间范围查询很慢,怎么解决

预备知识 1、一个表的数据量达到好几千万或者上亿时&#xff0c;加索引的效果没那么明显啦。性能之所以会变差&#xff0c;是因为维护索引的B树结构层级变得更高了&#xff0c;查询一条数据时&#xff0c;需要经历的磁盘IO变多&#xff0c;因此查询性能变慢。 少量数据可以考…

电脑记事本怎么查看字数 记事本字数便捷查看方法

在数字化的时代&#xff0c;电脑记事本已成为我记录生活、工作的得力助手。相较于传统的纸质笔记本&#xff0c;它的便捷性不言而喻&#xff1a;随时随地&#xff0c;打开就能写&#xff0c;无需担心纸张用尽或笔墨不干的尴尬。但有一个问题一直困扰着我&#xff0c;那就是如何…

仿牛客网项目---私信列表和发送列表功能的实现

这篇文章我们来讲一下我的这个项目的另外一个功能&#xff1a;私信列表和发送列表功能。 先来设计DAO层。 Mapper public interface MessageMapper {// 查询当前用户的会话列表,针对每个会话只返回一条最新的私信.List<Message> selectConversations(int userId, int of…

第四篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas生物信息学领域应用

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas生物学数据操作应用介绍二、数据加载与清洗示例代码三、数据分析与统计示例代码四、数据可视化示例代码五、基因组数据分析示例代码六、蛋白质数据分析示例代码七、生物医学图像…

Java中的静态代理与动态代理

本来肝完通信编程的文章后想紧接着来一篇RPC的文章的&#xff0c;但是一想 RPC的话&#xff0c;还涉及到动态代理的知识&#xff0c;所以先来理一下动态代理的知识。 代理模式想必大家耳熟能详&#xff0c;一个代理类持有目标对象的引用&#xff0c;在执行目标方法前后加一点别…

开源模型应用落地-工具使用篇-Spring AI-高阶用法(九)

一、前言 通过“开源模型应用落地-工具使用篇-Spring AI-Function Call&#xff08;八&#xff09;-CSDN博客”文章的学习&#xff0c;已经掌握了如何通过Spring AI集成OpenAI以及如何进行function call的调用&#xff0c;现在将进一步学习Spring AI更高阶的用法&#xff0c;如…