学习目标和内容
时间:2009.6-2010.9
发布产品类型:互联⽹动态站点 商城
⽤户数量: 2000-4000(⽤户量猛增 翻了4倍)
PV : 8000-50000(24⼩时访问次数总和)
QPS: 50-100*(每秒访问次数)
DAU: 200-400(每⽇活跃⽤户数)
随着用户量增多,总的页面数量一直在持续增加,可以预料到的是,WEB服务器,压力会越来越大。虽然单台WEB服务器,完全可以完成工作任务。但是如果一旦宕机,用户就完全失去服务了,用户体验特别不好。
需要备用一台服务器进行使用,如果出现宕机,切换为备用服务器
之前架构中,数据库服务器已经单独迁移
针对业务背景下的需求,升级为以下架构
HA是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。
HA 启用备份服务器(backup)
备份服务器:
冷备 服务器不启用(域名不解析),使用的时候再开启,需要手动切换
热备 服务器在等待状态(监控主服务器状态),一旦主宕机,备就接管,自动切换
实现热备,引入VIP的切换
正常来说,VIP绑定在主服务器(master),业务访问的master
master宕机了,VIP就会绑定在备份服务器(backup),业务被切换到备份服务器
让用户无感知,影响较小
VIP 决定了,用户被分发请求到哪个业务服务器
server01 WEB服务器 master 192.168.17.100
server02 数据库服务器 192.168.17.102
server03 WEB服务器 backup 192.168.17.104
以上操作按照之前的步骤进行即可
Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件
Keepalived软件主要是通过VRRP协议实现高可用功能的。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。
使用keepalived进行VIP的实现
使用yum方式安装
master和backup都需要进行安装
shell > yum -y install keepalived
使用目录
keepalived的部署配置文件在/etc/keepalived/keepalived.conf
Mater机器配置(server01)
Backup机器配置(server02)
相关配置简单说明
keepalived中基本设置单位是 vrrp_instance [名称] 代表一个池子
vrrp_instance VI_1 给这个池子起个唯一名称
在两台服务器上都配置 同一个vrrp_instance VI_1后,就意味着两台服务器都加入了同一个池子
在vrrp_instance{}中执行服务器的工作模式,两台机器中一台作为state MASTER,一台作为state BACKUP
在vrrp_instance{}中还需指定使用的网卡,interface eth0 绑定VIP的网卡
另外还需注意的是一个vrrp_instance{}中还必须有一个唯一的virtual_router_id(这个经常在面试中被问到)
在virtual_ipaddress{}中必须有一个VIP(虚拟机ip地址)
virtual_ipaddress{
192.168.17.200
}
通过yum方式安装的keepalived,直接使用service命令进行管理
如果是通过源码包安装的可以使用keepalived -D 参数启动
master的网卡信息
通过keepalived的主备模式,实现默认VIP绑定到了master服务器
master服务器宕机了(关机,断电了,网线断了),VIP会飘移到了backup
抢占模式:
当主服务器恢复之后,VIP会继续回到主服务器
把域名解析到VIP,通过VIP访问到提供服务的服务器
真是业务环境下,可能是服务器整机没有宕机,nginx服务宕机了,监控nginx服务,如果nginx服务宕机,就关闭keepalived。
①分别上传nginx检测服务是否启动脚本
②赋予脚本执行权限,配置keepalived
注意master和backup都要上传修改
当nginx宕机之后,关闭keepalived,VIP进行飘移
Tip:
非抢占模式:
1> 在vrrp_instance块下两个节点各增加了nopreempt指令,表示不争抢vip
2> 节点的state都为BACKUP
两个keepalived节点都启动后,默认都是BACKUP状态,双方在发送组播信息后,会根据优先级来选举一个MASTER出来。由于两者都配置了nopreempt,所以MASTER从故障中恢复后,不会抢占vip。这样会避免VIP切换可能造成的服务延迟。