一、集群介绍:
将多个物理机器组成一个逻辑计算机,实现负载均衡和容错
组成要素:
1) VIP: 虚IP,一个IP地址,给分发器用的,谁拿到谁就是分发器
2) 分发器: nginx
3) 数据服务器: Web服务器
二、搭建一个基本Nginx集群
在该集群中的Nginx扮演的角色是:分发器
任务:接收请求、分发请求、响应请求
- 功能模块
1) ngx_http_upstream_module 基于应用层分发模块,七层分发器,我们这里用的是这个
2) ngx_stream_core_module 基于传输层分发模块(1.9开始提供)四层分发器
- 配置一个Nginx集群
1) nginx安装:略
2) 配置业务服务器页面:
3) 配置nginx分发器
4) 测试分发
目标:访问分发器就能拿到数据
三、Nginx基本分发算法
集群分发算法介绍
如何将用户请求按一定规律分发给业务服务器
Nginx集群默认算法(upstream支持的)
- 轮询(默认) -适用于静态资源,账号到一个服务器,密码到另一台服务器就没法验证
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
- weight(权重) -适用于静态资源
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
- ip_hash -适用于动态资源
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
- fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
- url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
四、Nginx分发的不同应用场景
1) 基于host分发
2) 基于开发语言分发
3) 基于浏览器的分发
4) 基于源ip
五、高可用
- 高可用要解决的问题:
- 如何实现高可用?
1、 在主分发器和备用分发器上安装keepalived服务
2、 服务器的容错由Nginx完成,配置
- keepalived实现分发器切换的原理
主分发器优先级比备分发器优先级高
keepalived启动之后,会产生一个虚IP,刚开始虚IP在主分发器上
主分发器挂了,虚IP就出现在备分发器上,主分发器恢复,虚IP又回到主分发器
keepalived使用vrrp协议,主分发器向网络发组播,地址224.0.0.18 广播自己的状态(是否活着),
备份分发器收到广播后,发现优先级比自己大的还活着,自己就待机,
否则在多长时间内没收到组播,就向虚IP发请求确认,确认主分发器挂了,就启动自己,自己获得虚IP
keepalived每隔2秒探测一次nginx服务,执行脚本:
<"如果nginx挂了,就启动Nginx,如果启动失败,就把自己结束">
- 安装keepalived软件
- keepalived配置文件
1) 主分发器:
! Configuration File for keepalived global_defs { router_id NGINX_DEVEL } vrrp_script check_nginx { script "/etc/keepalived/nginx_pid.sh" interval 2 fall 1 } vrrp_instance nginx { state MASTER interface ens33 mcast_src_ip 192.168.10.40 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } track_script { check_nginx } virtual_ipaddress { 192.168.10.213/24 } }
主分发器keepalived配置
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx集群 - Python技术站