学习目标和内容
时间:2011.6.-2013.9
发布产品类型:互联⽹动态站点 商城
⽤户数量: 4000-8000(⽤户量猛增)
PV : 16000-100000(24⼩时访问次数总和)
QPS: 50-100*(每秒访问次数)
DAU: 400-800(每⽇活跃⽤户数)
随着业务量骤增,之前单活服务器,已经不能够满足业务使用需要,主服务器宕机,备服务器提供服务,因为流量太大,备也宕机。需要多台服务器,同时提供服务
以上架构服务器,已经不能够满足以上提到的业务需求。架构发生如下变化
负载均衡技术 (load blance) 是一种概念 要去把一些资源使用平均分配。
负载均衡:分发流量、请求到不同的服务器。使流量平均分配(理想的状态的)
作用:服务器容灾 流量分发
负载均衡实现方式:
硬件级别 F5 性能好 价格高 几万到几十万不等
软件级别 性价比高
lvs linux下分发软件 四层 ip+port NAT
nginx upstream功能分发 应用层分发 http tcp等等
haproxy 七层负载均衡
一般用 LVS 做四层转发,Nginx做七层转发。
七层可以进行智能的配置,确认图片访问哪个服务器,其他资源访问哪个服务器,对应的图片服务器带宽调整。资源访问服务器也可以对应开启GZIP压缩。
四层的网络层数据转发,没有“请求”的概念。
server01 web1 192.168.17.100
server02 mysql 192.168..17.102
sevver03 web2 192.168.17.104
server04 lb load balance 192.168.17.105
根据之前的配置方式实现以上配置
此处负载均衡使用七层的负载均衡方式,nginx的Module ngx_http_upstream_module
请求先去负载均衡服务器,所以要先解析域名到负载均衡
配置负载均衡,只需要修改做为负载均衡服务器的nginx即可,也就是在架构中的server04服务器
①在server04 load balance 修改配置
负载均衡的nginx不提供页面和php都不进行反回和解析,全部转发代理到后端
②注意web服务器配置,shop的server段一定要在第一项
在server01(web1)和server03(web2)
为了能够看到分发到不同服务器的效果,可以在server01和server03的访问页面中,写入不同的信息,来测试效果。真实的业务环境中,用户是无需知道访问的是哪个服务器。
①在server01和server03的页面文件写入不同的内容
②测试访问效果
当web服务器,有宕机,负载均衡服务器,会自动切换到其他可用服务器,实现心跳检测
nginx 官方默认3种负载均衡的算法
① RR 轮询(默认) 一次一个的来(理论上的,实际实验可能会有间隔)
②weight 权重 权重高多分发一些 服务器硬件更好的设置权重更高一些
server01 web 1 5 1 1 1 1 1
server03 web 2 3 1 1 1
8次中,server01分发5次,server03分发3次
③ip_hash
同一个IP,所有的访问都分发到同一个web服务器
问题:
①验证码校验不通过 访问web1 生成验证码 存储起来,第二次跳转请求转发web2,校验验证码没有存储的值,所有校验不成功。
②是否登录的判断方式,session里的值(uid,username),分发到不同的web服务器,就会造成用户已经登录,但是转发到另外的服务器,就显示没有登录
分析:
图片生成验证码之后,需要写入保存到session(会话机制,默认保存到服务器本地文件中)
①生成验证码存储在了server01 web2
②校验验证码跑多了server03 web2
③验证码值永远都校验不正确
经典问题:多台服务器分布式架构集群中 session如何共享和存储?
①ip_hash
②session入库共享 存储到数据库 memcache redis
③磁盘共享 nfs
server01 web1
server03 web2
之前这两台服务器已经拥有了VIP
在负载均衡配置中,使用真实IP,可以满足需求的,当服务器停止响应,IP会自动踢出配置。nginx本身具有心跳检测,当一台服务器宕机了,切换中理论是有延迟的。
解决方案:
双VIP 负载均衡集群
LB 分发到VIP1和VIP2
默认VIP1绑定server01 web1 如果web1宕机,飘移到web2
默认VIP2绑定server03 web2 如果web2宕机,飘移到web1
语法:
配置两段vrrp_instance 实现两个VIP
互为主备
配置以下服务器
server01 web1
server03 web2
实现双VIP绑定对应的主机
配置负载均衡服务器的分发IP到VIP中
所有的请求流量,都要经过负载均衡服务器,负载均衡服务器压力很大,防止它宕机,导致后端服务所有都不可用,需要对负载均衡服务器,做HA(双机单活)
①克隆配置基本环境
②配置主备服务
server04是master
server05 是backup