文章目录

  • 9.1 需求说明/图解
  • 9.2 负载均衡配置-思路分析/图解
  • 9.3 负载均衡配置规则
  • 9.4 实现步骤
  • 9.4.1 修改 C:\Windows\System32\drivers\etc\hosts ,配置虚拟主机名
  • 9.4.2 修改 安装目录\nginx.conf
  • 9.4.3 在 Linux 的 Tomcat8080 创建 webapps\search\look.html
  • 9.4.4 在 Linux 下重新安装一份 Tomcat ,并将端口修改成 8081
  • 9.4.5 在 Linux 的 Tomcat8081 创建 webapps\search\look.html
  • 9.4.6 linux 防火墙打开 80 端口, 保证外网可以访问
  • 9.5 完成测试
  • 9.5.1 启动 Linux 下两个 Tomcat
  • 9.5.2 启动 或者 重新加载 Nginx
  • 9.5.3 windows 浏览器测试 (保证浏览器不是无痕上网)
  • 9.6 注意事项和避免不必要的坑
  • 9.7 几个小实验-多测试
  • 9.7.1 Nginx 的 upstream 配置技巧
  • 9.7.2 如果停掉 1 个 Tomcat, 会怎样?
  • 9.7.3 如果停掉 1 个 Tomcat ,然后又恢复,会怎样?
  • 9.7.4 如何给不同的服务,分配权重 weight



9.1 需求说明/图解

负载均衡配置ensp 负载均衡配置项设计_nginx


负载均衡配置ensp 负载均衡配置项设计_nginx_02


9.2 负载均衡配置-思路分析/图解

负载均衡配置ensp 负载均衡配置项设计_负载均衡配置ensp_03

9.3 负载均衡配置规则

  • 负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快
  • linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务, Nginx 提供了几种分配方式 (策略):
  1. 轮询 (默认) :每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除
  2. weight :weight 代表权重,默认为 1 ,权重越高被分配的客户端越多,指定轮询几率,weight 和 访问比率 成正比,用于后端服务器性能不均的情况。 例如
upstream xjsservers{
	server 192.168.12.134:8080 weight=1;
	server 192.168.12.134:8081 weight=2;
}
  1. ip_hash :每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。例如
upstream xjsservers{
	ip_hash;
	server 192.168.12.134:8081;
	server 192.168.12.134:8080;
}
  1. fair (第三方) :按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream xjsservers{
	server 192.168.12.134:8080;
	server 192.168.12.134:8081;
	fair;
}

9.4 实现步骤

9.4.1 修改 C:\Windows\System32\drivers\etc\hosts ,配置虚拟主机名

192.168.200.130 www.xjs.com
192.168.200.130 www.xjsmall.com
192.168.200.130 www.xjscrm.com

9.4.2 修改 安装目录\nginx.conf

负载均衡配置ensp 负载均衡配置项设计_nginx_04


负载均衡配置ensp 负载均衡配置项设计_nginx_05

9.4.3 在 Linux 的 Tomcat8080 创建 webapps\search\look.html

负载均衡配置ensp 负载均衡配置项设计_负载均衡_06

<h1>tomcat 8080 search....</h1>

9.4.4 在 Linux 下重新安装一份 Tomcat ,并将端口修改成 8081

  1. 复制一份原来安装好的 Tomcat

负载均衡配置ensp 负载均衡配置项设计_服务器_07

  1. 修改新复制的 tomcat 的 conf\server.xml ,注意要修改如下位置,否则该 Tomcat 是不能正常工作

负载均衡配置ensp 负载均衡配置项设计_负载均衡配置ensp_08

负载均衡配置ensp 负载均衡配置项设计_nginx_09

负载均衡配置ensp 负载均衡配置项设计_nginx_10

负载均衡配置ensp 负载均衡配置项设计_nginx_11

  1. 细节说明:不同版本的 Tomcat 修改的端口还不一样,灵活处理即可,一定要认真,否则后面测试失败,你排除错误会花费很长时间…

9.4.5 在 Linux 的 Tomcat8081 创建 webapps\search\look.html

负载均衡配置ensp 负载均衡配置项设计_负载均衡配置ensp_12

<h1>tomcat 8081 search....</h1>

9.4.6 linux 防火墙打开 80 端口, 保证外网可以访问

负载均衡配置ensp 负载均衡配置项设计_负载均衡配置ensp_13

9.5 完成测试

9.5.1 启动 Linux 下两个 Tomcat

负载均衡配置ensp 负载均衡配置项设计_服务器_14


负载均衡配置ensp 负载均衡配置项设计_负载均衡_15

  • 温馨提示:查看启动的端口,确保有 8080 和 8081 端口在监听 (如果 tomcat 没有监听对应端口,说明启动失败了,可以尝试先执行 shutdown.sh 再执行 startup.sh 解决)

负载均衡配置ensp 负载均衡配置项设计_负载均衡_16

  • 在 linux 下可以正常访问到两个页面

负载均衡配置ensp 负载均衡配置项设计_nginx_17

负载均衡配置ensp 负载均衡配置项设计_Nginx_18

9.5.2 启动 或者 重新加载 Nginx

负载均衡配置ensp 负载均衡配置项设计_Nginx_19

9.5.3 windows 浏览器测试 (保证浏览器不是无痕上网)

负载均衡配置ensp 负载均衡配置项设计_负载均衡配置ensp_20


负载均衡配置ensp 负载均衡配置项设计_Nginx_21


9.6 注意事项和避免不必要的坑

  1. nginx.conf 的 upstream 不能带下划线,否则会失败,但是语法检测不到

负载均衡配置ensp 负载均衡配置项设计_Nginx_22

负载均衡配置ensp 负载均衡配置项设计_Nginx_23

  1. 如果你的浏览器是无痕上网,负载均衡可能失效,因为 Nginx 无法采集到相关信息,改用其它浏览器即可(比如 chrome)
  2. 温馨提示:如果某 tomcat 没有监听对应端口,说明启动失败了,可以尝试先执行 shutdown.sh 再执行 startup.sh 解决

9.7 几个小实验-多测试

9.7.1 Nginx 的 upstream 配置技巧

  1. 基本介绍
  • Nginx 是一个反向代理软件,大部分的网站都采用 Nginx 作为网站/平台的服务器软件。Nginx 除了可以直接作为 web 服务器使用外,更多的情况是通过反向代理将请求转发给上游服务器
  • 配置上游服务器可以使用 upstream 进行设置,通过 upstream 可以实现服务的负载均衡规则,可以提高服务器的高可用性
  1. 地址:https://zhuanlan.zhihu.com/p/409693332

9.7.2 如果停掉 1 个 Tomcat, 会怎样?

负载均衡配置ensp 负载均衡配置项设计_nginx_24


负载均衡配置ensp 负载均衡配置项设计_负载均衡_25


9.7.3 如果停掉 1 个 Tomcat ,然后又恢复,会怎样?

负载均衡配置ensp 负载均衡配置项设计_nginx_26

========== 又重新开始轮询 ==========

负载均衡配置ensp 负载均衡配置项设计_Nginx_27


负载均衡配置ensp 负载均衡配置项设计_负载均衡配置ensp_28


9.7.4 如何给不同的服务,分配权重 weight

负载均衡配置ensp 负载均衡配置项设计_负载均衡配置ensp_29

负载均衡配置ensp 负载均衡配置项设计_负载均衡_30

负载均衡配置ensp 负载均衡配置项设计_负载均衡_31