基于Linux操作系统的keepalived双机热备和keepalived+lvs(DR)基本配置操作

news2024/11/17 12:58:56

目录

keepalived双机热备

一、概述

(一)具体工作原理如下:

(二)实验拓补

二、安装NFS、配置

1、第一台机器配置:NFS :192.168.11.101

2、更改配置文件

3、安装NFS进行目录共享 

4、编辑配置文件进行文件共享  

5、创建需要共享的目录 

6、在创建的目录下建立一个网站访问文档 

7、查看是否存在共享目录

8、在第二台( master )第三台( slave )分别进行挂载 

三、功能模块

1、VRRP模块:

2.、配置管理模块:

3.、健康检查模块:

4.、故障转移模块:

5.、日志记录模块:

四、配置双机热备

1、master:192.168.11.102

2、slave:192.168.11.103配置

五、验证

六、双机热备的脑裂现象

七、当VIP无法通信时

keepalived+lvs(DR)

一、作用

二、 调度器配置

1、安装keepalived和ipvsadm(主、备)

2、创建ipvsadm启动需要的文件(主、备) 

3、启动服务

4、加载ip_vs模块 

5、配置keepalived

1)主调度器(master)

2)备调度器(backup)

6、重启服务(主、备)

7、查看lvs节点状态

三、web节点配置

1、调整ARP参数(Web1服务、Web2服务)

2、使用命令生效

3、配置虚拟IP地址

4、添加回环路由

5、安装nginx

6、启动服务 

7、更改网页访问内容

8、进行网站访问检测

总结


keepalived双机热备

一、概述

       Keepalived是一个用于高可用性的软件,它通过实现VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)来提供双机热备功能。

       双机热备是一种架构设计,其中有两台服务器(主机和备机)同时运行,并共享相同的虚拟IP地址(VIP)。当主机出现故障或不可用时,备机会接管主机的工作并使用相同的VIP地址,以确保服务的持续可用性。

       Keepalived利用VRRP协议来实现双机热备。

(一)具体工作原理如下:

1、主机和备机通过VRRP协议进行通信,协商并确定主机和备机的优先级,主机通常具有较高的优先级。

2、在正常情况下,主机会周期性地发送VRRP心跳消息,以证明自己的存活状态和优先级。

3、如果备机在一定时间内没有收到主机的心跳消息,它会认为主机不可用,并开始进行故障转移。

4、当备机接管主机的工作时,它会使用相同的VIP地址,并开始处理来自客户端的请求。

5、一旦主机恢复正常,它会发送一条特殊的VRRP消息,请求备机放弃VIP地址,并将其切换回主机。

       说简单点就是在一个 LVS 服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟 IP,主服务器会发送 VRRP 通告信息给备份服务器,当备份服务器收不到 VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。

       keepalived双机热备解决了单点故障问题,在主宕机以后,备自动接替主的工作继续运行,当原主重启后,主自动变换为原有主。

(二)实验拓补

二、安装NFS、配置

1、第一台机器配置:NFS :192.168.11.101

yum install -y keepalived

2、更改配置文件

在更改配置文件前,建议先做一个备份,避免后续出现故障问题

cd /etc/keepalived/
ls
cp keepalived.conf keepalived.conf.bak
ls

vim /etc/keepalived/keepalived.conf

3、安装NFS进行目录共享 

yum install -y nfs-utils

4、编辑配置文件进行文件共享  

vim /etc/exports

5、创建需要共享的目录 

mkdir /opt/wjy

6、在创建的目录下建立一个网站访问文档 

cd /opt/wjy/
echo test > index.html

 

7、查看是否存在共享目录

showmount -e

 showmount -e 表示显示指定主机所挂载的共享文件系统列表。

exportfs -arv

 exportfs -arv 表示将所有已经在/etc/exports中定义的文件系统重新导出。(直接进行挂载,无需重启服务)

其中,-a表示重新导出所有已经定义的文件系统,-r表示清除已经导出的文件系统,-v表示显示详细的导出信息。

 

8、在第二台( master )第三台( slave )分别进行挂载 

注:此步是在安装完web网站以后进行挂载的,例如nginx挂载到nginx的访问目录,apache挂载到apache的访问目录下,不然访问找不到内容 

三、功能模块

Keepalived双机热备的功能模块包括以下几个:

1、VRRP模块:

       VRRP(Virtual Router Redundancy Protocol)模块实现了VRRP协议,用于实现多个路由器之间的冗余和故障恢复。它允许多个路由器共享一个虚拟IP地址,通过选举一个主节点来处理网络流量,一旦主节点失效,备份节点可以接管虚拟IP地址。

2.、配置管理模块:

       这个模块负责管理Keepalived的配置文件。配置文件中定义了服务器的角色(主节点或备份节点)、网络接口、虚拟路由器ID、优先级、虚拟IP地址等参数。通过配置管理模块,可以灵活地配置和管理Keepalived的行为。

3.、健康检查模块:

       健康检查模块定期检查真实服务器的可用性。它发送请求到真实服务器,并根据响应情况判断服务器是否正常运行。如果服务器无法响应或状态异常,健康检查模块将发出警告,并触发故障转移操作。

4.、故障转移模块:

       故障转移模块是Keepalived的核心功能之一。当主节点发生故障或不可用时,故障转移模块将虚拟IP地址切换到备份节点,确保服务的连续性。它负责监控主节点的状态,并在需要时触发切换操作。

5.、日志记录模块:

       日志记录模块记录Keepalived的运行日志,包括故障转移事件、状态变化等。通过日志记录,可以方便地查看和分析Keepalived的运行情况,帮助故障排查和监控。

       这些功能模块共同协作,实现了Keepalived双机热备的高可用性和故障恢复机制。通过VRRP协议、配置管理、健康检查和故障转移,Keepalived确保了服务的连续性,并提供了一种简单而可靠的解决方案来提高系统的稳定性。

    core        主进程启动

    vrrp        vrrp协议:热备份路由协议

    check        健康状态检测

四、配置双机热备

1、master:192.168.11.102

vim /etc/keepalived/keepalived.conf

配置文件内容 :

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.11.200
        192.168.11.201
        192.168.11.202
    }
}

 启动服务 

systemctl start keepalived

查看IP 

 真实IP和虚IP

2、slave:192.168.11.103配置

vim /etc/keepalived/keepalived.conf

 配置文件内容:

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.11.200
        192.168.11.201
        192.168.11.202
    }
}

注: 标记这两个地方一点要进行更改,这样才可以做到主停止工作,备启动运行,而且备的优先级一定要低于主的优先级。

五、验证

安装web服务,什么都可以Nginx、Apache等等

 停掉主的服务

再次进行查看

 

 此时启动原主关闭备进行查看 

六、双机热备的脑裂现象

    Keepalived配置里同一 VRRP实例,如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。

    vrrp实例名字不一致、优先级一致

    防火墙打开,导致心跳无法正常通信

    网卡故障:网卡进行多路复用

七、当VIP无法通信时

注释掉配置文件中:vrrp_strict即可


keepalived+lvs(DR)

一、作用

    使用keepalived解决lvs的单点故障

    高可用集群

二、 调度器配置

拓补图

实验要求:使用四台机器进行配置

主调度器(master):192.168.11.111

备调度器(backup):192.168.11.112

Web服务1(nginx1):192.168.11.113

Web服务2(nginx2):192.168.11.114

虚IP:192.168.11.200

更改主机名

hostnamectl set-hostname master
bash

 

hostnamectl set-hostname backup
bash

 

hostnamectl set-hostname nginx1
bash

 

hostnamectl set-hostname nginx2
bash

 

1、安装keepalived和ipvsadm(主、备)

yum install -y keepalived ipvsadm

2、创建ipvsadm启动需要的文件(主、备) 

touch /etc/sysconfig/ipvsadm

3、启动服务

systemctl start keepalived
systemctl start ipvsadm

4、加载ip_vs模块 

modprobe ip_vs
lsmod | grep ip_vs

5、配置keepalived

1)主调度器(master)

注:先备份配置文件,养成良好习惯。

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak

        编辑配置文件: 

vim /etc/keepalived/keepalived.conf 
  1 ! Configuration File for keepalived     #(!)是本文的注释,同时使用"#"注释一样可以
  2 
  3 global_defs {
  4 #   notification_email {              #注释掉这些目前无用的的配置
  5 #     acassen@firewall.loc
  6 #     failover@firewall.loc
  7 #     sysadmin@firewall.loc
  8 #   }
  9 #   notification_email_from Alexandre.Cassen@firewall.loc
 10 #   smtp_server 192.168.200.1
 11 #   smtp_connect_timeout 30
 12    router_id LVS_DEVEL1
 13 #   vrrp_skip_check_adv_addr
 14 #   vrrp_strict             #取消严格遵守vrrp协议功能
 15 #   vrrp_garp_interval 0
 16 #   vrrp_gna_interval 0
 17 }
 18 
 19 vrrp_instance VI_1 {
 20     state MASTER
 21     interface ens33
 22     virtual_router_id 51
 23     priority 100
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass 1111
 28     }
 29     virtual_ipaddress {
 30         192.168.11.200
 31 #        192.168.200.17
 32 #        192.168.200.18
 33     }
 34 }
 35 
 36 virtual_server 192.168.11.200 80 {
 37     delay_loop 6
 38     lb_algo rr
 39     lb_kind DR
 40     persistence_timeout 50
 41     protocol TCP
 42 
 43     real_server 192.168.11.113 80 {
 44         weight 1
 45         HTTP_GET {
 46             url {
 47               path /
 48 #              digest ff20ad2481f97b1754ef3e12ecd3a9cc
 49             }
 50             url {
 51               path /
 52 #              digest 9b3a0c85a887a256d6939da88aabd8cd
 53             }
 54             connect_timeout 3
 55             nb_get_retry 3
 56             delay_before_retry 3
 57         }
 58     }
 59     real_server 192.168.11.114 80 {
 60         weight 1
 61         HTTP_GET {
 62             url {
 63               path /
 64 #              digest ff20ad2481f97b1754ef3e12ecd3a9cc
 65             }
 66             url {
 67               path /
 68 #              digest 9b3a0c85a887a256d6939da88aabd8cd
 69             }
 70             connect_timeout 3
 71             nb_get_retry 3
 72             delay_before_retry 3
 73         }
 74     }
 75 }
 76 
 77 #=====================================================================================#
 78 #以下97行配置文件暂时无用,这里全部删除掉,因为已经做好过备份。#

 

2)备调度器(backup)

        备份配置文件

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak

        因为备调度器的配置与主调度器配置大多一样,这里我们使用 scp 将配置好的主配置文件传至备调度器中,进行细微修改

scp keepalived.conf 192.168.11.112:/etc/keepalived/

vim keepalived.conf

        只需更改12行、20行、23行内容即可

6、重启服务(主、备)

systemctl restart keepalived
systemctl restart ipvsadm

7、查看lvs节点状态

ipvsadm -ln

三、web节点配置

1、调整ARP参数(Web1服务、Web2服务)

vim /etc/sysctl.conf

添加内容: 

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2 
net.ipv4.conf.default.arp_ignore=1 
net.ipv4.conf.default.arp_announce = 2 
net.ipv4.conf.lo.arp_ignore = 1 
net.ipv4.conf.lo.arp_announce=2

2、使用命令生效

sysctl -p

3、配置虚拟IP地址

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0

编辑内容:

DEVICE=lo:0
IPADDR=192.168.11.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0

 

4、添加回环路由

route add -host 192.168.11.200/32 dev lo:0

5、安装nginx

yum install -y nginx

6、启动服务 

systemctl start nginx

7、更改网页访问内容

Web1服务

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

Web2服务 

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

8、进行网站访问检测

 关掉主调度器服务

去备调度器上查看ip 

 然后网站进行访问检测

 

这样可以看到实现了负载均衡,在主宕机以后,从接替主继续实行网页访问。

如果在配置中,配置完成时无法负载均衡访问网页可以:

ipvsadm -C

清除配置

ipvsadm -A -t 192.168.11.200:80 -s rr
ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.113:80 -g
ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.114:80 -g

重新进行指定

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart keepalived

将配置保存到指定文件中,重启服务即可

总结

       通过今天搭配的这两个服务,可以进一步健康检查、持久化、连接超时等参数来优化负载均衡和故障恢复。无论是Keepalived双机热备还是Keepalived+LVS(DR),都需要确保网络配置正确、Keepalived服务正常运行以及实时监控服务状态。这样可以实现高可用性和负载均衡,提高系统的稳定性和可靠性。可能有理解不到之处,忘大家见谅。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

花5分钟判断,你的Jmeter技能是大佬还是小白!

jmeter 这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用 jmeter 来做接口自动化测试。 你有没有想过呢? 下面我就给大家讲…

C# textBox1.Text=““与textBox1.Clear()的区别

一、区别 textbox.Text "" 和 textbox.Clear() 都可以用于清空文本框的内容,但它们之间有一些细微的区别。 textbox.Text "": 这种方式会将文本框的 Text 属性直接设置为空字符串。这样会立即清除文本框的内容,并将文本框显示为空…

git 基础入门

Git基础入门 Git是一个分布式 版本管理系统,用于跟踪文件的变化和协同开发。 版本管理:理解成档案馆,记录开发阶段各个版本 分布式&集中式 分布式每个人都有一个档案馆,集中式只有一个档案馆。分布式每人可以管理自己的档案…

ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则

ThinkPHP 验证码扩展库的使用,以及多应用模式下,如何自定义验证码校验规则 一、安装二、页面使用三、验证码相关配置属性1. 自定义验证码配置2. 自定义验证码(一)普通验证码3. 自定义验证码(二)算数验证码4…

搭建web网站

1.基于域名www.openlab.com可以访问网站内容为welcome to openlab!!! (1).安装所需软件HTTPD、mod_ssl [rootserver ~]# yum install httpd mod_ssl -y 添加域名映射:vim /etc/hosts (2)创建网站目录及网页,修改主配置文件新建openlab目录网站 配置文…

第二届828 B2B企业节启动,华为云携手上万伙伴共筑企业应用一站购平台

当前,数字技术与实体经济深度融合,为千行百业注入新动力、拓展新空间。数据显示,2022年中国数字经济规模超过50万亿,占GDP比重超过40%,继续保持在10%的高位增长速度,成为稳定经济增长的关键动力。 为加速企…

DevOps系列文章之 Python基础

列表 Python中的列表类似于C语言中的数组的概念,列表由内部的元素组成,元素可以是任何对象 Python中的列表是可变的 简单的理解就是:被初始化的列表,可以通过列表的API接口对列表的元素进行增删改查 1、定义列表 1.可以将列表当成…

网络模型分析

# 用户空间和内核空间 # 阻塞IO # 非阻塞IO # IO多路复用 IO多路复用-select 内核中遍历找到就绪的fd并保留,不匹配的就置为0, 以上的操作重复,知道所有的FD都完成 IO多路复用-poll IO多路复用-epoll IO多路复用-事件通知机制 很多进程都要用…

WebGL非矩阵变换

目录 平移 示例代码: 齐次坐标矢量的最后一个分量w 旋转 p的坐标,可得等式 R1: 使用r、α、β来表示点p的坐标,可得等式 R2: 利用三角函数两角和公式,可得等式 R3: 最后,将…

8.27周报

文章目录 前言论文阅读摘要介绍模型算法 总结 前言 本周学习了GAN论文《Generative Adversarial Nets》,了解GAN主要由两部分组成:生成器和判别器,知道生成器G和判别器D的作用及原理,相比于其他的生成模型,了解GAN的优…

【java】【项目实战】[外卖六]套餐管理业务开发

目录 一、新增套餐 1 需求分析 2 数据模型 3 代码实现 3.1 实体类SetmealDish 3.2 SetmealDto 3.3 SetmealDishMapper 3.4 SetmealDishService 3.5 SetmealDishServiceImpl 3.6 SetmealController 3.7 DishController 3.8 SetmealService 3.9 SetmealServiceImp…

4.21 用了 TCP 协议,数据一定不会丢吗?

目录 数据包的发送流程: 建立连接时丢包 流量控制丢包 网卡丢包 RingBuffer过小导致丢包 网卡性能不足 接收缓冲区丢包 两端之间的网络丢包 ping命令查看丢包: mtr命令: 发生丢包了怎么办 用了TCP协议就一定不会丢包吗​编辑 这类丢包问题怎…

Mysql--技术文档--基本概念--《世界上最流行的关系型数据库之一》

官方网址 MySQL 阿丹: 作为关系型数据库管理的老大哥,一个合格的程序员多多少少一定要了解mysql库。 官方解释 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管…

浙大MBA冲刺上岸经验分享:紧急备战的大龄考生

前些天我在朋友圈分享了一组我们前段时间在浙大开学前同学聚会的照片。结果,许多朋友都开始询问与浙大有关的情况,并且他们最关心的问题集中在以下几点:我去年备考花费了多少时间?要不要报班学习?现在开始备考还有机会…

postman-使用Postman的模拟服务来模拟(mock)后端数据,完成前端模拟API调用

最近项目上比较忙,任务多时间紧,导致后端开发任务繁多,无法及时开发完毕,但是前端同学已经把对应功能开发完成,需要进行前后端联调来验证API及一些交互问题;这不能因为后端的进度来影响前端的工作完成情况&…

c++ 判断基类指针指向的真实对象类型

在 c 面向对象使用中,我们常常会定义一个基类类型的指针,在运行过程中,这个指针可能指向一个基类类型的对象,也可能指向的是其子类类型的对象,那现在问题来了,我们如何去判断这个指针到底执行了一个什么类型…

FreeMarker使用

说明:FreeMake可以通过设置一个模板,使用一些语法规则,可根据返回的VO数据填充到这个模板中,生成一个静态。这个技术,在项目中可以实现如预览页面的功能,将查询完成的VO数据按照这个模板填充,生…

Redis 10 大数据类型

1. which 10 1. redis字符串 2. redis 列表 3. redis哈希表 4. redis集合 5. redis有序集合 6. redis地理空间 7. redis基数统计 8. redis位图 9. redis位域 10. redis流 2. 获取redis常见操作指令 官网英文:https://redis.io/commands 官网中文:https:/…

python函数学习

def add(num1,num2):resultnum1num2print(f"函数add输出的结果是{result}")return result resultadd(int(num1), int(num2)) print(f"调用def add(num1,num2):这个函数最终返回的结果是: {result}")# 函数返回值 ②无返回值(也就是说是返回值类…