负载均衡的综合部署练习(LVS-DR模式+Nginx七层反向代理+Tomcat多实例)

news2024/11/13 11:30:15

 1.实验设计

实验所满足的需求

满足某公司,想搭建一套高可用的负载均衡DR模式的集群,同时该集群收到用户访问请求时能够自主判断用户发送的请求是动态资源还是静态,依次划分进行动静分离:Nginx处理静态资源,Tomcat处理动态资源

 实验集群的组件预定
 一台主DR调度器:192.168.50.20       VIP:192.168.50.50  (实验没用用主备调度器)

Nginx节点服务器01: 192.168.50.22   VIP:192.168.50.50

Nginx节点服务器02: 192.168.50.23   VIP:192.168.50.50

Tomcat多实例节点服务器:   Tomcat01:192.168.50.24:8080      Tomcat02: 192.168.73.50.24:8081

Tomcat单例节点服务器:  Tomcat03:192.168.50.25:8080

客户访问测试机:192.168.50.26
 

2.实验操作步骤 

本次实验的操作中用到的服务均为yum本地源服务或则源码编译安装。为了实验的流畅性,建议所有虚拟机搭建本地源来完成实验

步骤一:配置DR调度器 192.168.50.20

systemctl stop firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

(1)配置虚拟 IP 地址(VIP:192.168.50.50)VIP

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0                #若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.50.50
NETMASK=255.255.255.255
 
ifup ens33:0
ifconfig ens33:0
 

(2)调整 proc 响应参数

#由于 LVS 负载调度器和各节点需要共用 VIP 地址,需要关闭 icmp 的重定向,不充当路由器。
vim /etc/sysctl.conf
net.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
 

(3)配置负载分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
 
ipvsadm -C
ipvsadm -A -t 192.168.50.50:80 -s rr
ipvsadm -a -t 192.168.50.50:80 -r 192.168.50.22:80 -g            #若隧道模式,-g替换为-i
ipvsadm -a -t 192.168.50.50:80 -r 192.168.50.23:80 -g
ipvsadm
 
ipvsadm -ln                    #查看节点状态,Route代表 DR模式
 

步骤二:两个Nginx节点服务器的安装配置

两台虚拟机192.168.50.22   192.168.50.23  直接用脚本源码安装nginx服务

Nginx01节点服务器(192.168.50.22)设置

(1)设置回环虚拟网卡(VIP),添加静态路由


#配置回环的虚拟网卡,设置VIP承载
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.50.50
NETMASK=255.255.255.255
 
service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
 
 
#添加静态路由
route add -host 192.168.50.50 dev lo:0

 (2) 设置内核参数

—响应参数以阻止更新 VIP 的 MAC 地址,避免发生冲突(web1和web2的相同设置)


vim /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
 

(3)编写Nginx01的静态资源测试网页

vim /usr/local/nginx/html/index.html
<html>
<body>
<h1> this is Nginx01 static test !</h1>
</body>
</html

(4)进行Nginx01负载均衡和动静分离配置


vim /usr/local/nginx/conf/nginx.conf
......
http {
......
	#gzip on;
	
	upstream tomcat_server {
		server 192.168.50.24:8080 weight=1;
		server 192.168.50.24:8081 weight=1;
		server 192.168.50.25:8080 weight=1;
	}
	
	server {
		listen 80;
		server_name localhost;
	
		charset utf-8;
	
		#access_log logs/host.access.log main;
		
		location ~ .*\.jsp$ {
			proxy_pass http://tomcat_server;
			proxy_set_header HOST $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}
		
		
		location / {
			root html;
			index index.html index.htm;
		}
......
	}
......
}

步骤三:安装tomcat服务,进行相关配置

 配置 多实例tomcat服务器(192.168.50.24)

(1)安装jdk和tomcat,配置多实例服务启动


#jdk环境的配置
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
 
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
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
 
 
#安装tomcat
 
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv 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

(2) 修改 多实例中tomcat02中的 server.xml 文件


vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">		
#22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1"		
#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />	
#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

(3)修改多实例tomcat的开启与关闭配置文件,添加相关的tomcat全局变量

vim /usr/local/tomcat/tomcat1/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
 
 
 
vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1
 
 
 
vim /usr/local/tomcat/tomcat2/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
 
 
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

(4)配置tomcat01的测试页面


mkdir /usr/local/tomcat/tomcat1/webapps/test 
 
vim /usr/local/tomcat/tomcat1/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>tomcat01</title>   
</head>
<body>
<% out.println("tomcat01 running");%>
</body>
</html>
 
 
vim /usr/local/tomcat/tomcat1/conf/server.xml
#删除前面的 HOST 配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path="" reloadable="true" />
</Host>
 
/usr/local/tomcat/tomcat1/bin/shutdown.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh

(5)配置tomcat02的测试页面 


mkdir  /usr/local/tomcat/tomcat2/webapps/test
 
vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>tomcat02</title>   
</head>
<body>
<% out.println("tomcat02 running");%>
</body>
</html>
 
 
vim /usr/local/tomcat/tomcat2/conf/server.xml
#删除前面的 HOST 配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" />
</Host>
 
/usr/local/tomcat/tomcat2/bin/shutdown.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh

 配置单实例tomcat服务器(192.168.73.110)

(1)安装jdk环境和tomcat服务 


#jdk环境的配置
 
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
 
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
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
 
java -version
 
#安装tomcat
 
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
 
/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh
 
netstat -ntap | grep 8080

 (2)配置tomcat03的测试网页


mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>tomcat03</title>   #指定为 test3 页面
</head>
<body>
<% out.println("tomcat03 running ");%>
</body>
</html>
 
 
 vim /usr/local/tomcat/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true">
	</Context>
</Host>
 
/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

3.实验测试

测试一:直接访问VIP,进行刷新,观察是否出现负载均衡现象 

 

测试二:访问VIP/index.jsp  ,并且进行刷新,观察tomcat是否进行负载均衡(同时证明动静分离)

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

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

相关文章

图的数据结构,系统学习图的基本概念、定义和建立,学会邻接矩阵、邻接表以及实现六度空间案例,遍历图的方式——广度、深度访问

1.图的定义和术语 图&#xff1a;G (V,E) Graph (Vertex, Edge) V&#xff1a;顶点&#xff08;数据元素&#xff09;的有穷非空集合&#xff1b; E&#xff1a;边的有穷集合。 有向图&#xff1a;每条边都是有方向的 无向图&#xff1a;每条边都是无方向的 完全图&#…

用 ChatGPT 进行阅读理解题目的问答

阅读理解出题 阅读理解题是语言学习过程中一种重要的练习方式。无论语文还是英语考试中&#xff0c;阅读理解题都占有相当大的分值。ChatGPT 作为一种大语言模型&#xff0c;在处理自然语言理解任务中具有很大的优势。广大教师和学生家长们&#xff0c;都可以尝试用 ChatGPT 进…

借灰姑娘的手,讲述js混淆加密的美丽

这个故事的主角是灰姑娘&#xff0c;她有一个重要的秘密&#xff0c;需要将其保护起来。但是&#xff0c;她发现她的网站上的 JavaScript 代码很容易被其他人阅读和修改&#xff0c;为了保护这个秘密&#xff0c;她需要采用一些混淆和加密技术。 以下是她使用的一些技术&#…

数据结构与算法学习:二叉树的后序遍历的递归与非递归实现,以及非递归实现中的流程控制的说明。

需求二叉树&#xff1a; 采用二叉树后序遍历非递归算法。设置一个指针p初始指向树根&#xff0c;p先入栈&#xff0c;而后使得p指向它的左孩子p->firstchild&#xff0c;重复操作&#xff0c;使得每个左孩子都依次入栈&#xff0c;同时初始化一个Treenode*类型的指针pre&…

GPT:你知道这五年我怎么过的么?

时间轴 GPT 首先最初版的GPT&#xff0c;来源于论文Improving Language Understanding by Generative Pre-Training&#xff08;翻译过来就是&#xff1a;使用通用的预训练来提升语言的理解能力&#xff09;。GPT这个名字其实并没有在论文中提到过&#xff0c;后人将论文名最后…

【软件测试】知识图

文章目录 第1章 软件测试概述1.1 软件、软件危机和软件工程1.1.1 基本概念1.1.2 软件工程的目标及其一般开发过程1.1.3 软件过程模型 1.2 软件缺陷与软件故障1.2.1 基本概念1.2.2 典型案例 1.3 软件测试的概念1.3.1 软件测试的定义1.3.2 软件测试的目的&#xff1a;保证软件产品…

备忘录设计模式解读

目录 问题引进 游戏角色状态恢复问题 传统方案解决游戏角色恢复 传统的方式的问题分析 备忘录模式基本介绍 基本介绍 备忘录模式的原理类图 对原理类图的说明 游戏角色恢复状态实例 应用实例要求 思路分析和图解(类图) 代码实战 备忘录模式的注意事项和细节 问题引…

了解网络攻击:类型、策略和技术

近年来&#xff0c;网络攻击变得越来越普遍&#xff0c;个人和企业都成为各种网络威胁的受害者。了解不同类型的网络攻击&#xff0c;以及网络罪犯使用的策略和技术&#xff0c;对于保护您的个人和企业数据免受这些威胁至关重要。 有几种不同类型的网络攻击&#xff0c;每种都…

Linux 查看进程和线程CPU和内存占用情况

文章目录 Linux 查看进程有哪些线程Linux 查看程序内存占用情况 top和free等命令Linux 查看进程、线程数量 Linux 查看进程有哪些线程 linux 下查看进程内的线程有哪些 首先通过进程名称&#xff0c;假设为SensorDev 找到pid号。 ps -p {pid} -T 可以得到该进程里面运行的各…

Mapbox多边形光效晕影特效的实现

相信很多大屏需要展示行政区的发光效果,像下图这样的: 这相比普通的多边形样式,边界有了渐变发光的效果,那么这篇章交给大家如何实现这样一个效果,让你的行政区,地块之类的多边形要素展示成发光的效果。 我们不依赖底层的webgl技术,也不用涉及到什么着色器的概念,我…

【LeetCode: 1143. 最长公共子序列 | 暴力递归=>记忆化搜索=>动态规划】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Springcloud连接nacos集群,nacos地址配置为nginx,报错:requst nacos server failed

先说下版本&#xff1a; Spring cloud&#xff1a; Hoxton.SR12 spring.cloud.alibaba&#xff1a; 2.2.9.RELEASE spring.boot&#xff1a; 2.3.12.RELEASE Linux Centos7 nacos-server&#xff1a;2.1.0 nginx&#xff1a; 1.20.2 环境说明&#xff1a; nacos正常搭建三个集…

Burpsuite双层代理以及抓https与app包设置

Burp Suite是一款用于Web应用程序安全测试的集成式平台。它由PortSwigger Ltd.开发&#xff0c;是一个功能强大的工具&#xff0c;用于发现Web应用程序的漏洞和安全问题&#xff0c;例如跨站点脚本&#xff08;XSS&#xff09;、SQL注入、会话劫持等。它包括多个模块&#xff0…

酒厂酒业IP网络广播系统建设方案-基于局域网的新一代交互智慧酒厂酒业IP广播设计指南

酒厂酒业IP网络广播系统建设方案-基于局域网的新一代交互智酒业酒厂IP广播系统设计指南 由北京海特伟业任洪卓发布于2023年4月25日 一、酒厂酒业IP网络广播系统建设需求 随着中国经济的快速稳步发展&#xff0c;中国白酒行业也迎来了黄金时期&#xff0c;产品规模、销售业绩等…

NLP 与 Python:构建知识图谱实战案例

概括 积累了一两周&#xff0c;好久没做笔记了&#xff0c;今天&#xff0c;我将展示在之前两周的实战经验&#xff1a;如何使用 Python 和自然语言处理构建知识图谱。 网络图是一种数学结构&#xff0c;用于表示点之间的关系&#xff0c;可通过无向/有向图结构进行可视化展示…

【2023团体程序设计天梯赛CCCC】GPLT2023,L1~L2部分(PTA,L1-089~L1-096,L2-045~L2-048)题解代码复盘

文章目录 概要L1-089 最好的文档 5L1-090 什么是机器学习 5L1-091 程序员买包子 10L1-092 进化论 10L1-093 猜帽子游戏 15L1-094 剪切粘贴 15L1-095 分寝室 20L1-096 谁管谁叫爹 20L2-045 堆宝塔 25L2-046 天梯赛的赛场安排L2-047 锦标赛 25L2-048 寻宝图 25L3-035 完美树&…

GIII EDI 需求分析

G-III成衣集团是一家美国服装公司&#xff0c;拥有30多个授权和自有品牌如&#xff1a;Calvin Klein、Tommy Hilfiger、Guess以及Levi’s等&#xff0c;在全球拥有众多的零售合作伙伴和销售渠道&#xff0c;并致力于提供时尚、高质量和价格合理的服装产品。 GIII EDI 需求 传…

版本控制工具之Git基本操作

Git 相对较新的版本控制工具&#xff0c;特点为分布式。 每一台客户端都具有完整的版本备份&#xff0c;所有的版本提交都不需要依赖中心服务器。只有在多人协同时&#xff0c;服务器会处理并发情况。 一、Git 环境安装 &#x1f449;链接&#xff1a;https://blog.csdn.net/w…

「速通Shell」初次走近Shell,Shell是什么?

目录 初次走进ShellShell是什么Shell工作原理 Shell分类Shell的优势 第一个Shell脚本Hello WorldShell执行方式绝对路径执行相对路径执行脚本命令执行系统命令执行 总结 对于开发者来说&#xff0c;除了掌握Java、C/C等主要编程语言外&#xff0c;还需要掌握支撑性的工具语言和…

Vagrant 安装

系列文章目录 文章目录 系列文章目录前言一、安装地址二、安装步骤注意事项三、常用命令四、问题总结 前言 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内…