找回密码
 立即注册
首页 业界区 业界 5. Nginx 负载均衡配置案例(附有详细截图说明++) ...

5. Nginx 负载均衡配置案例(附有详细截图说明++)

巨到 2025-6-4 22:36:02
5. Nginx 负载均衡配置案例(附有详细截图说明++)

@
目录

  • 5. Nginx 负载均衡配置案例(附有详细截图说明++)
  • 1. Nginx 负载均衡 配置实例
  • 3. 注意事项和避免的坑
  • 4. 文档: Nginx 的 upstream 配置技巧
  • 5. 最后:

1. Nginx 负载均衡 配置实例

需求说明/图解
windows 浏览器输入: http://www.rainbowseacrm.com/search/look.html
1.png

负载均衡配置-思路分析/图解
2.png

负载均衡配置规则:

  • 负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快。
  • Linux 下有:Nginx、LVS、Haproxy   等等服务可以提供负载均衡服务,Nginx 提供了如下几种分配方式(策略):

    • 轮询(默认) :每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器  down  掉,能自动剔 除
    • weight(根据权重的大小,比例进行负载均衡)
    weight  代表权,重默认为  1,权重越高被分配的客户端越多。
    指定轮询几率,weight  和访问比率成正比,用于后端服务器性能不均的情况。  例如
    1. upstream rsservers{
    2. server 192.168.12.134:8080 weight=1;
    3. server 192.168.12.134:8081 weight=2;
    4. }
    复制代码

    • ip_hash : 每个请求按访问 IP 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。例如:
    1. upstream rsservers{
    2. ip_hash;
    3. server 192.168.12.134:8081;
    4. server 192.168.12.134:8080;
    5. }
    复制代码

    • fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配

  1. upstream rsservers{
  2. server 192.168.12.134:8080;
  3. server 192.168.12.134:8081;
  4. fair;
  5. }
复制代码
  1. # 2. Nginx 负载均衡实现具体步骤如下
复制代码

  • 修改  C:\Windows\System32\drivers\etc\hosts  配置虚拟主机名,配置相关域名的映射
3.png
  1. # Copyright (c) 1993-2009 Microsoft Corp.
  2. #
  3. # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
  4. #
  5. # This file contains the mappings of IP addresses to host names. Each
  6. # entry should be kept on an individual line. The IP address should
  7. # be placed in the first column followed by the corresponding host name.
  8. # The IP address and the host name should be separated by at least one
  9. # space.
  10. #
  11. # Additionally, comments (such as these) may be inserted on individual
  12. # lines or following the machine name denoted by a '#' symbol.
  13. #
  14. # For example:
  15. #
  16. #      102.54.94.97     rhino.acme.com          # source server
  17. #       38.25.63.10     x.acme.com              # x client host
  18. # localhost name resolution is handled within DNS itself.
  19. #        127.0.0.1       localhost
  20. #        ::1             localhost
  21. 127.0.0.1 account.wondershare.com
  22. # 配置 eureka 主机 和 ip 的映射
  23. 127.0.0.1 eureka9001.com
  24. 127.0.0.1 eureka9002.com
  25. 192.168.76.157 www.rainbowsea.com
  26. 192.168.76.159 www.rainbowseamall.com
  27. 192.168.76.160 www.rainbowseacrm.com
复制代码

  • 修改 安装目录conf\nginx.conf 配置,反向代理路径映射
这里我的 nginx.conf  路径是在 /usr/local/nginx/conf 路径下。
4.png

5.png

6.png
  1. upstream rsservers {
  2. 36         server 192.168.76.160:8080;
  3. 37         server 192.168.76.160:8081;
  4. 38
  5. 39     }
  6. 40
  7. 41     server {
  8. 42         listen       80;
  9. 43         server_name 192.168.76.160;
  10. 44        #server_name  localhost;
  11. 45         #charset koi8-r;
  12. 46
  13. 47         #access_log  logs/host.access.log  main;
  14. 48
  15. 49         location / {
  16. 50             root   html;
  17. 51             proxy_pass http://rsservers;
  18. 52             index  index.html index.htm;
  19. 53         }
  20. 54
复制代码
查看 nginx.conf 是否存在配置错误:
  1. [root@localhost nginx]# ./sbin/nginx -t
  2. [root@localhost nginx]# /usr/local/nginx/sbin/nginx -t
复制代码
7.png

重启 Nginx ,加载我们修改后的配置:
  1. [root@localhost nginx]# ./sbin/nginx -s reload
复制代码
  1. [root@localhost nginx]# ps -aux | grep nginx
复制代码
8.png

9.png


  • 在 Linux 的 Tomcat8080  创建  webapps\search\look.html
10.png

11.png

这里我先进入到  Tomcat 的 webapps 目录下,创建  look.html 文件,进行一个访问映射。
12.png
  1. <h1>tomcat 8080 search.... </h1>
复制代码

  • 在 Linux 下重新安装一份 Tomcat, 并将端口修改成 8081
  1. [root@localhost opt]# cp -r ./tomcat/ ./tomcat8081
复制代码
13.png

14.png

15.png

16.png

17.png

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

19.png

20.png

细节说明:不同版本的 tomcat 修改的端口还不一样,  小伙伴们灵活处理即可。

  • 在 Linux 的 Tomcat8081  创建  webapps\search\look.html
21.png

22.png
  1. <h1>tomcat 8081 search.... </h1>
复制代码

  • linux  防火墙打开  80 端口,  保证外网可以访问
  1. [root@localhost product]# firewall-cmd --add-port=80/tcp --permanent # 防火墙开放 10000 端口
复制代码
  1. [root@localhost product]# firewall-cmd --reload # 重启防火墙
复制代码
  1. [root@localhost product]# firewall-cmd --list-all # 查看防火墙信息
复制代码
23.png


  • 启动 Linux 下两个 Tomcat
  1. [root@localhost bin]# ./startup.sh
复制代码
  1. [root@localhost bin]# netstat -an | more
复制代码
25.png

26.png

打开 Linux 当中的浏览器: 访问

  • http://localhost:8080/
  • http://localhost:8081/
27.png

28.png

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


  • 测试是否可以在 Linux 下可以正常访问到两个页面


  • Tomcat 8080 访问/search/look.html 成功 ;http://localhost:8080/search/look.html
30.png


  • Tomcat 8081 访问/search/look.html 成功 ;http://localhost:8081/search/look.html
31.png


  • 启动  或者  重新加载  Nginx
  1. [root@localhost nginx]# ./sbin/nginx
复制代码
  1. [root@localhost nginx]# ps -aux | grep nginx
复制代码
32.png


  • windows 浏览器输入(保证浏览器不是无痕上网): http://www.rainbowseacrm.com/search/look.html
http://www.rainbowseacrm.com/search/look.html
33.png

3. 注意事项和避免的坑


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

带下划线,报错信息,如下:
35.png


  • 如果你的浏览器是无痕上网,  负载均衡可能失效,  因为 Nginx 无法采集到相关信息,  就遇到这个情况,  改用其它浏览器即可(比如 chrome)
  • 如果某 tomcat 没有监听对应端口说明启动失败了,可以尝试先执行,shutdown.sh再执行 startup.sh 解决
4. 文档: Nginx 的 upstream 配置技巧

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

  • 如果停掉 1 个 Tomcat,  会怎样?
  • 如果停掉 1 个 Tomcat,  然后又恢复,会怎样?
  • 如何给不同的服务,分配权重 weight
5. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”
36.gif


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册