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

[经验分享] nginx 负载均衡与location应用分析 简单实验

[复制链接]

尚未签到

发表于 2016-12-26 12:06:27 | 显示全部楼层 |阅读模式
参考:软件级负载均衡器(LVS/HAProxy/Nginx)的特点和对比



  文章重点记录nginx负载均衡。
  为了实验,我习惯性的先上拓扑图,如下:
DSC0000.png

  我们的案例需求如下,前端nginx做负载均衡,并处理静态页面,使用location查询过滤将动态页面交由后端apache服务器集群做处理。并由nginx回显内容输出。
  nginx负载均衡服务器安装配置:


  • [iyunv@lvs/]#rpm-qa|greppcre
  • pcre-devel-6.6-2.el5_1.7
  • pcre-6.6-2.el5_1.7

  • #pcre的作用是为nginx提供兼容perl的正则表达式,使nginx支持HTTP Rewrite模块.

  • [iyunv@lvs~]#wgethttp://nginx.org/download/nginx-0.8.53.tar.gz

  • [iyunv@lvsnginx-0.8.53]#./configure--with-http_stub_status_module
  • [iyunv@lvsnginx-0.8.53]#make&&makeinstall
  • # --with-http_stub_status_module 可以用来启用nginx的nginxStatus功能,以监控
  • nginx当前状态。



  在继续配置之前,需要先了解我们要做什么。我只想做个基本的实验来看下nginx的负载均衡是如何工作的,所以我的实验设计是这样的。
  当我们访问192.168.182.131/index.html 时,由于是静态页面,交给nginx本身处理,如果我们访问192.168.182.131/test.php时,配置location匹配 .php 后缀,并交由后端apache集群来处理,至于集群会以什么样的方式来处理,后面用到时再说。


  • [iyunv@lvsconf]#pwd
  • /usr/local/nginx/conf
  • [iyunv@lvsconf]#vimnginx.conf

  • usernobody;
  • worker_processes1;
  • #指定nginx要开启的进程数,建议一个CPU的内核就处理一个进程,所以如果是4核CPU,就指定4个进程数。

  • events{
  • useepoll;
  • worker_connections1024;
  • }
  • #useepoll是指nginx的工作模式,epoll是比较高效的工作模式,对于#linux/unix平台,

  • epoll是首选模式。#worker_connections是一个进程的最大连接数。由此即可算出最大的客

  • 户端数量:max_client=worker_processes*worker_connections;

  • http{
  • server{
  • listen80;
  • server_name192.168.182.131;
  • indexindex.html;
  • root/usr/local/nginx/html;
  • charsetgb2312;
  • upstreamMyServer{
  • ip_hash;
  • server192.168.182.132:80;
  • server192.168.182.133:80;
  • }
  • location~*.*.php${
  • proxy_passhttp://MyServer;
  • }
  • }
  • }

  负载均衡的配置是这里:



  • upstreamMyServer{

  • ip_hash;

  • server192.168.182.132:80;

  • server192.168.182.133:80;

  • }
  这里有个地方需要注意,ip_hash是什么呢?上面我说的要求我们再看一次:当我们访问192.168.182.131/index.html 时,由于是静态页面,交给nginx本身处理,如果我们访问192.168.182.131/test.php时,配置location匹配 .php 后缀,并交由后端apache集群来处理,至于集群会以什么样的方式来处理,后面用到时再说。


  • ip_hash就是upstream的调度算法之一,以下列举nginx所支持的常用的3种调度算法:

  • ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。

  • 轮询:每个请求按访问顺序分配不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。

  • weight:指定轮询权值,weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

  而location的应用,案例中只举了很简单的用法:



  • location~*.*.php${

  • proxy_passhttp://MyServer;

  • }


  • 首先应用了解location的几个匹配符:
  • 1=严格匹配这个查询。如果找到,停止搜索
  • 2^~匹配路径的前缀,如果找到,停止搜索
  • 3~为区分大小写的正则匹配
  • 4~*不区分大小写的正则匹配

  • 所以,代码中
  • location~*.*.php$的意思就是,将.php结尾的url链接,发送到http://MyServer
  • 后端服务器去处理,让后端去处理。
  • 关于location的更深入理解可以看这篇文章: http://blog.csdn.net/fengmo_q/article/details/6683377

  配置后端apache集群服务器:


  • 192.168.182.132的配置如下:
  • [iyunv@lvs3~]#yuminstallhttpd-y
  • [iyunv@lvs3~]#yuminstallphp-y
  • 不做配置
  • [iyunv@localhosthtml]#pwd
  • /var/www/html
  • [iyunv@localhosthtml]#ls
  • test.php
  • 以下是test.php的内容:
  • [iyunv@localhosthtml]#cattest.php
  • <?php
  • print"192.168.182.132";
  • ?>
  • [iyunv@localhosthtml]#


  • 192.168.182.133的配置如下:
  • [iyunv@lvs3~]#yuminstallhttpd-y
  • [iyunv@lvs3~]#yuminstallphp-y
  • 不做配置
  • [iyunv@localhosthtml]#pwd
  • /var/www/html
  • [iyunv@localhosthtml]#ls
  • test.php
  • 以下是test.php的内容:
  • [iyunv@localhosthtml]#cattest.php
  • <?php
  • print"192.168.182.133";
  • ?>
  • [iyunv@localhosthtml]#

  整天过程就这样完成了。算是了解了nginx的负载均衡的大致过程 。以后再深入学习。这篇学习笔记就到此为止啦。

运维网声明 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.iyunv.com/thread-319728-1-1.html 上篇帖子: nginx 按网站用户尾号设置白名单 下篇帖子: windows平台的nginx+apache+php+discuz 环境配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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