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

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

[复制链接]

尚未签到

发表于 2018-11-15 06:07:44 | 显示全部楼层 |阅读模式
  目前正在学习nginx服务器的相关知识。以下是我的学习记录。
  文章重点记录nginx负载均衡。
  为了实验,我习惯性的先上拓扑图,如下:
DSC0000.png

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


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

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

  • [root@lvs ~]# wget http://nginx.org/download/nginx-0.8.53.tar.gz
  • [root@lvs nginx-0.8.53]# ./configure  --with-http_stub_status_module
  • [root@lvs nginx-0.8.53]# make && make install
  • # --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集群来处理,至于集群会以什么样的方式来处理,后面用到时再说。
  


  • [root@lvs conf]# pwd
  • /usr/local/nginx/conf
  • [root@lvs conf]# vim nginx.conf

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

  • events {
  •         use epoll;
  •         worker_connections  1024;
  • }
  • # use epoll 是指nginx的工作模式,epoll是比较高效的工作模式,对于 #linux/unix平台,
  • epoll是首选模式。# worker_connections 是一个进程的最大连接数。由此即可算出最大的客
  • 户端数量:max_client = worker_processes * worker_connections;

  • http {

  •     listen              80;
  •     server_name         192.168.182.131;
  •     index               index.html;
  •     root                /usr/local/nginx/html;
  •     charset             gb2312;
  •     upstream MyServer {
  •             ip_hash;
  •             server 192.168.182.132:80;
  •             server 192.168.182.133:80;
  •          }
  • server {
  •      location ~* .*.php$ {
  •              proxy_pass          http://MyServer;
  •      }
  •      }
  • }
  

  负载均衡的配置是这里:


  •     upstream MyServer {
  •             ip_hash;
  •             server 192.168.182.132:80;
  •             server 192.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_pass          http://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 的配置如下:
  • [root@lvs3 ~]# yum install httpd -y
  • [root@lvs3 ~]# yum install php -y
  • 不做配置
  • [root@localhost html]# pwd
  • /var/www/html
  • [root@localhost html]# ls
  • test.php
  • 以下是test.php的内容:
  • [root@localhost html]# cat test.php

  • [root@localhost html]#


  • 192.168.182.133 的配置如下:
  • [root@lvs3 ~]# yum install httpd -y
  • [root@lvs3 ~]# yum install php -y
  • 不做配置
  • [root@localhost html]# pwd
  • /var/www/html
  • [root@localhost html]# ls
  • test.php
  • 以下是test.php的内容:
  • [root@localhost html]# cat test.php

  • [root@localhost html]#
  

  整天过程就这样完成了。算是了解了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.yunweiku.com/thread-635088-1-1.html 上篇帖子: Nginx基本安全优化 下篇帖子: Nginx支持PHP环境的两种方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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