Nginx-代理apache负载均衡

Nginx-代理apache负载均衡一、什么是负载均衡        当一台服务器单位时间访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就容会崩掉。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。        我们可以建立多个服务器,组成一个服务器集群,当用户访问网站时,先访问中间服务器,再让这个中间服务器在服务器集群中选择一个压力

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、什么是负载均衡

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

二、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启动并部署页面

        134135服务器分别启动apache,代码如下:

systemctl start httpd

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

systemctl status httpd

        结果如下( active(running) 说明已经跑起来):
在这里插入图片描述
        访问apache首页:192.168.254.134/135,页面如下:
在这里插入图片描述

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

<!DOCTYPE html>
<html>
<head>
	<title>负载均衡</title>
</head>
<body>
这是192.168.254.134服务器!你好!!!
<!-- 这是192.168.254.135服务器!你好!!! -->
</body>
</html>

        访问 192.168.254.134/test.html192.168.254.135/test.html ,页面如下:在这里插入图片描述
在这里插入图片描述

2.nginx启动

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

systemctl start nginx

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

systemctl status nginx

        结果如下( active(running) 说明已经跑起来):
在这里插入图片描述

3.nginx配置反向代理

        132服务器,进入 /etc/nginx 然后 ls :
在这里插入图片描述
        我们需要修改的是nginx.conf配置文件,替换80端口location节点下的内容,修改内容如下:

location / { 
   
      proxy_pass http://192.168.254.134:80;
}

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

systemctl reload nginx

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

systemctl status nginx

在这里插入图片描述
        那么现在,当你访问192.168.254.132:80/test.html的时候,其实你访问到的是192.168.254.134:80/test.html,如下图:在这里插入图片描述
        反向代理配置完成,接下来我们来配置负载均衡。

4.nginx配置负载均衡

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

upstream test{ 
   
    server 192.168.254.134:80;
    server 192.168.254.135:80;
}

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

location / { 
   
    proxy_pass http://test;
}

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

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掉,能自动剔除。

upstream test{ 
    
	server 192.168.254.134:80; 
	server 192.168.254.135:80; 
} 

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

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的问题。

upstream test{ 
    
	ip_hash; 
	server 192.168.254.134:80; 
	server 192.168.254.135:80;
} 

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

upstream test{ 
    
	server 192.168.254.134:80; 
	server 192.168.254.135:80;
	fair; 
} 

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

upstream test{ 
    
	server 192.168.254.134:80; 
	server 192.168.254.135:80; 
	hash $request_uri; 
	hash_method crc32; 
} 

其他参数说明:

	server 192.168.254.134:80 down; (down 表示当前的server暂时不参与负载) 
	server 192.168.254.135:80 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 
} 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195825.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 模电知识点汇总

    模电知识点汇总根据北航921大纲整理的一些模电知识点:##一:半导体基础###1.定义本征半导体是完全纯净的,没有杂质的半导体。本征半导体有两种载流子,即电子和空穴。但是本征半导体的导电能力较弱并且容易受到温度的影响。在本征半导体中插入高价元素,形成n型半导体。他的多数载流子为电子,少子为空穴。###2.PN结将p型半导体与n型半导体制作在同一片硅片上,它们的交界处形成PN结。多子由于浓度差进行扩散运…

    2022年6月20日
    30
  • Java入门必背100条

    Java入门必背100条Java必背100条1、编写:编写的Java代码保存在以“.java”结尾的源文件中。2、编译:使用javac.exe命令编译java源文件,生成字节码文件。格式:javac源文件名.java3、运行:使用java.exe命令解释运行字节码文件。格式:java类名4、在一个java源文件中可以声明多个class,但是只能最多有一个类声明为public,而且被声明为public的类的…

    2022年7月7日
    21
  • 文件系统的类型「建议收藏」

    文件系统的类型「建议收藏」文件系统类型:ext2:早期linux中常用的文件系统ext3:ext2的升级版,带日志功能RAMFS:内存文件系统,速度很快NFS:网络文件系统,由SUN发明,主要用于远程文

    2022年7月3日
    23
  • python 报表开发工具_自定义报表 开源

    python 报表开发工具_自定义报表 开源BIRT报表是一款非常流行的开源报表开发工具。拥有和Dreamweaver一般的操作界面,可以像画table一样画报表,生成图片,导出Excel,html分页样样齐全,样式和script设置简单。PentahoReportDesigner是一款所见即所得的开源报表设计工具。在设计报表的时候,用户可以随意拖放和设置各种报表的控件,还可以快速方便地设置报表的数据来源。在报表的设计过程中,用户可…

    2022年10月20日
    2
  • c#中重定向windows控制台程序的输出信息

    这个问题来自论坛提问,答案如下.这只是一个简单的ipconfig命令.如果是复杂的,比如oracle的exp之类的命令,能在调用的时候显示出来,还是相当酷的.推荐:http://www.cnblog

    2021年12月27日
    36
  • python中的pop函数和append函数

    python中的pop函数和append函数pop()函数1、描述pop()函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。语法pop()方法语法:list.pop(obj=list[-1])2、参数obj–可选参数,要移除列表元素的对象。3、返回值该方法返回从列表中移除的元素对象。4、实例以下实例展示了pop()函数的使用方法:#!/usr/bin/pythonaList=[123,’xyz’,’z

    2022年6月29日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号