1.反向代理应用
负载均衡&反向代理
nginx在AKF扩展立方体的应用:https://www.jianshu.com/p/d08d0c14810f
X轴代表无差别的克隆服务和数据库。不同的服务器可以通过不同调度算法来分发请求
Y轴基于URL对业务做拆分,如图片文本URL分离
Z轴通常基于请求或客户的信息进行分割。如根据用户IP或其他信息映射到某个特定的服务或集群
1.X轴扩展
优点:成本最低,实施简单;
缺点:受指令集多少和数据集大小的约束。当单个产品或应用过大时,服务响应变慢,无法通过X轴的水平扩展提高速度;
场景:发展初期,业务复杂度低,需要增加系统容量。
2.Y轴扩展
优点:可以解决指令集和数据集的约束,解决代码复杂度问题,可以实现隔离故障,可以提高响应时间,可以使团队聚焦更利于团队成长;
缺点:成本相对较高;
场景:业务复杂,数据量大,代码耦合度高,团队规模大。
3.Z轴扩展
优点:能解决数据集的约束,降低故障风险,实现渐进交付,可以带来最大的扩展性。
缺点:成本最昂贵,且不一定能解决指令集的问题;
场景:用户指数级快速增长。
多种协议的反向代理
反向代理与缓存
2.负载均衡模块
upstream
模块名称 http_upstream_module(默认)
模块功能 定义上游服务器集群,然后可以被各种协议引用(proxy_pass,fastcgi_pass等)
upstream 定义负载均衡集群
server 定义集群中的上游服务器地址
参数
weight 服务器权重值,默认是1
max_conns server的最大并发连接数,用于单worker进程,默认0无限制
max_fails 在fail_timeout时间段内,最大的失败次数。当达到最大失败时,会在fail_timeout秒内这台server不允许被选择
fail_timeout 单位为秒,默认值为10秒;指定一段时间内,最大的失败次数max_fails;到达max_fails后,该server不能访问的时间
Round-Robin 轮流处理分发用户请求 server IP;默认weight值为1
加权Round-Robin 根据服务器性能分配权重,通过weight来定义权重值
算法配置 server xxx weigh=X …;
算法实例
server {
listen 8001;
default_type text/plain;
return 200 '8001 server response.\n';
}
server {
listen 8002;
default_type text/plain;
return 200 '8002 server response.\n';
}
upstream server
upstream rrtest {
server 192.168.217.155:8001 weight=2 max_conns=2 max_fails=2 fail_timeout=5;
server 192.168.217.155:8002;
keepalive 32;
}
server {
listen 80;
server_name rrtest.pl.com;
location / {
proxy_pass http://rrtest;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
测试
tcpdump -i ens192 port 8001 -v 查看http长连接是否生效
[root@www ~]# curl rrtest.pl.com
8001 server response.
[root@www ~]# curl rrtest.pl.com
8002 server response.
[root@www ~]# curl rrtest.pl.com
8001 server response.
[root@www ~]# curl rrtest.pl.com
8001 server response.
[root@www ~]# curl rrtest.pl.com
8002 server response.
查看头
[root@www ~]# curl -I rrtest.pl.com
HTTP/1.1 200 OK
Serve