710661809 发表于 2018-11-9 13:05:49

Nginx作为动静分离、缓存与负载均衡初探

原创  1、实现内容:
  nginx通过ngx_http_upstream_module模块实现(七层)负载均衡向后端调度主机;可以定义权重,自动检测后端主机健康状态;通过nginx实现负载均衡访问后端服务,两台后端服务提供一致内容;这里是测试 所以人为让两台服务提供不一样的内容以示区别;
  2、实验环境:
  upstream:Centos7 模拟外网ip:172.16.3.152   内网Lan ip:192.168.56.254
  后端节点n1.pkey.cn:
  CentOS7 内网Lan ip:192.168.56.11
  后端节点n2.pkey.cn:
  CentOS7 内网Lan ip:192.168.56.12
  测试客户端:ubuntu 16.04   ip:172.16.3.140
  3、实现架构

  4、两台后台主机配置
  

两台upstream后端主机  
#yum install httpd -y
  
分别
  
#cat /var/www/html/index.html
  
Upstream Server 1
  
Upstream Server 2
  
分别重启两台httpd
  
#systemctl restart httpd
  

  5、nginx调度器配置
  同样也是要配置在http区域,以下是配置
  

# cat /etc/nginx/nginx.conf  
http{
  
...
  
upstream websrvs {   #定义调度 group
  server 192.168.56.11:80;
  server 192.168.56.12:80;
  }
  ...省略...
  }
  

  具体网站负载配置文件
  

cat /etc/nginx/conf.d/pkey.cn.conf  

  
server{
  listen 80;
  server_name www.pkey.cn;
  location /{
  root /data/nginx/html;
  proxy_pass http://websrvs;#引用upstream group
  

  }
  

  
}
  

  测试 :
  以ubuntu测试机上的/etc/hosts中添加
  172.16.3.152    www.pkey.cn
  

san@ubuntu:~$ for i in {1..10};do curl http://www.pkey.cn;done  
Upstream Server 1
  
Upstream Server 2
  
Upstream Server 1
  
Upstream Server 2
  
Upstream Server 1
  
Upstream Server 2
  
Upstream Server 1
  
Upstream Server 2
  
Upstream Server 1
  
Upstream Server 2
  

  从测试结果看默认权重一样的,是轮循高度算法;
  5、upstream 中重要的参数说明
  

  upstream websrvs {   #group
  ip_hash;
  server 192.168.10.11:80 fail_timeout=1 max_fails=3;
  server 192.168.10.12:80 weight=2;
  server 127.0.0.1:80 backup;
  keepalive 32;
  }
  

  #ip_hash 基于访问客户端ip来始终调度到同一个后端服务器;类似于lvs中的sh算法
  #fail_timeout =1 max_fails=3   表示超时1s 最多3次 此台主机失效
  #weight=2    权重为2   默认权重为1
  #backup表示此台主机在所有其他主机都岩机不可访问时 上线,一般用来做临时维护页
  #keepalive   表示调度代理与后端主机每个worker保持多少个连接数
  #down可以人为的让某主机下线,不参与调度
  更多配置参见官方文档另外有些功能是在企业版中才有的!

总结:
  本文对nginx做代理服务器时使用proxy_pass指令;使用phpamin项目实现动静分离;并分别使用缓存提交访问效率;
  结合http模块下的upstream模块来实现对后端服务器的调度,达到七层负载均衡作用;之所以说是七层负载均衡调度方案,因为最新的nginx版本(1.9.2之后)有单独的stream模块可实现类似四层调度负载方案;后期补上!以上不免有遗漏之处,如有错误或遗漏之处,欢迎指正交流~谢谢


页: [1]
查看完整版本: Nginx作为动静分离、缓存与负载均衡初探