Keepalived双机热备

目录

前言

一、实验拓扑

二、配置web节点

三、配置双机热备

四、测试

​编辑

总结



前言

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


一、实验拓扑

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

二、配置web节点

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

 yum -y install  epel-release.noarch
 yum -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             定义节点id
		state MASTER|BACKUP     定义节点主从状态
		interface ens33         配置监听的网卡
		virtual_router_id 51    同一个热备组要保持一致
		priority 100            节点优先级
		advert_int 1            多少秒进行一次心跳检测
		

        authentication {
        auth_type PASS
        auth_pass 1111
    }
			keepalived节点的认证方式,同一个keepalived双机热备组一定要保持一致
		


        virtual_ipaddress   配置VIP,即漂移地址
		
####vrrp
       vrrp_script chk_nginx_server {
       script "/etc/keepalived/chk_nginx.sh "
       interval 1
       weight -2
}
 
 
vrrp_instance VI_1 {      #虚拟路由器名称,在一个keepalived可以启多个虚拟路由器,每个虚拟路由器的名字都不一样
    state MASTER          #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP,一般都是配置backup,该值无法决定身份,最终还是通过比较priority
    interface eth0        #绑定为当前虚拟路由器使用的物理接口,如:ens32,eth0,bond0,br0
    virtual_router_id 51  #每个虚拟路由器惟一标识,范围:0-255,同一组虚拟路由器的vrid必须一致
    priority 100          #当前物理节点在此虚拟路由器的优先级,范围:1-254,每个keepalived主机节点此值不同
    advert_int 1          #vrrp通告的时间间隔,默认1s
    nopreempt            #当master宕机恢复之后不抢占master
 
    authentication {      #认证机制 
        auth_type PASS    #AH(不推荐)或PASS
        auth_pass 1111    #预共享密钥,仅前8位有效,同一个虚拟路由器的多个keepalived节点必须一样
    }
 
    virtual_ipaddress {                      #虚拟IP
        10.0.0.100                           #指定VIP,不指定网卡,默认为eth0,注意:不指定/prefix,默认为/32
        10.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.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          #标识这台机器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.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   router_id NGINX1          ###组名
}

vrrp_instance VI_1 {
    state MASTER            ###身份
    interface ens33
    virtual_router_id 51    ###ID必须一致
    priority 100            ###优先级越大越优先
    advert_int 1       
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {    ####虚拟地址,可用来访问,设多个是为了防止ip被占用
        192.168.115.100
        192.168.115.101
        192.168.115.102
    }
}

配置从节点192.168.115.134

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   router_id NGINX2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.115.100
        192.168.115.101
        192.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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker 内apt-get安装软件都不好使

报各种错误 apt-get install --no-install-recommends libboost-all-dev Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed:autoconf automake autotools-dev cpp-8 gc…

拼多多开放平台的API接口可以获取拼多多电商数据。以下是API接口流程

使用拼多多开放平台的API接口可以获取拼多多电商数据。以下是一般的API接口流程: 1. 注册开发者账号:首先,您需要在拼多多开放平台注册一个开发者账号。通过开发者账号,您可以获得API密钥和其他必要的信息。 2. 鉴权与认证&…

查看windows当前占用的所有端口、根据ipt终止任务进程、OS、operatingSystem

文章目录 查询端口查询指定端口根据进程pid查询进程名称查看所有进程名称根据pid终止任务进程根据进程名称终止任务 查询端口 netstat -ano查询指定端口 netstat -ano | findstr "80"根据进程pid查询进程名称 tasklist | findstr "660"查看所有进程名称 ta…

Flutter Cannot run with sound null safety, because the following dependencies

flutter sdk 版本升级到2.0或者更高的版本后,运行之前的代码会报错 Error: Cannot run with sound null safety, because the following dependencies dont support null safety:- package:flutter_swiper- package:flutter_page_indicator- package:transformer_p…

python 面试题--3(15题)

目录 Python中的生成器是什么?如何创建一个生成器? 解释Python中的递归函数及其使用场景。 Python中的迭代器和可迭代对象有什么区别? 什么是Python中的模块和包?它们有什么区别? 如何在Python中处理异常&#xf…

MySQL数据库中间件Mycat介绍及下载安装(教程)

一,介绍 MyCat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。 开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器…

有序充电运营管理平台是基于物联网和大数据技术的充电设施管理系统-安科瑞黄安南

随着我国能源战略发展以及低碳行动的实施,电动汽车已逐步广泛应用,而电动汽车的应用非常符合当今社会对环保意识的要求,以及有效节省化石燃料的消耗。 由于其没有污染排放的优点以及政府部门的关注,电动汽车将成为以后出行的重要…

JAVA坦克大战游戏v3

JAVA坦克大战游戏v3 素材 bomb_3.gif bomb_2.gif bomb_1.gif 项目结构 游戏演示 MyTankGame3.java /*** 功能:坦克游戏的5.0[]* 1.画出坦克.* 2.我的坦克可以上下左右移动* 3.可以发射子弹,子弹连发(最多5)* 4.当我的坦克击中敌人坦克时,敌人就消失(爆炸的效…

第一个VUE程序?

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title></head> <body><div id"app">{{message}} </div><!-- 1.导入Vue.js --> <script s…

【python】python智能停车场数据分析(代码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

ElasticSearch(一)数据类型

ElasticSearch&#xff08;一&#xff09;数据类型 1.简述 Es数据类型分为基础数据类型和复杂类型数据&#xff0c;掌握ES数据类型才能进一步使用ES检索数据内容。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

linux操作系统的权限的深入学习(未完)

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户…

基于Java+SpringBoot+Vue前后端分离体育馆管理系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

SOA通信中间件常用的通信协议

摘要&#xff1a; SOA&#xff08;面向服务的架构&#xff09;的软件设计原则之一是模块化。 前言 SOA&#xff08;面向服务的架构&#xff09;的软件设计原则之一是模块化。模块化可以提高软件系统的可维护性和代码重用性&#xff0c;并且能够隔离故障。举例来说&#xff0c;…

Unity3D Pico VR 手势识别

本文章使用的 Unity3D版本: 2021.3.6 , Pico SDK 230 ,Pico OS v.5.7.1 硬件Pico 4 Pico SDK可以去Pico官网下载SDK 导入SDK 第一步&#xff1a;创建Unity3D项目 第二步&#xff1a;导入 PICO Unity Integration SDK 选择 Windows > Package Manager。 在 Packag…

(笔记二)利用opencv调用鼠标事件在图像上绘制图形

目录 &#xff08;1&#xff09;查看cv2所支持的鼠标事件&#xff08;2&#xff09;通过鼠标事件在图像上做标记&#xff08;3&#xff09;高级操作&#xff1a;通过移动鼠标在图像绘制图形、曲线 该功能主要创建一个鼠标事件发生时执行的回调函数。鼠标事件可以是任何与鼠标有…

快速安装Qt开发环境,克服在线安装慢等问题

自从Qt6之后&#xff0c;QtCreater的安装都需要注册账号&#xff0c;并且使用账号在线安装&#xff0c;继续使用官网的资源站下载的话&#xff0c;会特别的慢&#xff0c;以下是提高在线安装速度的做法。 官网下载很慢&#xff0c;快速安装的方式如下 1、winR,输入CMD&#xff…

系统集成项目管理工程师【中级】考证学习资料知识点整理分享——第二章《信息系统集成及服务管理》,持续更新中........

系统集成项目管理工程师(中级)考证学习资料整理分享,持续更新中........ 目 录 第二章《信息系统集成及服务管理》 一、信息系统集成及服务管理 (一)信息系统集成及服务管理的内容 (二)信息系统集成及服务管理的推进 1.实施信息系统集成及服务资质管理制度 1)…

ElasticSearch常用方法

ElasticSearch:是一个储存、检索、数据分析引擎。 在互联网项目中我们经常会按一定的条件去索引我们指定的数据&#xff0c;但是在大量的数据中我们如果直接查询数据库效率是非常低的&#xff0c;ElasticSearch就可以很好的帮我们完成检索。 es封装了api提供给我我们直接操作…

C++构造函数初始化列表

构造函数的一项重要功能是对成员变量进行初始化&#xff0c;为了达到这个目的&#xff0c;可以在构造函数的函数体中对成员变量一一赋值&#xff0c;还可以采用初始化列表。 C构造函数的初始化列表使得代码更加简洁&#xff0c;请看下面的例子&#xff1a; #include <iostre…