LVS+Keepalived NGINX+Keepalived 高可用群集实战部署

news2025/1/16 2:41:23

Keepalived及其工作原理

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

VRRP协议(虚拟路由冗余协议)
  • 是针对路由器的一种备份解决方案
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

工作原理:

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

一个合格的群集应该具备的特点:
1.负载均衡          用于提高群集的性能   LVS  Nginx  HAProxy  SLB  F5
2.健康检查(探针)  针对于调度器和节点服务器    Keepalived   Heartbeat
3.故障转移          通过VIP漂移实现主备切换     VRRP   脚本

健康检查(探针)常用的工作方式:

  1. 发送心跳消息 : vrrp报文    ping/pong
  2. TCP端口检查 :向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查正常,否则认为健康检查异常
  3. HTTP URL检查::向目标主机的URL路径(比如http://IP:PORT/URI路径)发起 HTTP GET 请求方法。如果响应消息的状态码为 2XX 或 3XX,则认为健康检查正常           如果响应消息的状态码为 4XX 或 5XX,则认为健康检查异常

LVS+Keepalived 高可用群集部署

实验:配置

主DR 服务器:192.168.73.100
备DR 服务器:192.168.73.130
Web 服务器1:192.168.73.110
Web 服务器2:192.168.73.120
vip:192.168.73.15
nfs服务器 192.168.73.140

1.配置实验环境: 

systemctl stop firewalld 
systemctl disable firewalld
setenforce 0

2.配置两台web节点服务器

将nfs服务器的/share文件挂载再 /etc/share/nginx/html/zyz101目录中 

vim /etc/fstab

192.168.73.140:/share  /usr/share/nginx/html/zyz101 nfs defaults,_netdev 0 0 

mount -a

配置网卡文件

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.73.15     #指向vip
NETMASK=255.255.255.255

service network restart 或 systemctl restart network 

修改 /etc/sysctl.conf 文件

/etc/sysctl.conf 
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
sysctl -p #加载

设置临时路由

设置临时路由
route add -host 192.168.73.15  
或者
vim /etc/rc.local
/sbin/route add -host 192.168.73.15 dev lo:0
chmod +x /etc/rc.d/rc.local

永久加载:
vim /etc/sysconfig/static-routes
any host 192.168.73.15 dev lo:0

systemctl restart network  #重启网卡

3..配置负载调度器(主、备相同)

yum -y install ipvsadm keepalived   #安装keepalived
modprobe ip_vs     #开启模块
cat /proc/net/ip_vs   或者  lsmod | grep ip_vs   #查看模块

开始配置keeplived
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
    后面四行vrrp开头的全部删掉

         主配置global_defs 全局参数如下

vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER

--21行--修改,指定承载vip地址的物理接口
    interface ens33

--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 51

--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
        修改virtual_ipaddress {				#指定群集vip地址
        192.168.73.15
       }

--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.73.15 80
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)

--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 0			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议

--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.80.110 80 {
        weight 1					#节点的权重

--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔

然后再real_server 添加第二个web节点的地址和端口

再删除后面的多于选项

systemctl restart keepalived
ip a  查看虚拟网卡vip地址  只有主服务器上有vip地址
systemctl restart ipvsadm
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

验证测试;

在客户端访问 http://192.168.73.15/zyz101/test.html 
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived

NGINX配合keepalived实现高可用负载均衡

实验配置

主DR 服务器:192.168.73.40
备DR 服务器:192.168.73.30
Web 服务器1:192.168.73.110
Web 服务器2:192.168.73.120
vip:192.168.73.15
nfs服务器 192.168.73.140

1.配置实验环境:

systemctl stop firewalld 
systemctl disable firewalld
setenforce 0

2.配置两台nginx服务器作为负载均衡的主备服务器

 vim /etc/nginx/nginx.conf 

 在event同层块配置stream 在stream块中配置upstream 

nginx -t 
syatemctl enable --now nginx

 安装keepalived

  yum install -y keepalived.x86_64 
  cd /etc/keepalived/
  ls
  vim nginx_check.sh  #编写脚本 确保nginx服务有没有开启 没有开启就关闭keepalived
  chmod +x nginx_check.sh   #给脚本加权

如下: 

 修改keepalived主配置文件

vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 66    # 虚拟路由编号,主从要一直
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        nginx_check.sh            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.73.15           # 定义虚拟ip(VIP),可多设,每行一个
    }
}


#后面把配置lvs多余的删掉

启动keepalived和nginx 进行测试

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

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

相关文章

WEB基础--TOMCAT服务器

服务器概述 什么是服务器 服务器:就是一个提供为人民服务的机器,这里的服务器主要指计算机服务器,分为两种:服务器软件和硬件服务器; 服务器分类 1、硬件服务器:安装了服务器软件的主机。就相当于高配的…

dijkstra 算法为什么高效?

最短路径算法中,dijkstra(i,j,k 颇有遍历意味) 算法时间效能很好,而 floyd,bellman-ford 算法则优在处理负权重。但这是为什么? 从算法过程看,dijkstra 算法确定了某点最短路径后,它…

单目标应用:基于红嘴蓝鹊优化器RBMO的微电网优化(MATLAB代码)

一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、红嘴蓝鹊优化器求解微电网 2.1算法简介 红嘴蓝鹊优化器(R…

Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】

Sharding-JDBC 使用 Nacos 作为配置中心 【下 代码实战】 1. 实现 ShardingSphereDriverURLProvider 由上一篇博文我们已经知道了 Sharding-JDBC 是基于 Java SPI 机制去加载 并实例化 ShardingSphereDriverURLProvider 的实现类 public interface ShardingSphereDriverURLP…

3个月搞定计算机二级C语言!高效刷题系列进行中

文章目录 前言备考计算机二级C语言为什么考二级C语言?刷题总结后发布系列文章后记免责声明 前言 大家好,我是梁国庆。 计算机二级应该是每一位大学生的必修课,相信很多同学的大学flag中都会有它的身影。 我在大学里也不止一次的想要考计算…

如何下载iSlide软件及详细安装步骤

iSlide插件是一款能够支持PPT和WPS的ppt插件,旨在让每一个人都能够轻松制作出精美的ppt,能够在职场收到更多的关注,而该软件的口号正是「让 PPT 设计简单起来」,该插件是由原来NT插件升级改良过来的,在功能上面进行了全…

代码随想录算法训练营第51天:股票2

代码随想录算法训练营第51天:股票2 ‍ 123.买卖股票的最佳时机III 力扣题目链接(opens new window) 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意&a…

01 Pytorch 基础

1.数据处理 1.取一个数据,以及计算大小 (剩下的工作,取batch,pytorch会自动做好了) 2.模型相关 如何得到结果 3.模型训练/模型验证: 代码剖析 1.配置文件yaml (字典) #参数配置config {"train_path"…

centos7.6使用飞鱼FlyFish的docker镜像

参考教程: 飞鱼的docker镜像使用教程: doc/FlyFish_docker镜像使用指南.md 云智慧/FlyFish - Gitee.com centos的docker安装教程: CentOS下 Docker、Docker Compose 的安装教程_centos安装docker-compose_centos 安装docker-compose-CSDN…

ER实体关系图与数据库模型图绘制

属性分析 1、用户表(user)、用户钱包表(user_wallet)(与user是1对1关系)、用户钱包交易日志表(user_wallet_log)(与user是1对多关系)。 user:用户表通常包含用户的基本信息,例如用户ID(主键)、用户名、密码(通常加密…

C++ 12 之 指针引用

c12指针引用.cpp #include <iostream>using namespace std;struct students12 {int age; };int main() {students12 stu;students12* p &stu; // 结构体指针students12* &pp p; // 结构体指针起别名pp->age 20;// (*pp).age 22;cout << "…

C++并发之锁(std::lock_guard,std::unique_lock)

目录 1 概述2 使用实例3 接口使用3.1 lock_guard3.2 adopt_lock3.3 defer_lock3.4 try_to_lock3.5 try_lock3.6 release3.7 lock3.8 call_one1 概述 锁保护是通过使互斥对象始终处于锁定状态来管理互斥对象的对象。。   在构造时,互斥对象被调用线程锁定,在析构时,互斥被解…

STM32的FreeRtos的学习

首先就是去官网下载一个源文件&#xff1a;FreeRtos官网 下载下来的是一个zip文件&#xff0c;解压缩了。 然后再工程文件夹中创建个文件夹&#xff1a; 在这个文件夹中创建3个文件夹&#xff1a; 然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中&#xff1…

uniapp中u-input点击事件失效

当给u-input设置了disabled/readonly属性后&#xff0c;pc浏览器中点击事件失效&#xff0c;但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件&#xff0c;给input加上css属性&#xff1a;pointer-events&#xff1a;none pointer-events CSS 属性指定在什…

【APP移动端自动化测试】第二节.Appium介绍和常用命令代码实现

文章目录 前言一、Appium介绍和安装二、python代码功能实现 2.1 hello appium 参数详解 2.2 在脚本内启动其他app 2.3 获取app的包名和界面名 2.4 关闭app和驱动对象 2.5 安装和卸载以及是否安装app 2.6 将应用置于后台总结 前言 一、Appium介绍…

[AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现

AI资讯 国产AI大战高考物理&#xff0c;第1题全对&#xff0c;第2题开始放飞终于放大招了&#xff0c;2024WWDC&#xff0c;苹果开启AI反击战苹果一夜重塑iPhone&#xff01;GPT-4o加持Siri&#xff0c;AI深入所有APPOpenAI确认苹果集成ChatGPT 还任命了两位新高管GPT-4搞不定…

GUI编程(Python)

本章&#xff0c;我们将学习GuI (Graphics User Interface) ,即图形用户界面编程&#xff0c;我们可以通过python提供的丰富的组件&#xff0c;快速的实现使用图形界面和用户交互. GUI编程类似于“搭积木”&#xff0c;将一个个组件(Widget)放到窗口中&#xff0e;如下是 windo…

windows环境下配置git环境变量

路由当前目录 vim 打开 .bash_profile PATH$PATH:/d/phpstudy_pro/Extensions/php/php7.4.3nts PATH$PATH:/d/phpstudy_pro/Extensions/php8/php8.2.9nts PATH$PATH:/d/phpstudy_pro/Extensions/composer2.5.8 …

大数据概论总结

三次信息化浪潮 : 信息技术的支撑 : 存储设备容量不断增加 CPU的处理能力不断提高 网络带宽不断增加 数据产生方式的变革促成大数据时代的来临 运营式系统阶段用户原创内容感知式系统阶段 大数据发展历程 : 分为三个阶段 : 大数据的概念 : 1 . 数据量大 : 根据IDC作出…

再也不用担心流量超过上限了!Windows 11中监控数据使用情况的几种方法

序言 如果你使用按流量计费的连接或担心超过数据上限,在Windows上监控你的数据使用情况可能是有益的。这允许你调整你的使用模式,以确保你有效地使用数据。方法如下。 使用任务管理器密切关注数据使用情况 在任务管理器中,你可以实时监控计算机上的应用程序使用的数据量。…