百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

keepalived服务器部署

off999 2025-02-28 17:03 14 浏览 0 评论

一、什么是高可用

通过前面课程的学习,我们知道LVS、Nginx可以实现很多种不同类型的分发,我们还知道,集群系统存 在的作用就是为了解决单点故障的问题。

LVS、Nginx集群的单点故障问题

这个单点故障主要体现在两个方面

分发器宕机怎么处理?

假如nginx服务器挂掉了,那么所有的服务也会跟着瘫痪 。

一种方法是人为监控,发现主分发器宕机后,立马登录备分发器,并给它分配虚ip。

另一种办法是用软件来替代人来监控,自动登录备分发器,分配虚ip。

数据服务器宕机怎么处理?

分发器可以自动判断数据服务器的存活状态,不对宕机服务器要数据。

二、Keepalived介绍

keepalived是使用C语言编写的路由热备软件,该项目主要目标是为linux系统提供简单高效的负载均衡 及高可用解决方案。keepalived由一组检查器,根据服务器的健康状况动态的维护和管理服务器池,另 外keepalived通过vrrp协议实现高可用架构,vrrp是路由灾备的实现基础。通过前面的课程我们知道, 在lvs中只解决了真实服务器的单点故障,但是如果分发器也就是lvs主机发生故障的话,整个集群系统都 会崩溃,所以我们需要keepalived来实现集群系统的高可用。我们可以部署两台或更多的分发器,仅有 一台调度器做为主服务器,其它的做为备用,当主调度器发生故障时,keepalived可以自动将备用调度 器升级为主调度器,从而实现整个集群系统的高负载,高可用。

三、vrrp协议

vrrp协议是为了静态路由环境下防止单点故障而设计的主从灾备协议,在主设备发生故障时业务自动切 换至从设备,而这一切对于用户而言是透明的。vrrp将两台或多台设备虚拟成一个设备,对外仅提供一 个虚拟的IP地址,这些设备在同一时刻仅有一台设备可有拥有该IP地址,而拥有该IP地址的设备就是主 设备,其它的就是备用设备。主设备会不断发送自己的状态信息给备用设备,当备用设备接收不到主设备 的状态信息时,多个备用设备会根据自身的优先级选择出新的主设备,并拥有所有的业务功能。vrrp协 议需要为每个路由设备定义一个虚拟路由ID(VRID)以及优先,所有主备路由设备的VRID必须一样,这 样才会被视为同一组设备,而优先级最高的设备就是主路由设备,VRID和优先级的范围为0-255之间的 整数,数值越大优先级越高,如果优先级相等,则会对比IP地址,地址越大优先级越高

四、部署keepalived

[root@lvs1 ~]# dnf install keepalived -y

配置文件说明

[root@lvs1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
一个
#全局配置
#指定keepalived在发生切换时需要发送email到的对象,一行
acassen@firewall.loc #指定收件人邮箱failover@firewall.loc sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人smtp_server 192.168.200.1 #指定smtp服务器地址
smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #此处注意router_id为负载均衡标识,在局域网内应该是唯一
的。
vrrp_skip_check_adv_addr vrrp_strict vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { #虚拟路由的标识符
state MASTER #状态只有MASTER和BACKUP两种,并且要大写,MASTER为工作状态, BACKUP是备用状态
interface eth0 #通信所使用的网络接口virtual_router_id 51 #虚拟路由的ID号,是虚拟路由MAC的最后一位地址
priority 100 #此节点的优先级,主节点的优先级需要比其他节点高
advert_int 1 #通告的间隔时间
authentication { #认证配置
auth_type PASS #认证方式auth_pass 1111 #认证密码
}
virtual_ipaddress { #虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码,同 时这个ip 必须与我们在lvs 客户端设定的vip 相一致!
192.168.200.16
192.168.200.17
192.168.200.18
}
}
virtual_server 192.168.200.100 443 { #集群所使用的VIP和端口
delay_loop 6 #健康检查间隔,单位为秒
lb_algo rr #lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh
nat_mask 255.255.255.0 #VIP掩码
lb_kind NAT #负载均衡转发规则。一般包括DR,NAT,TUN 3种persistence_timeout 50 #会话保持时间,会话保持,就是把用户请求转发给同一个服
务器,不然刚在1上提交完帐号密码,就跳转到另一台服务器2上了
protocol TCP #转发协议,有TCP和UDP两种,一般用TCP,没用过UDP real_server 192.168.200.100 443 { #真实服务器,包括IP和端口号
weight 1 #权重
TCP_CHECK { #通过tcpcheck判断RealServer的健康状态connect_timeout 3 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 23 #健康检查的端口的端口bindto 
}
HTTP_GET { #健康检测方式,可选有 SSL_GET、TCP_CHECK、HTTP_GET url { #检查url,可以指定多个
path / #检查的url路径
digest ff20ad2481f97b1754ef3e12ecd3a9cc #需要检查到的内容。检查后的摘要
信息。
}
url {
path /mrtg
digest 9b3a0c85a887a256d6939da88aabd8cd
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
#连接超时时间
#检测尝试几次 #检测的时间间隔
}
}
}

相关推荐

Python钩子函数实现事件驱动系统(created钩子函数)

钩子函数(HookFunction)是现代软件开发中一个重要的设计模式,它允许开发者在特定事件发生时自动执行预定义的代码。在Python生态系统中,钩子函数广泛应用于框架开发、插件系统、事件处理和中...

Python函数(python函数题库及答案)

定义和基本内容def函数名(传入参数):函数体return返回值注意:参数、返回值如果不需要,可以省略。函数必须先定义后使用。参数之间使用逗号进行分割,传入的时候,按照顺序传入...

Python技能:Pathlib面向对象操作路径,比os.path更现代!

在Python编程中,文件和目录的操作是日常中不可或缺的一部分。虽然,这么久以来,钢铁老豆也还是习惯性地使用os、shutil模块的函数式API,这两个模块虽然功能强大,但在某些情况下还是显得笨重,不...

使用Python实现智能物流系统优化与路径规划

阅读文章前辛苦您点下“关注”,方便讨论和分享,为了回馈您的支持,我将每日更新优质内容。在现代物流系统中,优化运输路径和提高配送效率是至关重要的。本文将介绍如何使用Python实现智能物流系统的优化与路...

Python if 语句的系统化学习路径(python里的if语句案例)

以下是针对Pythonif语句的系统化学习路径,从零基础到灵活应用分为4个阶段,包含具体练习项目和避坑指南:一、基础认知阶段(1-2天)目标:理解条件判断的逻辑本质核心语法结构if条件:...

[Python] FastAPI基础:Path路径参数用法解析与实例

查询query参数(上一篇)路径path参数(本篇)请求体body参数(下一篇)请求头header参数本篇项目目录结构:1.路径参数路径参数是URL地址的一部分,是必填的。路径参...

Python小案例55- os模块执行文件路径

在Python中,我们可以使用os模块来执行文件路径操作。os模块提供了许多函数,用于处理文件和目录路径。获取当前工作目录(CurrentWorkingDirectory,CWD):使用os....

python:os.path - 常用路径操作模块

应该是所有程序都需要用到的路径操作,不废话,直接开始以下是常用总结,当你想做路径相关时,首先应该想到的是这个模块,并知道这个模块有哪些主要功能,获取、分割、拼接、判断、获取文件属性。1、路径获取2、路...

原来如此:Python居然有6种模块路径搜索方式

点赞、收藏、加关注,下次找我不迷路当我们使用import语句导入模块时,Python是怎么找到这些模块的呢?今天我就带大家深入了解Python的6种模块路径搜索方式。一、Python模块...

每天10分钟,python进阶(25)(python进阶视频)

首先明确学习目标,今天的目标是继续python中实例开发项目--飞机大战今天任务进行面向对象版的飞机大战开发--游戏代码整编目标:完善整串代码,提供完整游戏代码历时25天,首先要看成品,坚持才有收获i...

python 打地鼠小游戏(打地鼠python程序设计说明)

给大家分享一段AI自动生成的代码(在这个游戏中,玩家需要在有限时间内打中尽可能多的出现在地图上的地鼠),由于我现在用的这个电脑没有安装sublime或pycharm等工具,所以还没有测试,有兴趣的朋友...

python线程之十:线程 threading 最终总结

小伙伴们,到今天threading模块彻底讲完。现在全面总结threading模块1、threading模块有自己的方法详细点击【threading模块的方法】threading模块:较低级...

Python信号处理实战:使用signal模块响应系统事件

信号是操作系统用来通知进程发生了某个事件的一种异步通信方式。在Python中,标准库的signal模块提供了处理这些系统信号的机制。信号通常由外部事件触发,例如用户按下Ctrl+C、子进程终止或系统资...

Python多线程:让程序 “多线作战” 的秘密武器

一、什么是多线程?在日常生活中,我们可以一边听音乐一边浏览新闻,这就是“多任务处理”。在Python编程里,多线程同样允许程序同时执行多个任务,从而提升程序的执行效率和响应速度。不过,Python...

用python写游戏之200行代码写个数字华容道

今天来分析一个益智游戏,数字华容道。当初对这个游戏颇有印象还是在最强大脑节目上面,何猷君以几十秒就完成了这个游戏。前几天写2048的时候,又想起了这个游戏,想着来研究一下。游戏玩法用尽量少的步数,尽量...

取消回复欢迎 发表评论: