Keepalived双机热备

目录

前言

一、实验拓扑

二、配置web节点

三、配置双机热备

四、测试

​编辑

总结



前言

    Keepalived 是一个基于 VRRP 协议来实现的 LVS 服务高可用方案,可以解决静态路由出现的单点故障问题。
    原理
        在一个 LVS 服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但
是对外表现为一个虚拟 IP,主服务器会发送 VRRP 通告信息给备份服务器,当备份服务器收不到 VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。解决单点故障问题


一、实验拓扑

准备4台主机确保互相通信

二、配置web节点

1、在web节点上安装配置nginx服务

 yum -y install  epel-release.noarchyum -y install nginx

2、配置nfs服务

在192.168.115.128上我们创建一个共享目录mkdir /opt/put


##创建共享目录
mkdir /opt/pub
##设置
vim /etc/exports
##插入
/opt/pub 192.168.115.0/24(rw,sync,no_root_squash)
##使它生效
exportfs -arv
##启动nfs并查看
systemctl start nfs
showmount -e

 3、将共享目录挂载到两台web节点的/usr/share/nginx/html目录下


[root@localhost yum.repos.d]# systemctl start nfs
[root@localhost yum.repos.d]# showmount -e 192.168.115.128
Export list for 192.168.115.128:
/opt/pub 192.168.115.0/24
[root@localhost yum.repos.d]# mount 192.168.115.128:/opt/pub /usr/share/nginx/html/

4、启动2个nginx并访问

systemctl start nginx

在任意一台web节点书写网页测试内容

echo hello > /usr/share/nginx/html/index.html

 5、访问测试

 

三、配置双机热备

1、在web节点按照要求配置主备,首先先安装keepalived

yum -y install keepalived

2、keepalived文件配置解析

安装yum install -y keepalived
配置文件/etc/keepalived/keepalived.conf
配置项router_id 1             定义节点idstate MASTER|BACKUP     定义节点主从状态interface ens33         配置监听的网卡virtual_router_id 51    同一个热备组要保持一致priority 100            节点优先级advert_int 1            多少秒进行一次心跳检测authentication {auth_type PASSauth_pass 1111}keepalived节点的认证方式,同一个keepalived双机热备组一定要保持一致virtual_ipaddress   配置VIP,即漂移地址####vrrpvrrp_script chk_nginx_server {script "/etc/keepalived/chk_nginx.sh "interval 1weight -2
}vrrp_instance VI_1 {      #虚拟路由器名称,在一个keepalived可以启多个虚拟路由器,每个虚拟路由器的名字都不一样state MASTER          #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP,一般都是配置backup,该值无法决定身份,最终还是通过比较priorityinterface eth0        #绑定为当前虚拟路由器使用的物理接口,如:ens32,eth0,bond0,br0virtual_router_id 51  #每个虚拟路由器惟一标识,范围:0-255,同一组虚拟路由器的vrid必须一致priority 100          #当前物理节点在此虚拟路由器的优先级,范围:1-254,每个keepalived主机节点此值不同advert_int 1          #vrrp通告的时间间隔,默认1snopreempt            #当master宕机恢复之后不抢占masterauthentication {      #认证机制 auth_type PASS    #AH(不推荐)或PASSauth_pass 1111    #预共享密钥,仅前8位有效,同一个虚拟路由器的多个keepalived节点必须一样}virtual_ipaddress {                      #虚拟IP10.0.0.100                           #指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认为/3210.0.0.101/24 dev eth1               #指定VIP的网卡10.0.0.102/24 dev eth2 label eth2:1  #指定VIP的网卡label}track_script {chk_nginx_server }}
global_defs {notification_email {      #故障发生时给谁发邮件通知acassen@firewall.locfailover@firewall.locsysadmin@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          #标识这台机器ID,默认情况下是主机名,可以配置成主机名vrrp_skip_check_adv_addr     #所有报文都检查比较消耗性能,此配置为如果收到的报文和上一个报文是同一个路由器则跳过检查报文中的源地址vrrp_strict                  #严格遵守VRRP协议,不允许状况:1,没有VIP地址,2.配置了单播邻居,3.在VRRP版本2中有IPv6地址vrrp_garp_interval 0         #ARP报文发送延迟vrrp_gna_interval 0          #消息发送延迟#vrrp_mcast_group4 224.0.0.18 #指定组播IP地址,默认值:224.0.0.18 范围:224.0.0.0到239.255.255.255#vrrp_iptables                #避免生成iptables input链 规则,sip any 拒绝 dip any
}

功能模块:
    core
        主进程启动
    vrrp
        vrrp协议:热备份路由协议
    check
        健康状态检测

3、下面开是配置

先配置主节点192.168.115.131

#####打开keepalived的配置文件
#####在主上这样配置
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}router_id NGINX1          ###组名
}vrrp_instance VI_1 {state MASTER            ###身份interface ens33virtual_router_id 51    ###ID必须一致priority 100            ###优先级越大越优先advert_int 1       authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {    ####虚拟地址,可用来访问,设多个是为了防止ip被占用192.168.115.100192.168.115.101192.168.115.102}
}

配置从节点192.168.115.134

global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}router_id NGINX2
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.100192.168.115.101192.168.115.102}
}

4、启动web节点的keepalived并查看ip

systemctl start keepalived

四、测试

1、三个虚拟ip都可以访问

 

2、宕掉web主节点,模拟故障

把主节点关机,此时我问继续访问我们的网站结果如下

 

查看备用web节点的IP,发现IP漂移过来了,双机热备生效了

3、此时我们的web主节点修好了并上线了,让我们看看IP发生了什么变化

主:上线后IP漂移回到了主

 备:ip恢复了原样


总结

补充一下:

1、双机热备的脑裂现象的原因:  Keepalived配置里同一 VRRP实例
如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
    vrrp实例名字不一致、优先级一致
    防火墙打开,导致心跳无法正常通信
    网卡故障
    网卡进行多路复用

2、VIP无法通信
    注释:vrrp_strict

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

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

相关文章

【Unity3D】程序纹理简单应用

1 几何纹理应用 本文所有案例的完整资源详见→Unity3D程序纹理简单应用。 1.1 边框 1)边框子图 Border.shadersubgraph 说明:Any 节点用于判断输入向量中是否存在一个分量非零,Branch 节点根据输入的真假走不同的分支,详见→Shad…

服务器(容器)开发指南——code-server

文章目录 code-server简介code-server的安装与使用code-server的安装code-server的启动code-server的简单启动指定配置启动code-server code-server环境变量配置 code-server端口转发自动端口转发手动添加转发端口 nginx反向代理code-servercode-server打包开发版镜像 GitHub官…

本地搭建CFimagehost私人图床【公网远程访问】

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

django自动创建model数据

目前使用的环境:django4.2.3,python3.10 django通过一些第三方库,可以轻易的自动生成一系列的后台数据。 首先先创建一个数据库: 然后,在setting.py中就可以指定我们新创建的数据库了。 DATABASES {default: {ENGI…

Flink流批一体计算(16):PyFlink DataStream API

目录 概述 Pipeline Dataflow 代码示例WorldCount.py 执行脚本WorldCount.py 概述 Apache Flink 提供了 DataStream API,用于构建健壮的、有状态的流式应用程序。它提供了对状态和时间细粒度控制,从而允许实现高级事件驱动系统。 用户实现的Flink程…

【boost网络库从青铜到王者】第六篇:asio网络编程中的socket异步读(接收)写(发送)

文章目录 1、简介2、异步写 void AsyncWriteSomeToSocketErr(const std::string& buffer)3、异步写void AsyncWriteSomeToSocket(const std::string& buffer)4、异步写void AsyncSendToSocket(const std::string& buffer)5、异步读void AsyncReadSomeToSocket(cons…

Linux_4_文本处理工具和正则表达式

目录 1文本编辑工具之神VIM1.1 vi和vim简介1.2使用vim1.2.1 vim 命令格式1.2.2三种主要模式和转换 1.3扩展命令模式1.3.1扩展命令模式基本命令1.3.2 地址定界1.3.3查找并替换1.3.4定制vim的工作特性1.3.4.1行号1.3.4.2忽略字符的大小写1.3.4.3白动缩进1.3.4.4复制粘贴保留格式1…

目标检测笔记(十一):如何在特定区域进行人脸检测实操

文章目录 背景代码 背景 由于我们在做项目的时候可能会涉及到某个指定区域进行目标检测或者人脸识别等任务,所以这篇博客是为了探究如何在传统目标检测的基础上来结合特定区域进行检测,以Opencv自带的包为例。 代码 import cv2face_cascade cv2.Casc…

鸡肋的RDP反制

更新时间:2023年07月19日09:18:29 为什么叫鸡肋: 鸡肋者,食之无肉,弃之有味。 你说不能成吧,但是有成功案例,你说成了吧,要求太高,还要看运气的。 一句话:对方需要开启…

Maven详解

文章目录 一、引言1.1 为什么需要 Maven?1.2 Maven 解决了哪些问题?1.2.1 添加第三方jar包1.2.2 jar包之间的依赖关系1.2.3 处理jar包之间的冲突1.2.4 获取第三方jar包1.2.5 将项目拆分成多个工程模块1.2.6 实现项目的分布式部署 二、介绍三、Maven 的特…

【java安全】JNDI注入概述

文章目录 【java安全】JNDI注入概述什么是JNDI?JDNI的结构InitialContext - 上下文Reference - 引用 JNDI注入JNDI & RMI利用版本:JNDI注入使用Reference 【java安全】JNDI注入概述 什么是JNDI? JNDI(Java Naming and Directory Interf…

图数据库Neo4j学习五渲染图数据库neo4jd3

文章目录 1.现成的工具2.Neo4j JavaScript Driver3.neovis4.neo4jd34.1neo4jd3和neovis对比4.2获取neo4jd34.3neo4jd3的数据结构4.4Spring data neo4.4.1 定义返回数据格式4.4.1.1NeoResults4.4.1.2GraphVO4.4.1.3NodeVO4.4.1.4ShipVO 4.4.2 SDN查询解析4.4.2.1 Repo查询语句4.…