首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Centos Nginx负载均衡实验演示

在如今吞吐量很大的互联网时代,用户请求的网站大多都会采用负载均衡的方式来减少web服务器负载,使用户的访问体验更加优秀,种种服务器上集群的高可用,负载均衡技术出现......

今天分享的是NGINX代理的负载均衡配置,

先展示一张一份企业实际的生产环境拓扑图来讲解今天的Nginx负载均衡的实验。

LNMP环境下,也可在LAMP环境下开启叁台虚拟系统(这里,我将三个系统中都要安装好nginx MySQL 和PHP,相应的软件版本按时按照以前的部署版本。{Nginx的1.6.2的stable版本})

实验环境和角色:

虚拟机操作系统:centos 6.5 x64

ip地址: 192.168.8.188/24 (web-1)

ip地址: 192.168.8.189/24 (web-2)

ip地址: 192.168.8.190/24 (nginx代理服务/负载均衡)

其中,192.168.8.190启用nginx的代理服务功能,并在此系统上启用负载均,当用户访问192.168.8.190这个负载代理时,就会用算法来进行循环的在web-1和web-2上对用户操作请求进行处理。

开启3个虚拟操作系统,并且三者间的网络通讯能够互相通讯。

并且三台操作系统上最起码都是配置了Nginx服务,先来看下三台操作系统上的nginx服务器是否是正常的:用IP来进行访问测试

客户端上访问 http://192.168.8.188,页面输出的结果为wiki的页面(这是我上次做的实验结果)

客户端上访问 http://192.168.8.189 ,页面输出的结果为虚拟主机的页面访问。

值得注意是:

在Nginx中,无论是反向代理还是负载均衡,最终还是依靠模块化来实现不同的功能

可以进入官网中,http://nginx.org/,从官网中的文档模块http://nginx.org/en/docs/中 ctrl+f查询关键词:upstream

我们可以看到Nginx中有很多模块,其中主要提供反向代理的功能就是这个upstream的模块(核心)。当然还有一个是proxy 的模块。

我们可以直接进入到:

ngx_http_upstream_module 模块之中:

从官方网站的文档中,我能够直接查询到反向代理的命令配置用法。

关于这个负载均衡的配置模板,我做如下说明:

在负载均衡的模板中,有一个负载均衡的标签, 并起一个标签的名字backend.标签名字的后面都会包含一些企业所运行的服务器名字

而在应用的时候,用server标签里的proxy_pass 跳转到上一个标签的名字(backend) 当跳转到backend服务时,理所当然的会去找web服务。

这里注意的是,当安装IP地址为192.68.8.190这台系统,部署nginx时编译安装时,我们可以发现upstream 这个模块功能默认是开启的:因此就可以认为,在部署Nginx负载均衡时,直接就可以用./configure来进行默认的编译安装。

[root@centos6 nginx-1.6.2]# ./configure --helpgrep upstrea

这里我为了实现标准统一化,我在192.168.8.190上采用了Nginx web方式的参数的进行编译安装nginx。

这里的部署安装我就省略了,前文已经做过详细分享了,这里我把192.168.8.1这台系统已经做好了Nginx代理

配置nginx负载均衡

[root@centos6 conf]# pwd

/application/nginx/conf

按照浏览方便清晰的习惯,我将Nginx的默认配置文件中的空行,#开头的过滤掉,并 追加到Nginx.conf文件中。

这样的话,我等一下编辑nginx.conf文件就会一目了然:

接下来,我就要配置Nginx的负载均衡了,我从官方文档中能够得知到upstream 的配置是是放在http标签下面的。

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

将官方文档中的Example:中的一个例子粘贴进来

upstream backend { server backend1.example.com weight=5; server 127.0.0.1:8080 (可用IP地址,也可用域名地址) max_fails=3 fail_timeout=30s; (检查负载均衡器时

如果出现三次失败的情况且超时30s就会强制退出。) server unix:/tmp/backend3; (sock的意思), server backup1.example.com backup; (备份的功能)}

并且做一个向后抛的一个配置:这里的proxy_pass 后面的标签代表的意思将代理请求抛给上面的backend服务名称。

location / {

proxy_pass http://backend;

index index.html index.htm;

}

如图:

这里我们能看到的是backend 这里抛给了上面的backend 实际上就交给了192.68.8.188和192.168.8.189

实际上proxyd_pass模块实际上是proxy的模块:

如果想把这个服务弄精通,还是必须要把官方文档详细把握。

通过负载均衡算法得出的结果分配给各服务器。这个算法我们可以在官方文档中查询:关于负载均衡的算法默认的是轮询算法。

关于这个轮询算法的原理就是:当客户端数据请求到达服务器时,一个会给188一个会给189.

配置完这个文件之后需要保存以下,并检查语法。

[root@centos6 conf]# /application/nginx/sbin/nginx -t

检查语法正确后,平滑重启nginx:

[root@centos6 conf]# /application/nginx/sbin/nginx -s reload

测试前不要忘记在本机的host文件中进行修改,并进行域名测试:

最终的测试的目的:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171219G0VMCB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券