中国银行建设网站首页,搞一个网站花多少钱,自建网站做跨境电商,张家港网站推广目录
引言
一、VRRP协议
#xff08;一#xff09;VRRP概述
1.诞生背景
2.基本理论
#xff08;二#xff09;VRRP工作原理
#xff08;三#xff09;VRRP相关术语
二、keepalive基本理论
#xff08;一#xff09;基本性能
#xff08;二#xff09;实现原…目录
引言
一、VRRP协议
一VRRP概述
1.诞生背景
2.基本理论
二VRRP工作原理
三VRRP相关术语
二、keepalive基本理论
一基本性能
二实现原理
三抢占模式
三、keepalive服务
一安装keepalive
二全局配置
三VRRP实例
四服务器配置
四、实际操作
一web服务器
二LVS集群服务器
五、keepalive管理
一主从更替
二单播组播
1.指定组播地址
2.设置单播
三日志功能
六、keepalive实现高可用
一基本理论
二实现nginx高可用 引言
基于VRRPVirtual Router Redundancy Protocol虚拟路由冗余协议的Keepalive机制是为了解决网络中静态默认网关单点故障的问题。在传统的网络架构中如果作为默认网关的路由器出现故障会导致整个子网失去对外通信的能力。而VRRP则通过引入主备模式来提供高可用性。
一、VRRP协议
一VRRP概述
1.诞生背景
终端设备访问不同网段设备的时候必须经过网关。如果只有1个网关那么网络就存在 单点故障所以为了避免单点故障导致网络的通信中断 所以我们建议在一个网段中可以同时添加多个网关从而增加网关的冗余性和网络的可靠性 但是多网关的部署会带来其他的问题 1.网关IP地址冲突 2.终端用户需要频繁的切换网关IP地址 针对上述两个问题提出了 在同网段的多个网关之间运行VRRP形成1个虚拟网关终端用户都配置和使用虚拟网关就可以了。
其作用为
在同一个网段的多个真实网关之间配置和运用形成层一个虚拟路由器 从而实现网关的冗余和负载均衡
2.基本理论
VRRPVirtual Router Redundancy Protocol虚拟路由冗余协议是一种网络层的容错协议。它的主要目的是在多个物理路由器之间提供一个虚拟路由器服务以实现默认网关的高可用性。在传统的网络环境中如果静态配置的默认网关出现故障则会导致网络中的所有主机失去对外通信的能力。VRRP通过将多台路由器联合起来形成一个虚拟路由器并选举出一台主路由器来处理所有的流量转发而其他的备份路由器则随时待命一旦主路由器出现故障备份路由器能够迅速接替工作从而确保网络连通性的持续性和可靠性。 二VRRP工作原理
(1) 虚拟路由器中的路由器根据优先级priority选举出Master。Master路由器通过发送免费ARP报文将自己的虚拟MAC地址通知给与它连接的设备或者主机从而承担报文转发任务
(2) Master路由器周期性发送VRRP报文心跳线以公布其配置信息(优先级等)和工作状况
(3) 如果Master路由器出现故障虚拟路由器中的Backup路由器将根据优先级重新选举新的Master
(4) 虚拟路由器状态切换时Master路由器由一台设备切换为另外一台设备新的Master路由器只是简单地发送一个携带虚拟路由器的MAC地址和虚拟IP地址信息的免费ARP报文这样就可以更新与它连接的主机或设备中的ARP相关信息。网络中的主机感知不到Master路由器已经切换为另外一台设备。
(5) Backup路由器的优先级高于Master路由器时由Backup路由器的工作方式(抢占方式和非抢占方式以及延时抢占)决定是否重新选举Master。
三VRRP相关术语
虚拟路由器Virtual Router 不是真实存在 虚构出来的
虚拟路由器标识VRID(0-255)唯一标识虚拟路由器
VIPVirtual IP 192.168.91.100 路由1 路由2
VMACVirutal MAC (00-00-5e-00-01-VRID)
物理路由器
master主设备
backup备用设备
priority优先级
二、keepalive基本理论
Keepalive机制是网络通信中一种重要的保持连接健康状态的方法有助于优化网络资源使用提高服务稳定性和响应速度
常见的keepalive版本
VRRP Keepalive虚拟路由冗余协议(VRRP)中的心跳检测机制用于选举和维护路由器的主备状态确保网络高可用性。
TCP Keepalive是一种内置于TCP协议中的功能用于检测并维持连接的活跃状态。当两个端点间存在一个已建立的TCP连接但在一段时间内没有数据传输时启用Keepalive的一方会周期性地发送特殊的探测报文通常是一个空TCP段给对方。如果接收方没有回应足够数量的Keepalive探测报文发送方就会认为连接已经断开并关闭该连接。
HTTP Keepalive允许HTTP客户端与服务器之间复用同一TCP连接来发送多个请求和响应以减少TCP连接建立和销毁带来的开销。
应用程序级Keepalive许多应用程序和服务也有自己的Keepalive机制比如MySQL数据库的连接保活、WebSocket的ping/pong消息等。
主要学习VRRP Keepalive
一基本性能
keepalive是专门为LVS与HA设计的一款健康检查软件
支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)判断 LVS 负载调度器、节点服务器的可用性当 master 主机出现故障及时切换到backup 节点保证业务正常当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。
官方网站Keepalived for Linux
二实现原理
实现原理与虚拟路由一致 1.首先根据优先级选出Master提供服务
2.Master默认每间隔1秒向Baskup发送一次VRRP报文告知Baskup自己处于工作状态并公布配置信息(优先级等)情况
3. 如果Master路由器出现故障Backup将根据优先级重新选举为新的Master
4.当原Master恢复工作时将根据抢占模式抢占方式和非抢占方式以及延时抢占决定是否重新成为Master
三抢占模式
1.抢占式 主服务器宕机过了一段时间修好了直接把主权抢过来
2.非抢占式 主服务器宕机过了一段时间修好了原来的主就作为备了
3延迟抢占 主修好后等待一定的时间后再次成为主
三、keepalive服务
keepalive服务可以使用yum安装、以及编译安装
本地yum源自带的版本比较旧
编译安装可以从官网下载较新的安装包进行安装
一安装keepalive
使用yum安装yum install keepalived.x86_64 -y 默认的主配置文件有157行
二全局配置
首先看第一部分3-17行为全局配置 global_defs
#全局配置notification_email
#定义当VRRP实例状态发生变化时系统将通过电子邮件发送通知给指定的收件人列表。acassenfirewall.loc, failoverfirewall.loc, sysadminfirewall.loc
#邮件通知的接收者。notification_email_from Alexandre.Cassenfirewall.loc
#设置发送邮件通知时显示的发件人地址这里是 Alexandre.Cassenfirewall.loc。smtp_server 192.168.200.1
#指定SMTP服务器地址本例中为 192.168.200.1该服务器用于发送邮件通知。smtp_connect_timeout 30
#设置SMTP服务器连接超时时间单位为秒这里为30秒。router_id LVS_DEVEL
#为当前运行的Keepalived实例设置一个唯一的标识符用在日志和其他网络通信中vrrp_skip_check_adv_addr
#跳过对通告地址advertised address的检查。如果启用此选项在某些情况下
#可以避免错误比如通告地址未在任何接口上配置。vrrp_strict
#启用严格模式要求配置必须符合RFC文档的标准规范否则Keepalived服务可能不会启动。
#建议关闭vrrp_garp_interval 0
#设置发送GARP即无请求的ARP响应消息的时间间隔默认值通常为1秒。设为0表示禁用GARP功能。vrrp_gna_interval 0
#设置发送GNA即IPv6下的无请求邻居通告消息的时间间隔。设为0表示禁用GNA功能
三VRRP实例
第二部分VRRP实例配置19-34 vrrp_instance VI_1
定义VRRP实例名称。state MASTER
设置当前节点在VRRP组中的初始状态为MASTER。这意味着该节点将优先处理请求
并拥有VIP虚拟IP地址的所有权interface eth0
指定VRRP通告报文通过哪个网络接口发送这里使用的是eth0接口。virtual_router_id 51
每个VRRP实例需要一个唯一的标识符这里用数字51表示。主备需要在同一个标识符内priority 100
设置本节点在VRRP组中的优先级数值越高代表优先级越高优先级最高的节点将成为MASTERadvert_int 1
设置VRRP通告消息的时间间隔单位为秒。此处设置为每秒发送一次心跳消息以确认其是否在线authentication
auth_type PASS 设置认证类型为密码认证。
auth_pass 1111 设置用于身份验证的共享密码。virtual_ipaddress
列出此VRRP实例要管理的一系列虚拟IP地址
四服务器配置
第三部分为服务器配置36-60 虚拟服务器
virtual_server 192.168.200.100 443
#定义了一个虚拟服务器对外提供服务的地址为192.168.200.100监听端口为443即HTTPS服务。delay_loop 6
#健康检查间隔每隔6秒对后端服务器执行一次健康检查。lb_algo rr
#负载均衡算法采用轮询Round Robin策略。lb_kind NAT
#负载均衡方式采用NAT客户端与真实服务器之间的通信通过NAT进行转发。#persistence_timeout 50
#会话保持超时时间同一个客户端在50秒内发起的新请求都会被转发到同一台后端服务器上。protocol TCP
#明确指出虚拟服务器处理的是TCP流量。真实服务器配置real_server 192.168.201.100 443
#定义一个真实服务器其IP地址为192.168.201.100同样监听443端口weight 1
#权重值为1表示该服务器在负载均衡中分配请求的相对权重。SSL_GET
#使用SSL协议发送GET请求来进行健康检查。url
#定义了两个需要检查的URL路径及其预期的HTTP响应摘要。一般不适用url需要更改connect_timeout 3 #设置连接到真实服务器的超时时间为3秒。
nb_get_retry 3 #如果首次请求未能得到正确的摘要将重试3次。
delay_before_retry #每次重试前等待3秒。
四、实际操作
LVS Keepalived 高可用群集
环境设备
LVS1192.168.83.30 MASTERLVS2192.168.83.40 BACKUPweb1192.168.83.50web2192.168.83.60客户端192.168.83.100VIP192.168.83.200
一web服务器
首先配置web服务
1.下载安装web服务
yum install httpd -y
2.建立虚拟IP 3.调整内核参数 net.ipv4.conf.all.arp_ignore 和 net.ipv4.conf.default.arp_ignore
设置为1表示节点将更严格地处理ARP请求。在某些情况下系统不会响应非本地IP地址的ARP请求
这有助于防止IP地址冲突并且可以用于LVS DR模式下的Director节点以避免对外直接响应ARP请求net.ipv4.conf.all.arp_announce 和 net.ipv4.conf.default.arp_announce
设置为2表示节点在发送ARP应答时总是使用其主接口上的最具体的地址即优先级最高的源IP地址
这同样对LVS DR模式很有用确保Director节点在回应ARP请求时只使用VIP而不是实际的物理接
口地址。调整完毕后开启web服务systemctl start httpd
在站点目录下构建数据文件 两台web服务器同样操作
二LVS集群服务器
1.下载服务
yum install keepalived.x86_64 -y yum install ipvsadm.x86_64 -y
先启动ipvsadm服务
ipvsadm-save /etc/sysconfig/ipvsadm #生成配置信息文件 systemctl start ipvsadm.service #启动服务 2.配置文件
在配置文件之前最好先进行备份
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
删除60行以下的内容
配置全局设置 配置VRRP热备实例 vrrp_instance VI_1 {
定义实例名称默认即可也可以自定义state MASTER
设置为MASTER表示为主interface ens33
指定心跳报文从ens33网卡发送virtual_router_id 51
实例表示符默认即可BACKUP与其一致priority 100
设置优先级其值需要比BACKUP高advert_int 1
每间隔一秒发送一次VRRP报文authentication {auth_type PASSauth_pass 123123
定义密码认证方式并设置密码BACKUP需要与其一致} virtual_ipaddress {192.168.83.200
设置集群VIP地址}
}
配置虚拟路由 virtual_server 192.168.83.200 80 {#定义对外提供服务的IP地址提供服务为80端口即http服务delay_loop 6#每6秒对后端服务器进行健康检查lb_algo rr #设置调度算法为rr(轮询)lb_kind DR#负载均衡方式采用DRpersistence_timeout 0#长连接时间为0秒为体现操作真实性真实环境建议调高默认为50秒protocol TCP#虚拟服务器监听TCP协议的流量real_server 192.168.83.50 80 {#定义真实服务器其IP地址为192.168.83.50监听80端口weight 1#轮询权重为1TCP_CHECK {#使用TCP_CHECK模块进行真实服务器的健康状态检测connect_port 80#通过TCP协议连接到真实服务器的80端口以确认其是否可用connect_timeout 3#访问超时时间超过3秒认为该服务器宕机nb_get_retry 3#重复访问3次delay_before_retry 3#每次访问间隔3秒} } real_server 192.168.83.60 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3
#原理同上}}}配置完毕后启动服务systemctl start keepalived.service
查看规则情况 另一台服务器与其基本一致
需要修改121922行信息其余配置与主服务一致 配置完毕后启动服务
ipvsadm-save /etc/sysconfig/ipvsadm systemctl start ipvsadm.service systemctl start keepalived.service 使用客户端访问进行测试 五、keepalive管理
一主从更替 当MASTER关闭后优先级最高BACKUP会立马变成MASTER继续工作 当主恢复后立马会变为MASTER即为抢占模式默认 可以通过添加nopreempt参数设置为非抢占模式
在虚拟服务器段配置 也可以设置延迟抢占同样在虚拟服务器段配置 二单播组播
在Keepalived中VRRP实例通常通过组播方式来发送心跳和通告消息以实现高可用性和故障切换
组播地址范围为224.0.0.0-239.255.255.255
默认的组播地址为224.0.0.18。如果有多组keepalive服务器所有的默认心跳线发送路径都为该地址容易造成混乱所以需要修改
通过添加vrrp_mcast_group4来指定特定的组播地址或者改为单播
注意如果指定组播地址所有的服务器都要改
1.指定组播地址 当前192.168.83.30为主。可以通过tcpdump抓包来进行查看 可以看到MASTER发的VRRP包是发往指定的组播地址224.83.83.83
2.设置单播 MASTER服务器unicast_src_ip 192.168.83.30
#该指令指定当前节点作为VRRP通告和心跳消息的发送源地址。
#这意味着所有从这个节点发出的VRRP报文都将使用 192.168.83.30 这个IP地址作为源地址unicast_peer {
192.168.83.40
}
#这部分定义了单播对等体列表即指定接收VRRP通告和心跳消息的目标地址。
#在这里仅指定了一个对等体地址 192.168.83.40表示此节点将直接向 192.168.83.40
#发送VRRP通信信息而不是通过组播方式广播到整个网络。BACKUP服务器
#同上
同样抓包查看验证一下 三日志功能
因为keepalive服务较为重要其日志没有独立的文件存在默认存放在/var/log/messages文件中 为便于分析需要将它的日志位置单独存放
在/etc/sysconfig/keepalived文件中第14行有一段信息为KEEPALIVED_OPTIONS-D 这是一个环境变量或启动参数的设置用于指定Keepalived服务在启动时使用的额外选项。
-D表示Keepalived以守护进程daemon模式运行。这意味着Keepalived会在后台运行并且 脱离终端控制台
添加-S选项设置日志
-S 代表设置syslog日志设备它通常与一个数字参数0-7结合使用用于指定syslog记录的 日志设施级别 修改日志管理配置文件/etc/rsyslog.conf 修改完毕后重启日志管理服务与keepalive服务 六、keepalive实现高可用
keepalived利用 VRRP Script 技术可以调用外部的辅助脚本进行资源监控并根据监控的结果实现优先动态调整从而实现其它应用的高可用性功能
一基本理论
VRRP Script是Keepalived的一个强大特性其配置等级global_defs一致与它允许用户自定义检测脚本当Keepalived运行时会周期性地执行这些脚本。如果脚本返回成功通常为0则认为被监控的服务处于正常状态如果脚本返回失败非0值则Keepalived将根据配置更改VRRP实例的状态可能导致主备节点的角色切换从而确保服务的高可用性。
VRRP Script技术实现需要先定义脚本而后调用脚本
定义脚本
vrrp_script SCRIPT_NAME { #定义一个检测脚本在global_defs 之外配置script STRING|QUOTED-STRING #shell命令或脚本路径(注意执行权限)interval INTEGER #间隔时间单位为秒默认1秒timeout INTEGER #超时时间weight INTEGER:-254..254
#默认为0,如果设置此值为负数当上面脚本返回值为非0时会将此值与本节点权重相加可以降低
#本节点权重即表示fall. 如果是正数当脚本返回值为0会将此值与本节点权重相加可以提高本
#节点权重即表示 rise.通常使用负值fall INTEGER #执行脚本连续几次都失败,则转换为失败建议设为2以上rise INTEGER #执行脚本连续几次都成功把服务器从失败标记为成功
}调用脚本
track_script {SCRIPT_NAME_1SCRIPT_NAME_2
} 二实现nginx高可用
1.下载安装nginx服务
yum install epel-release.noarch -y #下载epel源
yum install nginx -y #下载nginx
systemctl stop ipvsadm.service #关闭ipvsamd服务
定义一个简单的脚本 脚本表示使用killall -0这是Linux命令行中用于检查指定进程名是否存在且至少有一个实例在运行的命令。这里的参数 -0 具有特殊含义它不会发送任何信号给进程而是仅仅测试这些进程是否存在
修改nginx配置文件添加反向代理及负载均衡 修改keepalive配置文件只保留全局配置与实例配置删除虚拟服务器与真实服务器配置
在全局配置语句块外添加vrrp_script服务 vrrp_script keep
#定义名为 keep 的VRRP检查脚本。script /data/keep.sh
#指定要执行的shell脚本路径为 /data/keep.sh。这个脚本应该返回0表示成功非零值表示失败。interval 1
#设置每隔1秒执行一次该脚本以检查服务状态。timeout 30
#如果脚本在30秒内没有响应即超时则认为它执行失败。weight -50
#当脚本执行成功时VRRP实例的优先级权重减50。fall 3
#当连续3次检查失败后将触发VRRP实例状态变更可能导致主备切换。rise 3
#当连续3次检查成功后恢复VRRP实例到正常状态。
配置完毕后重启keepalive服与nginx服务
systemctl restart keepalived.service
systemctl start nginx
另一台keepalive配置与其一致 配置完毕后重启服务使用客户端访问