LVS +Keepalived 高可用群集

目录

  • 前言
    • 一. Keepalived 双机热备基础知识
      • 1. Keepalived 概述及安装
        • (1)Keepalived 的热备方式
        • (2)Keepalived 的安装与服务控制
      • 2. 使用Keepalived 实现双机热备
        • (1)主服务器的配置
        • (2)备用服务器的配置
        • (3)测试双机热备功能
          • ①:连通性测试
          • ②:Web访问测试
          • ③:查看日志记录
    • 二. 使用 Keepalived 实现双机热备
      • 1. 基础环境配置
      • 2. 配置主调度器
      • 3. 配置从调度器
      • 4. 配置 Web 节点服务器
      • 5. 测试 LVS+keepalived 高可用群集

前言

在这个高度信息化的 IT 时代,企业的生产系统、业务运营、销售和支持,以及日常管理等环节越来越依赖于计算机信息和服务,对高可用(HA)技术的应用需求不断提高,以便提供持续的、不间断的计算机系统或网络服务。本章将学习如何使用 Keepalived 实现双机热备,包括针对 IP 地址的故障切换,以及在LVS 高可用群集中的热备应用

一. Keepalived 双机热备基础知识

Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检査(Health Checking)功能–判断 LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到 backup节点保证业务正常,当 master 故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点

1. Keepalived 概述及安装

Keepalived 的官方网站位于 http://www.keepalived.org/,本章将以 YUM方式讲解 Keepalived 的安装、配置和使用过程。在非 LVS 群集环境中使用时,Keepalived 也可以作为热备软件使用

(1)Keepalived 的热备方式

Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现Linux 服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案–由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。若当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务

热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。使用Keepalived 时,漂移地址的实现不需要手动建立虚接口配置文件(如 ens33 :0),而是由 Keepalived 根据配置文件自动管理

在这里插入图片描述

操作系统配置IP服务
OpenEuler242C4G192.168.10.101Keepalived,apache
OpenEuler242C4G192.168.10.102Keepalived,apache
(2)Keepalived 的安装与服务控制

在0penEuler24系统中,使用DNF方式安装keepalived.x86642.2.8-1.oe2403sp1,会自动安装 Keepalived 所需的软件包。除此之外,在 LVS群集环境中应用时,也需要用到ipvsadm 管理工具

[root@localhost ~]# dnf install -y keepalived ipvsadm 

2. 使用Keepalived 实现双机热备

基于 VRRP的热备方式,Keepalived 可以用作服务器的故障切换,每个热备组可以有 多台服务器–当然,最常用的就是双机热备了。在这种双机热备方案中,故障切换主要针对虚拟IP地址的漂移来实现,因此能够适用于各种应用服务器(不管是 Web、FTP、Mail,还是 SSH、DNS·)
本小节将通过一个简单的案例来说明 Keepalived 双机热备的配置方法。其中,主、备服务器的IP地址分别为192.168.10.101和 192.168.10.102,基于漂移地址 192.168.10.100 提供 Web 服务主、备服务器中都需要安装 Keepalived,使用 YUM 方式安装 httpd 提供Web 服务。下面仅讲解与 Keepalived 相关的配置及测试过程

在这里插入图片描述

(1)主服务器的配置

Keepalived 服务的配置目录位于/etc/keepalived/。其中keepalived.conf 是主配置文件。另外包括一个子目录 samples/,提供了许多配置样例作为参考

在 Keepalived 的配置文件中,使用“global defs {…}”区段指定全局参数,使用“vrrp instance 实例名称{…}”区段指定 VRRP 热备参数,注释文字以“!”符号开头

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.confsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_R1vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100}
}

确认上述配置无误,然后启动 Keepalived 服务。实际状态为 MASTER 的主服务器将为 ens33 接口自动添加 VIP 地址,通过 ip 命令可以查看。注意:ifconfig 命令看不到

[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:39:a6:11 brd ff:ff:ff:ff:ff:ffinet 192.168.10.101/24 brd 192.168.10.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet 192.168.10.100/32 scope global ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe39:a611/64 scope link noprefixroute valid_lft forever preferred_lft forever
(2)备用服务器的配置

在同一个 Keepalived 热备组内,所有服务器的 Keepalived 配置文件基本相同,包括虚拟路由器的 ID 号、认证信息、漂移地址、心跳频率等。不同之处主要在于路由器名称、热备状态、优先级。

  • 路由器名称(router id):建议为每个参与热备的服务器指定不同的名称
  • 热备状态(state):至少应有一台主服务器,将状态设为MASTER;可以有多台备用的服务器,将状态设为BACKUP
  • 优先级(priority):数值越大则取得 VIP控制权的优先级越高,因此主服务器的优先级应设为最高;其他备用服务器的优先级可依次递减,但不要相同,以免在争夺 VIP 控制权时发生冲突

配置备用服务器(可以有多台)时,可以参考主服务器的keepalived.conf配置文件内容,只需修改路由器名称、热备状态、优先级

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived/[root@bogon keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.confnotification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_R2vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100

确认配置无误,一样需要启动Keepalived 服务。此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备用状态。因此,在备用服务器中将不会为 ens33 接口添加 VIP 地址

[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:0b:df:52 brd ff:ff:ff:ff:ff:ffinet 192.168.10.102/24 brd 192.168.10.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe0b:df52/64 scope link noprefixroute valid_lft forever preferred_lft forever
(3)测试双机热备功能

Keepalived 的日志消息保存在/var/log/messages 文件中,在测试主、备故障自动切换功能时,可以跟踪此日志文件来观察热备状态的变化。以针对连通性和web 服务的测试为例

①:连通性测试

在客户机中执行“ping -t 192.168.10.100”命令,能够正常、持续 ping 通,根据以下操作继续观察测试结果
① 停止启用主服务器的 Keepalived 服务,发现 ping 测试只中断了 1或2个包即恢复正常,说明已有其他服务器接替 VIP地址,并及时响应客户机请求
② 重新启用主服务器的 Keepalived 服务,发现 ping 测试再次中断1或2个包即恢复正常,说明主服务器已恢复正常,并夺回VIP地址的控制权

重启主服务器的keepalived,测试连通性

在这里插入图片描述

在这里插入图片描述

②:Web访问测试

在 keepalived 运行的主机上启动 nginx 服务并写入不通的测试页面内容

在客户机中访问 http://192.168.10.100/,将看到由主服务器 192.168.10.101提供的网页文档。① 停止启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到由备用服务器 192.168.10.102 提供的网页文档,说明 VIP 地址已切换至备用服务器
② 重新启用主服务器的 Keepalived 服务,再次访问上述 Web 服务,将看到重新由主服
务器 192.168.10.101 提供的网页文档,说明主服务器已重新夺取 VIP 地址

(1)安装两台测试网站

在这里插入图片描述

在这里插入图片描述

(2)为两台网站创建测试文件

在这里插入图片描述

在这里插入图片描述

(3)关闭主keepalived,测试环游地址测试文件为web2

在这里插入图片描述

在这里插入图片描述

③:查看日志记录

在执行主、备服务器故障切换的过程中,分别观察各自的/var/log/messages日志文件,可以看到 MASTER、SLAVE 状态的迁移记录
① 主服务器中,Keepalived 服务状态先变为“stop”,移除 VIP 地址,恢复后重新变为 MASTER

② 备用服务器中,状态先切换为MASTER,待主服务器恢复后再交回控制权

通过上述测试过程,可以发现双机热备已经正常。客户机只要通过VIP地址就可以访问服务器所提供的 Web 等应用。其中,任何一台服务器失效,另一台服务器将会立即接替服务,从而实现高可用性。实际应用时,注意主、备服务器所提供的 Web 服务内容要保持一致

在这里插入图片描述

二. 使用 Keepalived 实现双机热备

Keepalived 的设计目标是构建高可用的 LVS 负载均衡群集,可以调用ipvsadm 工具来创建虚拟服务器、管理服务器池,而不仅仅用作双机热备。使用Keepalived 构建 LVS 群集更加简便易用,主要优势体现在:对 LVS 负载调度器实现热备切换,提高可用性;对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入

在基于 LVS+Keepalived 实现的 LVS 群集结构中,至少包括两台热备的负载调度器,三台以上的节点服务器。本节将以 DR模式的 LVS 群集为基础,增加一台从负载调度器,使用 Keepalived 来实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的 LVS 网站群集平台

在这里插入图片描述

使用 Keepalived 构建 LVS 群集时,也需要用到 ipvsadm 管理工具。但大部分工作会由Keepalived 自动完成,不需要手动执行 ipvsadm(除了查看和监控群集以外)。下面主要讲解 Keepalived 的服务器池设置,关于 NFS 共享服务的配置、Keepalived 的热备配置等在此不再详细阐述

资源列表

操作系统配置主机名IP服务
OpenEuler242C4Glb01192.168.10.101Keepalived,ipvsadm
OpenEuler242C4Glb02192.168.10.102Keepalived,ipvsadm
OpenEuler242C4Gweb01192.168.10.103apache
OpenEuler242C4Gweb02192.168.10.104apache
OpenEuler242C4Gnfs-server192.168.10.105rpcbind,nfs-utils

1. 基础环境配置

四台服务器关闭防火墙,Selinux安全机制,并设为开机自关闭

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

2. 配置主调度器

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf.sample
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf

①:全局配置、热备配置

在这里插入图片描述

②:Web 服务器池配置

在这里插入图片描述
在这里插入图片描述

③:重启服务,测试环游地址

在这里插入图片描述

3. 配置从调度器

[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf.sample
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf

①:全局配置、热备配置

在这里插入图片描述

②:Web 服务器池配置

在这里插入图片描述

③:重启服务,测试环游地址

在这里插入图片描述

4. 配置 Web 节点服务器

①:安装web服务器

在这里插入图片描述

②:为网站制作测试网页

在这里插入图片描述

在这里插入图片描述

③:为网站设置VIP地址

在这里插入图片描述

④:添加ARP参数

在这里插入图片描述
在这里插入图片描述

⑤:检测环回地址

在这里插入图片描述

在这里插入图片描述

5. 测试 LVS+keepalived 高可用群集

打开客户端测试

在这里插入图片描述

挂起keepalived01和103网站,测试高可用

在这里插入图片描述

在这里插入图片描述

;,;

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

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

相关文章

【Go语言基础】对齐边界与内存填充

文章目录 一、内存对齐的核心概念二、Go语言的内存对齐规则三、内存对齐示例示例1&#xff1a;字段顺序影响对齐示例2&#xff1a;指针与切片的对齐 四、如何查看内存对齐&#xff1f;五、内存对齐的优化建议六、总结&#xff1a;内存对齐的核心要点 在计算机科学中&#xff0c…

网络核心 - CNI、Service 与 Ingress/Gateway API 解析

网络核心 - CNI、Service 与 Ingress/Gateway API 解析 Kubernetes 的强大之处在于它极大地简化了容器化应用的部署和管理,但其网络模型的灵活性和复杂性也常常让初学者感到困惑。作为 SRE,我们需要拨开迷雾,理解流量在 K8s 集群内部以及进出集群时,到底是如何流转的。 Po…

20.jsBridge多页面交互与原生事件监听冲突问题

一、问题描述 • 安卓原生页面调起 H5A 页面&#xff1b; • H5A 页面跳转到 H5B 页面&#xff1b; • 在 H5B 页面点击“附件上传”&#xff0c;通过 JS Bridge 调用安卓的附件上传功能&#xff0c;弹出附件弹窗&#xff1b; • 然后 返回 到 H5A 页面&#xff0c;附件上传弹窗…

产品经理的自我救赎

思考自己的商业模式 很多人可能会奇怪&#xff0c;作为一个产品经理&#xff0c;为什么要思考商业模式呢&#xff1f;这个问题有点绕&#xff0c;但看完这一小节肯定大家就明白了。 首先&#xff0c;我们做产品经理&#xff0c;一般来说是为了挣钱&#xff0c;从挣一个月的钱…

DeepSeek提示词指南:从基础到高阶的全面解析

引言 在人工智能技术迅猛发展的今天&#xff0c;DeepSeek作为新一代智能大模型&#xff0c;正在为各行各业带来革命性的变革。而要充分发挥DeepSeek的潜力&#xff0c;掌握其提示词的使用技巧是关键。本指南旨在为用户提供一份全面、系统、实用的DeepSeek提示词指南&#xff0…

Linux tail 命令

Linux 的 tail 命令是一个非常实用的工具&#xff0c;用于查看文件的末尾内容&#xff0c;默认显示文件的最后 10 行。它在系统管理和日志监控中尤为常用&#xff0c;以下是其核心功能和用法总结&#xff1a; 一、基本语法 tail [选项] [文件]二、常用选项 选项功能示例-n 或…

【案例拆解】米客方德 SD NAND 在车联网中(有方模块)的应用:破解传统 TF 卡振动脱落与寿命短板

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

中泰制造企业组网新方案:中-泰企业国际组网专线破解泰国工厂访问国内 OA/ERP 卡顿难题

在东南亚开厂的中国制造企业&#xff0c;估计都遇到过这个糟心事&#xff1a;泰国工厂的员工想访问国内总部的 OA、ERP 系统&#xff0c;结果页面加载半天没反应&#xff0c;文件传输慢得像蜗牛&#xff0c;视频会议还时不时卡成 PPT。以前大家常用的 MPLS 专线&#xff0c;虽然…

【二进制安全作业】250617课上作业4 - start

文章目录 前言一、使用环境二、pwndbg介绍1. 命令介绍2. 界面介绍 三、反汇编分析四、Shellcode五、解题思路六、编写EXP结语 前言 作业3遇到了很严重的问题&#xff0c;一直没搞定&#xff0c;先略过了&#xff0c;要讲的东西也一起放到这里讲吧。 这道题是 pwnable 的第一道…

【vivado中实现时序仿真】

这里写自定义目录标题 如何在vivado中实现时序仿真准备工作设计输入与管理综合与实现仿真与调试IP核与重用硬件编程与配置设计分析与优化跨平台支持与兼容性编写测试激励代码运行时序仿真查看和分析结果高级技巧 如何在vivado中实现时序仿真 在Vivado中进行时序仿真&#xff0…

运维常用命令

目录 一、系统监控与性能分析 vmstat命令 一、命令语法及核心参数 二、输出字段解析&#xff08;关键列&#xff09; 三、工作场景案例 1. 排查 CPU 瓶颈 2. 内存不足导致 Swap 频繁 3. 磁盘 I/O 性能问题 4. 系统卡顿实时监控 5. 高级用法&#xff1a;统计内存事件 …

代码随想录day10栈和队列1

文章目录 数组模拟栈栈的应用 单调栈栈(stack) 数组模拟队列队列stl(queue)双端队列stl(deque)滑动窗口单调队列 232.用栈实现队列225. 用队列实现栈20. 有效的括号1047. 删除字符串中的所有相邻重复项 数组模拟栈 题目链接 #include <iostream> #include <cstdio&g…

Unity 把广告收入(revenue)上报到AppsFlyer

文章目录 第一步第二步 官方文档 第一步 升级版本 如果你的AppsFlyer版本大于文档中要求的6.15以上&#xff0c;即可跳过第一步 在unity这里可以看到AppsFlyer版本 下载最新版本地址 在这个位置&#xff0c;单独下载这个unitypackage包就行 如果是用srict-mode(严格模式)…

2023年蓝桥杯青少第十四届蓝桥杯Scratch省赛中级组真题——小狗避障

小伙伴们&#xff0c;7月的全国信息素养大赛复赛准备得怎么样了&#xff1f;推荐到家做完信息素养大赛的历年真题后&#xff0c;可以有选择性的做做蓝桥杯青少的编程题&#xff0c;质量还是蛮好的&#xff5e; 下面这道是&#xff1a; 2023年蓝桥杯青少第十四届蓝桥杯Scratch…

为复杂iOS应用实施多重安全保护:从Ipa混淆到加密的完整安全方案

在现代移动应用的开发过程中&#xff0c;尤其是那些涉及用户隐私、支付或企业敏感数据的应用&#xff0c;安全问题早已成为不可忽视的核心问题。iOS系统由于其相对封闭的生态和严格的审核机制&#xff0c;通常被认为具有较高的安全性。然而&#xff0c;随着破解技术的发展&…

docker 如何优化容器启动时间

优化 Docker 容器启动时间&#xff0c;尤其在大规模部署、CI/CD 或微服务架构中非常关键。启动慢会影响响应时间、弹性扩缩容和用户体验。以下是从镜像构建、容器运行、依赖管理等多个方面整理的 容器启动加速方案&#xff1a; 一、优化镜像构建&#xff08;启动慢 ≈ 镜像臃肿…

基于 Python Django 框架的宠物医院管理系统设计与实现

摘要 本研究针对传统宠物医院管理模式存在的效率低下、信息不共享、服务流程繁琐等问题&#xff0c;设计并实现了一个基于 Python Django 框架的宠物医院管理系统。系统采用 B/S 架构&#xff0c;整合了客户管理、宠物管理、医生管理、诊疗管理、药品管理、库存管理、财务管理…

6612345(Web打印浏览器) 开发历程

6612345(Web打印浏览器) 开发历程 2022年7月,由于chrome新版本的限制, HttpPrinter(Web打印插件) 从http协议转为websocket协议. 为了提前预防chrome后续版本(至于哪个版本,我们也不知道)无法和本地插件通信,我们重新定制了一款chrome浏览器.绕过通讯限制. 首个版本,基于微软…

信安实验室CTF writeup

文章目录 1、白给签到2、Welcome3、Get4、Post5、滴滴滴6、每逢佳节7、Bacon8、古典变奏9、affine10、affine-revenge11、Random_encrypt12、easy_re13、re114、ez_xor15、maze16、easy_php17、easy_bypass18、Autumn19、easy_Cookie20、[白给] 连上就给flag21、小兔子22、我在…

【入门级-基础知识与编程环境:NOI以及相关活动的历史】

NOI 及相关活动的历史如下&#xff1a; 1984 年&#xff1a;邓小平同志提出 “计算机的普及要从娃娃抓起”。为响应这一号召&#xff0c;中国计算机学会&#xff08;CCF&#xff09;于当年自主创建了面向中学生的 “全国青少年程序设计竞赛”&#xff0c;当年参加竞赛的有 8000…