当前位置: 首页 > news >正文

DR模式 LVS负载均衡群集

DR模式 LVS负载均衡群集

      • 部署共享存储
        • 关闭防火墙和核心防护
        • 下载,开启nfs服务
        • 创建共享文件夹和测试用的静态网页文件
        • 编辑nfs配置文件
        • 发布共享
        • 查看共享
      • 配置 tomcat 服务器
        • 关闭防火墙和核心防护
        • 安装tomcat
        • 配置 tomcat 多实例
      • 配置 nginx 服务器
        • 关闭防火墙和核心防护
        • 配置
        • 安装nginx
          • yum安装
          • 软件包安装
        • 挂载共享文件夹
        • 配置nginx七层反向代理
      • 配置负载调度器
        • 关闭防火墙和核心防护
        • 配置虚拟 IP 地址
        • 调整 proc 响应参数
        • 配置负载分配策略
        • 访问测试

DR 服务器:192.168.110.10
nginx 服务器1:192.168.110.50
nginx 服务器2:192.168.110.60
vip:192.168.110.88
tomcat 服务器1:192.168.110.70
tomcat 服务器2:192.168.110.80
nfs 服务器:192.168.110.20

示意图

部署共享存储

nfs 服务器:192.168.110.20

关闭防火墙和核心防护
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
下载,开启nfs服务
yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service
创建共享文件夹和测试用的静态网页文件
mkdir /opt/sunny1 /opt/sunny2
chmod 777 /opt/sunny1 /opt/sunny2
echo '静态网页1' > /opt/sunny1/index.html
echo '静态网页2' > /opt/sunny2/index.html
编辑nfs配置文件
vim /etc/exports
/usr/share *(ro,sync)
/opt/sunny1 192.168.110.20/24(rw,sync)
/optsunny2 192.168.110.20/24(rw,sync)
发布共享
exportfs -rv
查看共享
showmount -e

在这里插入图片描述

配置 tomcat 服务器

tomcat 服务器1:192.168.110.70
tomcat 服务器2:192.168.110.80

关闭防火墙和核心防护
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
安装tomcat
#查看是否安装java(没有安装则安装)
java -version
#安装java
yum install -y java 
#设置JDK环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#加载配置
source /etc/profile.d/java.sh

如何查找java的安装目录

[root@tomcat2 yum.repos.d]# whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz
[root@tomcat2 yum.repos.d]# ll /usr/bin/java
lrwxrwxrwx. 1 root root 22 10月  8 14:13 /usr/bin/java -> /etc/alternatives/java
[root@tomcat2 yum.repos.d]# ll /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 10月  8 14:13 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jre/bin/java

在这里插入图片描述
tomcat 安装

#上传 tomcat 软件包
#解压安装
tar xf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
#启动 tomcat
/usr/local/tomcat/bin/startup.sh
#查看是否启动成功
ss -nltp | grep java

tomcat 安装完成
在这里插入图片描述

配置 tomcat 多实例
#创建tomcat1,2
cd
tar xf apache-tomcat-9.0.16.tar.gz
cp -a apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2#配置 tomcat 环境变量
vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2#加载配置
source /etc/profile.d/tomcat.sh
#修改 tomcat1,2 中的 server.xml 文件,端口不重复。tomcat1:8006 8081 8010;tomcat2:8007 8082 8011。
vi /usr/local/tomcat/tomcat1/conf/server.xml
vi /usr/local/tomcat/tomcat2/conf/server.xml#修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
vim /usr/local/tomcat/tomcat1/bin/startup.sh
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
vim /usr/local/tomcat/tomcat2/bin/startup.sh
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2#启动各 tomcat 中的 /bin/startup.sh
/usr/local/tomcat/tomcat1/bin/startup.sh
/usr/local/tomcat/tomcat2/bin/startup.sh#查看是否开启
ss -natp | grep java

在这里插入图片描述
创建测试用的动态网页

vi /usr/local/tomcat/tomcat1/webapps/ROOT/test.jsp
动态页面1
vi /usr/local/tomcat/tomcat2/webapps/ROOT/test.jsp
动态页面2
#测试
curl 192.168.110.70:8081/test.jsp
curl 192.168.110.70:8082/test.jsp

在这里插入图片描述

配置 nginx 服务器

nginx 服务器1:192.168.110.50
nginx 服务器2:192.168.110.60

关闭防火墙和核心防护
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
配置

配置虚拟 IP 地址
vip:192.168.110.88
虚拟 IP 仅用作发送 Web响应数据包的源地址,并不需要监听客户机的访问请求(由调度器监听并分发)。
因此使用虚接口 lo∶0 来承载 VIP 地址,并为本机添加一条路由记录,将访问 VIP 的数据限制在本地,以避免通信紊乱。

#创建一个虚接口
cd /etc/sysconfig/network-scripts/	
vim ifcfg-lo:0DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.110.88
NETMASK=255.255.255.255#开启虚接口lo:0并查看状态
ifup lo:0
ifconfig lo:0#添加路由
route add -host 192.168.110.88 dev lo:0

虚拟接口
查询路由

调整内核的 ARP 响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突

vim /etc/sysctl.confnet.ipv4.conf.lo.arp_ignore = 1       #系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce = 2     #系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2#加载配置
sysctl -p

在这里插入图片描述

安装nginx
yum安装

nginx 服务器1:192.168.110.50

#下载
yum install -y nginx
#开启
nginx
软件包安装

nginx 服务器2:192.168.110.60

#上传软件包
#解压软件包
tar xf nginx-1.26.2.tar.gz
#安装依赖环境
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#配置
cd nginx-1.26.2
./configure --prefix=/usr/local/nginx  --with-http_stub_status_module
#编译安装
make -j 2 && make install
#让系统识别nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#开启
nginx
挂载共享文件夹

下载nfs

yum -y install nfs-utils rpcbind
systemctl start rpcbind
systemctl start httpd

挂载

#查看共享文件夹
showmount -e 192.168.110.20#挂载
#nginx 服务器1
mount.nfs 192.168.110.20:/opt/sunny1 /usr/share/nginx/html
#nginx 服务器2
mount.nfs 192.168.110.20:/opt/sunny2 /usr/local/nginx/html
#查看挂载状态
df -Th

测试静态网页

curl 192.168.110.50
curl 192.168.110.60

在这里插入图片描述

配置nginx七层反向代理
vim /usr/local/nginx/conf/nginx.conf
#http块中
upstream tomcat_web {server 192.168.110.70:8081 weight=1;server 192.168.110.70:8082 weight=1;server 192.168.110.80:8081 weight=1;server 192.168.110.80:8082 weight=1;}
#server块中location ~ .*\.jsp$ {proxy_pass http://tomcat_web;proxy_set_header HOST $host;proxy_set_header X_Real_IP $remote_addr;proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;}

测试

curl 192.168.110.60/test.jsp
curl 192.168.110.50/test.jsp

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

配置负载调度器

DR 服务器:192.168.110.10

关闭防火墙和核心防护
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#加载IP虚拟服务器(IPVS)模块
modprobe ip_vs
#检查IPVS的状态
cat /proc/net/ip_vs
#安装IPVS管理工具
yum -y install ipvsadm
配置虚拟 IP 地址

vip:192.168.110.88

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.110.88
NETMASK=255.255.255.255ifup ens33:0
ifconfig ens33:0
调整 proc 响应参数

由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。

vim /etc/sysctl.confnet.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0#加载配置
sysctl -p
配置负载分配策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 192.168.110.88:80 -s rr
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.50:80 -g
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.60:80 -g
ipvsadmipvsadm -ln
访问测试
curl 192.168.110.88/test.jsp

在这里插入图片描述

相关文章:

DR模式 LVS负载均衡群集

DR模式 LVS负载均衡群集 部署共享存储关闭防火墙和核心防护下载,开启nfs服务创建共享文件夹和测试用的静态网页文件编辑nfs配置文件发布共享查看共享 配置 tomcat 服务器关闭防火墙和核心防护安装tomcat配置 tomcat 多实例 配置 nginx 服务器关闭防火墙和核心防护配…...

mysql复制表结构和数据

1.实例 #复制一张和test 一摸一样的表结构 CREATE TABLE test_one like test#往复制的表结构中复制数据 INSERT INTO test_one SELECT * FROM test#两者一起使用相当于 cv大法2.总结 完全实现了表结构和数据的复制,但是两条sql 得分两步执行 2.1 复制表结构 #复制…...

MFC扩展库BCGControlBar Pro v35.1新版亮点:改进网格控件性能

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.1已全新发布了,这个版本改进网格控件的性能、增强工具栏编辑器功能等。 …...

Python列表操作详解

1 列表的基本概念 在Python中,列表是一种非常常用的数据结构,它可以存储任意类型的元素,并且支持多种操作。下面将详细介绍Python列表的各种操作。 2列表的操作方法 2.1创建列表 Python可以直接使用方括号[]来创建一个空列表。 示例&am…...

畅捷通T+对接聚水潭成功实施案例

在当今竞争激烈的商业环境中,企业数字化转型已成为提升竞争力的关键。广东某实业有限公司的数字化规划,目前财务系统使用的畅捷通T,电商系统使用的聚水潭。目前两个系统数据割裂导致各个部门的协同效率低下。通过借助轻易云数据集成平台&…...

leetcode-312. 戳气球

题目描述 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代…...

程序设计基础I-实验7 函数(编程题)

7-1 sdut- C语言实验—计算表达式 计算下列表达式值: 输入格式: 输入x和n的值,其中x为非负实数,n为正整数。 输出格式: 输出f(x,n),保留2位小数。 输入样例: 3 2输出样例: 在这里给出相应的输出。例如: 2.00 …...

使用3080ti配置安装blip2

使用3080ti运行blip2的案例 本机环境(大家主要看GPU,ubuntu版本和cuda版本即可):安装流程我最后安装的所有包的信息(python 3.9 )以供参考(environment.yml): 本机环境&a…...

vue3组件通信之defineEmits

一、defineEmits是什么&#xff1f; defineEmits 是vue3提供的方法&#xff0c;又称为自定义事件&#xff0c;不需要引入可以直接使用&#xff0c;用于子组件与父组件通信。 二、使用样例 1.父组件代码 代码如下&#xff08;示例&#xff09;&#xff1a; <template>…...

rust gio-rs 挂载 samba 磁盘

linux 使用的 gio 管理工具 这个工具如下 这是 gio 的rust版本 https://crates.io/crates/gio 可以用 rust 语言实现下面所有操作 gio mout 挂载 samba 如下 //https://valadoc.org/gio-2.0/GLib.MountOperation.html pub async fn gio_mount(uri路径:&str, 用户名:Opti…...

幸存者游戏(类)

#include <iostream> #include <graphics.h> #include <stdio.h> #include <conio.h> #include <vector> #include <string> using namespace std; int idx_player_anim 0; const int player_anim_num 6;//这里要把动画帧数定位const i…...

SQL 中UPDATE 和 DELETE 语句的深入理解与应用

在 SQL 中&#xff0c;UPDATE和DELETE语句是用于操作表数据的重要工具&#xff0c;它们允许我们对已存在的数据进行修改和删除。 一、UPDATE 语句 &#xff08;一&#xff09;基本语法 UPDATE语句的基本语法如下&#xff1a; UPDATE table_name SET column1 value1, colum…...

在 Windows 上查找和结束占用特定端口占用程序,并杀死

在 Windows 上查找和结束占用特定端口&#xff08;如 9003&#xff09;的程序&#xff0c;你可以使用以下步骤&#xff1a; 步骤 1&#xff1a;找到占用端口的进程 ID (PID) 打开命令提示符&#xff08;按 Win R&#xff0c;输入 cmd&#xff0c;然后按回车&#xff09;。输…...

sql server尽量避免滥用影响性能的标量函数

相信很多新手学了 函数的用法就不可避免的想把学到的东西用起来&#xff0c;然而这个函数使用却有坑&#xff0c; 在实际用的时候我发现一个简单的计算封装 &#xff0c;不用函数和用函数执行耗时差太多了。 能避免列上进行函数则尽量避免&#xff0c;这是在实际上遇到的坑 &am…...

python画图|二维动态柱状图输出

【1】引言 在前面的学习过程中&#xff0c;已经探索过二维柱状图和三维柱状图的绘制教程&#xff0c;包括且不限于的文章链接有&#xff1a; python画图|水平直方图绘制_绘制水平直方图-CSDN博客 python画图|3D bar进阶探索_ax.bar3d-CSDN博客 此外也学习了动态的直线输出和…...

CocosCreator 快速部署 TON 游戏:Web2 游戏如何使用 Ton支付

在本篇文章中&#xff0c;我们将继续探讨如何使用 Cocos Creator 开发 Telegram 游戏&#xff0c;重点介绍如何集成 TON 支付功能。通过这一教程&#xff0c;开发者将学会如何在游戏中接入 TON Connect&#xff0c;实现钱包连接、支付以及支付后的校验流程&#xff0c;最终为 W…...

生信初学者教程(二十八):单细胞数据标准化

文章目录 介绍加载R包导入数据消除测序深度影响评估细胞周期的影响识别高度可变的特征缩放数据降维聚类输出结果总结介绍 scRNA-seq的标准化是一个重要的预处理步骤,目的是消除技术变异(比如比如测序深度和基因长度等因素),使基因表达和/或样本之间的比较更加可靠。标准化方…...

【OceanBase诊断调优】—— 错误码 5065 和 5066 的区别

适用版本&#xff1a;V2.1.x、V2.2.x、V3.1.x、V3.2.x 5065 与 5066 是两个近似的报错。 OB_ERR_QUERY_INTERRUPTED(-5065): Message: Query execution was interrupted。 含义为执行中断, 例如终端执行 SQL 过程中按 ctrlc 终止 SQL 执行会报 -5065。 OB_ERR_SESSION_INTER…...

Spring Boot RESTful API开发教程

一、RESTful API简介 RESTful API是一种基于HTTP协议的Web API&#xff0c;其设计原则是简单、可扩展、轻量级、可缓存、可靠、可读性强。RESTful API通常使用HTTP请求方法&#xff08;GET、POST、PUT、DELETE等&#xff09;来操作资源&#xff0c;使用HTTP状态码来表示操作结…...

<Rust>iced库(0.13.1)学习之番外:如何为窗口添加初始值?

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 注:新版本已更新为0.13 概述 这是本专栏的番外篇,主要介绍一下新…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像&#xff08;比如分辨率3000*3000的图像&#xff09;的办法&#xff0c;尤其是想把内存中的裸数据&#xff08;只有图像的数据&#xff0c;不包…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...