LVS虽然性能强大,但是有的功能确实比较弱,比如对后端服务器的监测是没有做任何检查的
如果后端的RS全部宕机了
现在就全访问不了了
常见的设置是,可以补一个策略
现在想实现一个功能,加上这个设置,当访问服务器的时候,如果所有服务器宕机,就加一个socketserver(就是所有服务器宕机了,就拿这个机器来道个歉,服务器对应的网站没有跑路,只是在维护,sorry server服务器,可以是lvs服务器自己做
可以通过这个软件来实现
ldirectord可以做到监控后端服务器的状态,后端服务器出故障可以补往那里去调度,直接去lvs的调度列表中把出故障的服务器的那条规则删除,这样就不会往那里去调度 了
需要安装包,epel源里没有,网上找
ftp查出
在lvs服务器上安装包
MHA包也是perl语言
ldirectord。cf=配置文件的模板,复制到ha,d下
现在可以进行修改
这个设置就是检查后端rs的状态的
先启动rs
三秒超时
一秒检查一次
就是1秒钟一次检查后面服务器是否是活动的,如果发现访问不了,这时候就认为出故障了
先把之前设置的删除
这是代表是否配置文件设置了以后自动加载
autoreload=yes 第一次需要启动服务器,修改配置后,自动加载
启动日志功能
如果都宕机了,就准备了sorry server来服务,就把自己LVS作为sorry server
这项是代表发现宕机如何处理,可以是删除那条规则,不去调度,
也可以把权重设置为0,权重最低也就不往那里调度了
yes是删除
no是设置权重为0
先把ipvsadm规则清楚,因为之前是用命令,现在用ldirectord来定义规则
gate代表dr模型,-m是masqured nat模型,后面可以跟权重
检查端口,将来检查后端服务器的健康性,就用对方服务器的端口80,
知道宕机没宕机就去访问index。html,如果能看到返回的字符串,就认为这个页面是正常的
如果没看到rs的字样,就认为是宕机了
后面的就可以删除了
修改配置以后重启服务
根据配置文件定义的规则会自动生成ipvs规则
已经可以了
现在可以不手动配置ipvs规则,只要把ldirectord配置文件改改
现在把一台机器宕机
现在17这个机器就不在了
就一直往rs2上调度了
另外一个全部宕机
sorryserver上线了
访问不了,是因为瞎配置了一个网关
修改lvs服务器网关
涉及为开机启动
vip是通过脚本加的,要想开机启动就放到rc.local
策略是通过ldirectord加的
老sorry不行,还需要上线一个
这个时候就不应该sorry了
这个时候会发现后端服务器遇到大量日志,因为lvs是一秒访问一次
这个是基于端口号,现在来实现防火墙标签的
要想保存还需要记住iptables的保存规则
现在需要修改ldirectord规则,再重新复制一次
换一种语法,基于防火墙标签的语法
protocol=fwm表示基于 防火墙标签实现的
现在只有rs1能够访问,rs2处于宕机状态
启动rs2服务
两个服务器就上线了
现在就可以轮询了
试试sorry server是否成功,把两个机器都宕机了
没有自动加成功
手动加一个
就可以了
再上线一个机器,就不报错了
改成yes试试
】不删除了,只是把权重设置为0
ldirectord可以实现服务器的健康性检查
当后端rs宕机,就不往那里调度,往好的rs调度,就实现了监控性检查,但是现在仍存在巨大问题,
lvs存在单点失败问题
就需要用到keepalived
lvs功能主要起到调度效果
nginx既可以做web服务器,也可以起到调度作用
lvs实现不了看url调度,只针对传输层的
(强大到可以支持应用层的调度
nginx不是特别专业(既可以web又可以做反向代理服务器,功能多,但是有些地方不是做得很好)
,更专业的haproxy,专门做调度集群服务的
、
用户再0-1秒内打开页面是很开心的
再1-3秒。还可以接收
10秒都打不开
1-3-10原则,是腾讯工程师提出来的
httpd三种工作模型,事实上,做起实验来,没有多大改善性能
nginx为什么比apache性能好,就是因为这些底层的东西
面试只要侃住就可以了
**可以做调度也可以做代理
lvs抓包抓过,nat还是dr模型。作为后端的rs看到的都是客户端访问,中间发lvs服务器并没有代替客户端来访问
反向代理,客户端访问反向代理服务器的时候,反向代理服务器会把报文截住,会替你到后面去抓数据,后端的rs会认为是nginx反向代理服务器再访问它(会把数据报文拆开了,以太网报文头部,ip报文头部,传输层报文头不,应用层报文头部,全部拆开,把数据报文再封装自己的报文头部,应用层报文,传输层,封装自己新的ip报文头部,包括数据链路层,再给你发送过去,这时候反向代理就真是代理的效果和lvs不一样
代理工作压力比较大,所以lvs性能较好
**lvs转到nginx