首先需要道个歉,由于个人时间原因导致rabbitmq不能继续续写简单入口文章,所以今天就发一篇之前写的一篇nginx负载均衡文章,比较简单入门的,那么下面开始了。

安装Nginx

Centos7 安装Nginx

第一种方式:通过yum安装

本机安装版本:nginx version: nginx/1.12.2

工具 :VMware虚拟机 安装好一个环境 然后在完整克隆两个nginx的环境即可。

总体实现结果是这样的:

打开网易新闻 查看精彩图片

负载概念:
负载均衡:把众多的访问量分担到其他的服务器上,让每个服务器的压力减少。
通俗的解释就是:把一项任务交由一个开发人员处理总会有上限处理能力,这时可以考虑增加开发人员来共同处理这项任务,多人处理同一项任务时就会涉及到调度问题,即任务分配nginx在这里的角色相当于任务分配者。

网上找一张图片为了方便看的更清楚一下:

打开网易新闻 查看精彩图片

直入正题

测试环境
A服务器IP :192.168.153.128 (主服务器作为分发接口请求)
B服务器IP :192.168.153.129 负载服务器1
C服务器IP :192.168.153.130 负载服务器2

负载的大致思路:

A服务器做为主服务器,域名直接解析到A服务器上,由A服务器负载均衡到B服务器与C服务器上等等其他服务器。

打开网易新闻 查看精彩图片

PS:箭头部分的必须相同一致

Server1可以随意配置的。

upstream指令主要是用于设置一组可以在proxy_pass(代理)和fastcgi_pass(处理动态资源数据)指令中使用代理服务器,默认均在均衡方式为轮询。

weight权重:
通俗的讲就是,对服务器性能的区分,权重高的,负载的压力就大一些。

打开网易新闻 查看精彩图片

上面使用两条ip 都是使用weight=1,是因为方便后面观察负载到某一个服务器,更直观。

上面使用ip_hash的方法解析:

打开网易新闻 查看精彩图片

有一种情况是的:当用户第一次登录了,可能在一台服务器上产生了登录信息,当再一次刷新页面时,有可能被负载到另一台服务器,导致信息丢失,ip_hash如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。

fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

打开网易新闻 查看精彩图片

B与C的服务器的nginx配置:

打开网易新闻 查看精彩图片

然后重新启动nginx的配置。

浏览器访问A服务器的ip:192.168.153.128 效果如如下

打开网易新闻 查看精彩图片

这里是为了区分访问的是那一台服务器,分别更改了index.html的代码区分开来。

到这里简单的负载均衡就搞定了。当然可能对于生产环境使用,我们还要考虑其他的性能问题,正常来说A服务器属于一个分发点,如果a宕机了,则后面的负载就没有用了,这时候就可以使用路由器,A的分发器可以有多台来操作,这样通过路由器来分发给A+服务器,A+服务器又分发给下面的服务器,这样如果A服务器中的一个宕机了,不影响正常的运转。

总结:这是一个再多台虚拟机上简单实现的负载,正常的工作企业肯定不是这样的,那么它会是一台路由分发器分发到多台主机上,再由主机负载到一群服务器上。比如使用LVS+KeepAlived(linux虚拟服务器)来实现集群的负载均衡等等!

打开网易新闻 查看精彩图片

每一天的清晨,对着阳光,告诉自己,今天还要继续努力;因为要生活,就要努力争取!