设为首页 收藏本站
查看: 949|回复: 0

[经验分享] 通过Nginx实现负载均衡

[复制链接]

尚未签到

发表于 2017-7-9 14:03:12 | 显示全部楼层 |阅读模式
  百度了下负载均衡:英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务
  嗯,跟我理解差不多:如果你的网站请求很多(是“很多”),造成什么结果呢?响应速度变慢(每个请求都是要创建线程去执行的,而一台服务器能同时开辟的线程数是有限的),严重的服务器崩掉。
  如何解决呢?
  办法一:更换服务器,换台牛逼点的呗,4核换8核,8核换16核,16核....额,那这样是不是很贵啊? 这是肯定的,所以呢
  办法二:不换服务器,加服务器,多弄几天价廉的服务器,这也是一种解决办法。将请求分散到不同的服务器上,这样一来,压力平摊了,多好。 老板说:这个好,这个好。
  针对办法二,最关键的一点就是如何将请求分散到不同的服务器上,这需要一种算法,最最简单的可以弄个随机算法,我之前在分布式存储图片中提到过:



var list = db.ImageServerInfo.Where<ImageServerInfo>(c=>c.State==1).ToList();
int serverCount = list.Count();
Random r = new Random();
int i = r.Next();
int j = i%r;
//获取状态为1(normal)的图片服务器总数,随机数去对其取余。得到的就是我们的随机索引,于是就可通过list[j]去获取ServerId,然后再去获取ServerIP
  但上面这段代码有下面几个问题:
  1、语言限制,如果是前端请求,得写段同样的JS代码。
  2、算法太low,效率低。
  那么有没有一个通用的玩意儿可以实现这个呢。答案就是我们的Nginx——反向代理服务器
  请求流程:
  我们不直接请求我们的服务地址,而是请求Nginx地址,由Nginx作为一个中转站,将请求经过处理后发送到服务地址。这个处理就是经过Nginx的算法然后将请求导向到确定的某个服务地址,也就是上面说到的具体某台服务器地址。
  如何做的,很简单,首先下载Nginx,百度即可。
DSC0000.png

  下载后,更改下配置文件即可:
DSC0001.png

  找到里面server这个节点:设置默认端口的,我这里设置成了82,因为80这么好的端口,不能给它
DSC0002.png

  控制台命令开启Nginx服务
DSC0003.png

  或者直接双击Nginx.exe开启也可。
  浏览器输入:localhost:82,即可看到我们的Nginx开启成功
  然后剩下就是配置的事情了,添加节点 取名为 zjgistdt.com,#为注释,所以我们这里就两个服务地址。即对应我们的两台服务器地址



upstream zjgistdt.com{   #服务器集群名字
#server  192.168.1.186:8081 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的
#天地图后台局域网测试
server 192.168.0.202:9078 weight=1;
server 192.168.0.38:9012 weight=1;
}
  然后在server节点处进行关联:



server {
listen       82; #监听82端口,80被占用
server_name  localhost;
#charset koi8-r;
#access_log  logs/host.access.log  main;
#location / {
#   root   html;
#   index  index.html index.htm;
#}
location / {
proxy_pass http://zjgistdt.com;#请求转向zjgistdt.com定义的服务器列表
proxy_redirect default;
}
}
  至此,你请求Nginx服务器即转向zjgistdt.com定义的服务器列表。
  配置完成...简单爆炸。
  部署Nginx的这台机子ip为:192.168.0.30,而我们设置的端口号为82,
  所以一切基于192.168.0.30:82/.....的请求都将转向我们真实的两台服务器地址。
  至此,所谓的负载均衡也就”完事儿“了,当然,我们的Nginx能做的远不止于此,如Nginx直接返回静态资源等等,就是你有需要再去拓展的东西,操作都是配置节点即可。
  拓展:其实Nginx算是一种节约成本的方式,如果有钱可以部署多个Nginx,然后用企业级的负载均衡服务器来在Nginx上再加一层。如f5负载均衡器
  负载均衡是一种技术,指通过某种算法实现负载分担的方法。通俗的讲就是统一分配请求的设备,负载均衡会统一接收全部请求,然后按照设定好的算法将这些请求分配给这个负载均衡组中的所有成员,以此来实现请求(负载)的均衡分配。
F5是负载均衡产品的一个品牌,其地位类似于诺基亚在手机品牌中的位置。除了F5以外,Radware、Array、A10、Cisco、深信服和华夏创新都是负载均衡的牌子,因为F5在这类产品中影响最大,所以经常说F5负载均衡。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-391985-1-1.html 上篇帖子: 运维学习笔记(七)之T02-01计算机网络 、 数制 、 网络通信参考模型 下篇帖子: DTMF的原理分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表