Nginx负载均衡详解_nginx负载均衡配置详解,2024年最新Linux运维高级架构进阶之数据传输与序列化

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

upstream 模块:负载均衡模块,通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。

在http的 upstream模块中,可以通过 server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。

常用的状态有:

  • weight:服务访问的权重,默认是1。
  • down:表示当前的server暂时不参与负载均衡。
  • backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  • max_fails:在fail_timeout时间内,允许请求最大的失败次数,默认为1。当达到最大失败时,会在fail_timeout时间内不允许再次被选择。,返回 proxy_next_upstream 模块定义的错误。
  • fail_timeout:单位为秒,默认是10秒。指定一段时间内,请求经历了max_fails次失败后,该server不能访问的时间(暂停服务的时间)。max_fails可以和fail_timeout一起使用。

注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是backup。

2.2 nginx负载均衡配置

nginx.conf 负载均衡的基本配置内容如下,以轮询策略为例:

worker_processes  1;

events {
  	worker_connections  1024;
}
 
 
http {
		# upstream模块:server\_group\_name 自定义服务组名
    upstream  server_group_name {
    		# server指令指定后端服务器的IP地址和端口
        server    localhost:8080;
        server    192.168.xxx.xxx:8081 down;
        server    192.168.xxx.xxx:8082  max\_fails=3  fail\_timeout=20s;
        server    192.168.xxx.xxx:8083;
    }
    
 		# server模块
    server {
        listen       80;
        server_name  localhost;
 
        location / {
         		# proxy\_pass:代理转发,将单体服务http://127.0.0.1:80,改为服务组名
         		proxy_pass http://server_group_name/;
         		# proxy\_redirect default;
        }
    }
}

二、Nginx负载均衡实战

浏览效果:在浏览器访问:http://192.168.xxx.xxx/test.html时,由于配置的负载均衡会将请求平均分发到两台服务器中,访问时会出现不同界面。。

1、准备工作

这里准备两台tomcat服务器,一台服务器的端口为8080,另一台服务器的端口也为8080吧;

在这两台tomcat服务器的webapps目录中的 ROOT文件夹中创建一个 test.html文件,用于测试。

# 添加 html文件并加入内容
echo "<h1>This is 8080 Port</h1>" > /usr/local/tomcat8080/webapps/ROOT/test.html
echo "<h1>This is 8080 Port -------</h1>" > /usr/local/tomcat8080/webapps/ROOT/test.html

启动两个tomcat服务。

#启动tomcat8080
#启动tomcat8080:
/usr/local/tomcat8080/bin/startup.sh
#关闭tomcat8080:
#/usr/local/tomcat8080/bin/shutdown.sh

浏览器直接访问tomcat服务。

在这里插入图片描述

2、Nginx负载均衡配置

第一步:修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

配置内容如下,以轮询策略为例:

worker_processes  1;

events {
  	worker_connections  1024;
}
 
 
http {
    # upstream模块:自定义服务组名
    upstream my_tomcat_server {
    	 server 192.168.xxx.1xx:8080;
    	 server 192.168.xxx.2xx:8080;
    }

    server {
    	 listen       80;
	     server_name  192.168.xxx.xxx;  # 指定虚拟主机的IP,或者外网域名
    
    	 location / {
    		  root   html;
          	  index  index.html index.htm; 
    		  # proxy\_pass:代理转发,指定我们配置负载均衡的服务名my\_tomcat\_server
    		  proxy_pass http://my_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;
    	 }
    }
}

注意:如果遇到 nginx 配置了https upstream,然后访问跳转失败,直接报404。

解决方法:在nginx的配置文件中添加下面内容。

        # 增加下面内容
        proxy_set_header        Host                    $host;
        proxy_set_header        X-Real-IP               $remote\_addr;
        proxy_set_header        X-Forwarded-For         $proxy\_add\_x\_forwarded\_for;

第二步:重启Nginx

修改 nginx完之后,保存退出,重启Nginx。

/usr/local/nginx/sbin/nginx -s reload

# 先执行停止命令再执行启动命令
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx

第三步:浏览器访问OK

在浏览器访问:http://192.168.xxx.xxx/test.html时,由于配置的负载均衡会将请求平均分发到到这两台服务器中,所以,访问时会出现不同界面。

在这里插入图片描述

第四步:关闭服务

#关闭Nginx
/usr/local/nginx/sbin/nginx -s quit
#关闭tomcat
/usr/local/tomcat8080/bin/shutdown.sh

三、Nginx负载均衡分配策略介绍

1、轮询[默认]

轮询方式是Nginx负载默认的方式。

该策略会使得每个请求按时间顺序逐一分配到不同的后端服务器,如果其中某个后端服务器 down 掉,该策略能自动从轮询列表中剔除该服务。

轮询方式是将所有请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
点赞、收藏、转发给朋友,让我有持续创作的动力!**

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-h0Sf9hvL-1713386007475)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 14
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值