前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx-代理apache负载均衡

Nginx-代理apache负载均衡

作者头像
全栈程序员站长
发布2022-10-05 09:19:07
4150
发布2022-10-05 09:19:07
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

一、什么是负载均衡

当一台服务器单位时间访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就容会崩掉。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。 我们可以建立多个服务器,组成一个服务器集群,当用户访问网站时,先访问中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,既分担了服务器压力,有避免了服务器崩溃的情况。

二、Nginx负载均衡的实现

必备条件

① 至少三台服务器(虚拟机),本次使用的虚拟机如下:

虚拟机名称

IP

备注

本地centos3(nginx)

192.168.254.132

事先安装好nginx,下文此服务器叫132

本地centos4(apache)

192.168.254.134

事先安装好apache,下文此服务器叫134

本地centos5(apache)

192.168.254.135

事先安装好apache,下文此服务器叫135

1.apache启动并部署页面

134和135服务器分别启动apache,代码如下:

代码语言:javascript
复制
systemctl start httpd

分别检查一下apache的状态,代码如下:

代码语言:javascript
复制
systemctl status httpd

结果如下( active(running) 说明已经跑起来):

在这里插入图片描述
在这里插入图片描述

访问apache首页:192.168.254.134/135,页面如下:

在这里插入图片描述
在这里插入图片描述

在 /var/www/html 简单写个test.html,代码如下(写两份,一个134一个135):

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
	<title>负载均衡</title>
</head>
<body>
这是192.168.254.134服务器!你好!!!
<!-- 这是192.168.254.135服务器!你好!!! -->
</body>
</html>

访问 192.168.254.134/test.html 和 192.168.254.135/test.html ,页面如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.nginx启动

132服务器分别启动nginx,代码如下:

代码语言:javascript
复制
systemctl start nginx

检查一下nginx的状态,代码如下:

代码语言:javascript
复制
systemctl status nginx

结果如下( active(running) 说明已经跑起来):

在这里插入图片描述
在这里插入图片描述

3.nginx配置反向代理

132服务器,进入 /etc/nginx 然后 ls :

在这里插入图片描述
在这里插入图片描述

我们需要修改的是nginx.conf配置文件,替换80端口location节点下的内容,修改内容如下:

代码语言:javascript
复制
location / { 
   
      proxy_pass http://192.168.254.134:80;
}

保存文件后,重载nginx,代码如下:

代码语言:javascript
复制
systemctl reload nginx

为防止修改配置文件后出现问题,再检查一下nginx的状态:

代码语言:javascript
复制
systemctl status nginx
在这里插入图片描述
在这里插入图片描述

那么现在,当你访问192.168.254.132:80/test.html的时候,其实你访问到的是192.168.254.134:80/test.html,如下图:

在这里插入图片描述
在这里插入图片描述

反向代理配置完成,接下来我们来配置负载均衡。

4.nginx配置负载均衡

还是修改nginx.conf配置文件,在配置文件的80的server节点上新增upstream节点,代码如下:

代码语言:javascript
复制
upstream test{ 
   
    server 192.168.254.134:80;
    server 192.168.254.135:80;
}

修改第二步中提到的location节点内容,将proxy_pass指向upsteam节点的名字test,代码如下:

代码语言:javascript
复制
location / { 
   
    proxy_pass http://test;
}

保存文件,重载nginx,代码如下:

代码语言:javascript
复制
systemctl reload nginx

此时我们再访问192.168.254.132:80/test.html,这是你发现一会访问到的是192.168.254.134:80/test.html,一会访问到的是192.168.254.135:80/test.html ,如果如下;

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

那么这样也就是实现了通过nginx代理apache,实现轮询策略的负载均衡。收工!!!

附:nginx负载均衡的几种策略

1、轮询(默认,也就是本片文章实现的策略) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

代码语言:javascript
复制
upstream test{ 
    
	server 192.168.254.134:80; 
	server 192.168.254.135:80; 
} 

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

代码语言:javascript
复制
upstream test{ 
    
	server 192.168.254.134:80 weight=8; 
	server 192.168.254.135:80 weight=10; 
} 

3、IP绑定 ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

代码语言:javascript
复制
upstream test{ 
    
	ip_hash; 
	server 192.168.254.134:80; 
	server 192.168.254.135:80;
} 

4、fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

代码语言:javascript
复制
upstream test{ 
    
	server 192.168.254.134:80; 
	server 192.168.254.135:80;
	fair; 
} 

5、url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

代码语言:javascript
复制
upstream test{ 
    
	server 192.168.254.134:80; 
	server 192.168.254.135:80; 
	hash $request_uri; 
	hash_method crc32; 
} 

其他参数说明:

代码语言:javascript
复制
	server 192.168.254.134:80 down; (down 表示当前的server暂时不参与负载) 
	server 192.168.254.135:80 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 
} 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月8日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是负载均衡
  • 二、Nginx负载均衡的实现
    • 必备条件
      • 1.apache启动并部署页面
        • 2.nginx启动
          • 3.nginx配置反向代理
            • 4.nginx配置负载均衡
              • 附:nginx负载均衡的几种策略
              相关产品与服务
              负载均衡
              负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档