现有问题及解决方案
HA high avaliable 高可用
问题:
1、lvs单点故障问题
2、RS挂了,lvs还有这个RS的负载记录单点故障的解决方式:一变多
形式a)主备
形式b)主主
结论:VIP只能有一个,主备实现
如何选主 Paxos一致性算法RS挂了,怎么确定baidu挂了?
回答:ping 不对的!
访问一下->等层:验证的是应用层的http协议->发请求,判断返回 200 oklvs:内核中有模块:ipvs <- 增加代码?第三方实现? 第三方:人为操作,响应,最不靠谱 企业追求自动化~ 把人解耦出去~用程序替代->keepalived!
代替人自动运维,解决单点故障,实现HA
1、监控自己服务
2、Master通告自己还活着,Backup监听Master状态,Master挂了,一堆Backup推举出一个新的Master
3、配置:VIP,添加ipvs,keepalived是有配置文件
4、对后端server做健康检查
*,keepalived是一个通用的工具,主要作为HA实现:
nginx,可以作为公司的负载均衡来用,nginx成为了单点故障
也可以用keepalived来解决
实现物理架构图
清理node01的lvs配置
ipvsadm -C
ifconfig ens33:2 down
安装keepalived和ipvsadm
yum install keepalived ipvsadm -y
配置keepalived
/etc/keepalived/keepalived.conf
cd /etc/keepalived
cp keepalived.conf keepalived.conf.bak
vi keepalived.conf
vrrp: 虚拟路由冗余协议!
node01:
man keepalived.conf
vrrp_instance VI_1 {
state MASTER #node04 BACKUP
interface ens33
virtual_router_id 51
priority 100 #node04 50
advert_int 1 ##设置同步时间间隔
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.213.100/16 dev ens33 label ens33:3 #DR模式要保障真实服务器和lvs在同一网段
}
}
virtual_server 172.16.132.100 80 {
delay_loop 6 #健康检查时间间隔,单位s
lb_algo rr #负载均衡调度算法设置
lb_kind DR #负载均衡转发规则
persistence_timeout 0 #会话保持时间,单位s。生产选择一个合适的值
protocol TCP
real_server 172.16.132.132 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.16.132.133 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
scp ./keepalived.conf node04:`pwd`
# 拷贝完成后,修改不同地方
验证
思考
为解决lvs单点故障问题,引入了keepalived,但是keepalived也是不可靠的。
引入zookeeper集群来监控keepalived。
zookeeper被认为是可靠的(没有绝对的可靠,zookeeper需要过半存活)
ZAB协议
PAXOS一致性算法
布鲁斯调皮了
学习了
永远的神!