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]