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

@


1. Nginx 负载均衡 配置实例

需求说明/图解

windows 浏览器输入: http://www.rainbowseacrm.com/search/look.html

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

负载均衡配置规则:

  • 负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快。

  • Linux 下有:Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务,Nginx 提供了如下几种分配方式(策略):

    1. 轮询(默认) :每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔 除
    2. weight(根据权重的大小,比例进行负载均衡)

    weight 代表权,重默认为 1,权重越高被分配的客户端越多。

    指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如

    upstream rsservers{
    server 192.168.12.134:8080 weight=1;
    server 192.168.12.134:8081 weight=2;
    }
    1. ip_hash : 每个请求按访问 IP 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。例如:
    upstream rsservers{
    ip_hash;
    server 192.168.12.134:8081;
    server 192.168.12.134:8080;
    }
    1. fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream rsservers{
server 192.168.12.134:8080;
server 192.168.12.134:8081;
fair;
}

 # 2. Nginx 负载均衡实现具体步骤如下
  1. 修改 C:\Windows\System32\drivers\etc\hosts 配置虚拟主机名,配置相关域名的映射

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost 127.0.0.1 account.wondershare.com
# 配置 eureka 主机 和 ip 的映射
127.0.0.1 eureka9001.com
127.0.0.1 eureka9002.com
192.168.76.157 www.rainbowsea.com
192.168.76.159 www.rainbowseamall.com
192.168.76.160 www.rainbowseacrm.com
  1. 修改 安装目录conf\nginx.conf 配置,反向代理路径映射

这里我的 nginx.conf 路径是在 /usr/local/nginx/conf 路径下。

 upstream rsservers {
36 server 192.168.76.160:8080;
37 server 192.168.76.160:8081;
38
39 }
40
41 server {
42 listen 80;
43 server_name 192.168.76.160;
44 #server_name localhost;
45 #charset koi8-r;
46
47 #access_log logs/host.access.log main;
48
49 location / {
50 root html;
51 proxy_pass http://rsservers;
52 index index.html index.htm;
53 }
54

查看 nginx.conf 是否存在配置错误:

[root@localhost nginx]# ./sbin/nginx -t
[root@localhost nginx]# /usr/local/nginx/sbin/nginx -t

重启 Nginx ,加载我们修改后的配置:

[root@localhost nginx]# ./sbin/nginx -s reload
[root@localhost nginx]# ps -aux | grep nginx

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

这里我先进入到 Tomcat 的 webapps 目录下,创建 look.html 文件,进行一个访问映射。

<h1>tomcat 8080 search.... </h1>
  1. 在 Linux 下重新安装一份 Tomcat, 并将端口修改成 8081
[root@localhost opt]# cp -r ./tomcat/ ./tomcat8081

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

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

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

<h1>tomcat 8081 search.... </h1>
  1. linux 防火墙打开 80 端口, 保证外网可以访问
[root@localhost product]# firewall-cmd --add-port=80/tcp --permanent # 防火墙开放 10000 端口
[root@localhost product]# firewall-cmd --reload # 重启防火墙
[root@localhost product]# firewall-cmd --list-all # 查看防火墙信息

  1. 启动 Linux 下两个 Tomcat
[root@localhost bin]# ./startup.sh

[root@localhost bin]# netstat -an | more

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

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

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

  1. 启动 或者 重新加载 Nginx
[root@localhost nginx]# ./sbin/nginx
[root@localhost nginx]# ps -aux | grep nginx

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

http://www.rainbowseacrm.com/search/look.html

3. 注意事项和避免的坑

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

带下划线,报错信息,如下:

  1. 如果你的浏览器是无痕上网, 负载均衡可能失效, 因为 Nginx 无法采集到相关信息, 就遇到这个情况, 改用其它浏览器即可(比如 chrome)

  2. 如果某 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. 最后:

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

5. Nginx 负载均衡配置案例(附有详细截图说明++)的更多相关文章

  1. Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群

    Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...

  2. Nginx负载均衡配置简单配置方法

    http://www.jb51.net/article/121235.htm Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器.下面通过 ...

  3. nginx高性能WEB服务器系列之六--nginx负载均衡配置+健康检查

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  4. Mall电商项目总结(二)——nginx负载均衡配置和策略

    1. nginx配置文件 用户在浏览器上输入,http://www.xwld.site/ 实际上是在访问服务器80端口,nginx 监听80端口,将用户的请求转发到8080和9080端口 . upst ...

  5. Tomcat服务部署与Nginx负载均衡配置

    一.中间键产品介绍 目前来说IBM的WebSphere,Oracle的Weblogic占据了市场上java语言Web站点的部分份额,该两种软件都是商业化的软件,由于性能优越,可靠性高等优点应用于大型互 ...

  6. Docker 安装 Nginx 负载均衡配置

    Docker 安装 # 1)安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 # 2)添加Docker软件包源(否则d ...

  7. Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  8. Nginx负载均衡配置实例详解(转)

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  9. [转载]Nginx负载均衡配置实例详解

    负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦. 负载均衡 先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可 ...

  10. 如何配置nginx负载均衡配置(轮询,权重,ip绑定)

    集群是为了解决单节点无法服务高并发的情况,在集群中nginx是如何分配将来自客户端的请求 转发给服务器的 负载均衡可以提高网站的吞吐量(接受和响应),减轻单台服务器的压力 负载均衡提供了三种策略:轮询 ...

随机推荐

  1. 使用 MOLECULE 迅速包装百度 UEditor

    UEditor: UEditor - 首页http://ueditor.baidu.com/website/ 我们在对话框上放了几个 UEditor,发现第一次弹出对话框时UEditor还没有初始化 ...

  2. 【Python】【Pandas】使用concat添加行

    添加行 t = pd.DataFrame(columns=["姓名","平均分"]) t = t.append({"姓名":"小红 ...

  3. Windows 11 下 Virtualbox 6.1.34 出现 End kernel panic - not syncing: attempted to kill the idle task

    前言小半年没用 Virtualbox 了,切换到了 VMware,今天又切换回去(无聊),但是安装虚拟机出现这个错误. 解决方法根据 Virtualbox 论坛的讨论[1]和[2],首先明确 系统必须 ...

  4. Qt编写可视化大屏电子看板系统22-平滑曲线图

    一.前言 平滑曲线是所有涉及到曲线图的项目中,绕不开的一个话题,尽管很多人爱看折线图,但是很多时候来个平滑曲线图,会更加赏心悦目,这就好比现在的手机app移动客户端上,从最初的四方四正到现在的平滑圆角 ...

  5. Nlog基本使用

    引入get包:NLog.Extensions.Logging 添加一个nlog.cofig文件 并设置属性,始终复制或较新则复制 <?xml version="1.0" en ...

  6. 肖健雄(Jianxiong Xiao)的开源SFM代码SFMedu的运行方法

    注意:本文是针对肖健雄(Jianxiong Xiao)博士的的开源SFM代码SFMedu(https://github.com/jianxiongxiao/SFMedu)的运行方法. 本人的运行环境: ...

  7. Python开发环境的构建:使用Anaconda与Pycharm

    Anaconda是一个科学计算环境,当在电脑上安装好Anaconda3以后,就相当于安装好了Python,还有一些常用的库,如numpy,scrip,matplotlib等库. (如果你这里没有安装a ...

  8. 阿里IM技术分享(九):深度揭密RocketMQ在钉钉IM系统中的应用实践

    本文由钉钉技术专家尹启绣分享,有修订和重新排版. 1.引言 短短的几年时间,钉钉便迅速成为一款国民级应用,发展速度堪称迅猛. IM作为钉钉最核心的功能,每天需要支持海量企业用户的沟通,同时还通过 Pa ...

  9. 1. C++快速入门--变量和基本类型, 类别

    文章使用obsidian编写, 双链部分可能失效 1 基本内置类型 1.1 算术类型 算术类型介绍 bool 类型 字符类型 整数类型 实数浮点.虚数浮点和 复数浮点 参看如下表 带符号和无符号类型的 ...

  10. [LC515]在每个树的行中找最大值

    题目内容 题目分析 这是一道典型的树结构遍历题,可以使用层序遍历(BFS)或者(DFS)进行解题. 在BFS中,使用队列结构遍历树的每一层并维护每层的最大值. 在DFS中,由于并不是一层一层的去访问树 ...