6.5 lvs
负载均衡集群运行维护
当我们把所有的配置做好并通过各项功能测试后,就可以把这个集群环境正式运行起来(这里忽略其它处理过程),但这并不意味着万事大吉。要使负载均衡环境真正的高可用并符合业务需求
,
还有事情需要去做的。这些事情包括:负载均衡环境中对象新增、变更及删除,状态监控,故障的排查处理等。
6.5.1
对象新增、变更及删除
这里的对象包括
vip
、真实服务器、服务(
vip+
端口号)等。从前面的事例可以得知,一对负载均衡器,可以承担多个服务的转发任务,因此在运行过程中,很可能因为业务本身的变化而新增、变更或删除对象。比如:某个服务负载趋于饱和,需新加服务器;有些业务下线了,需要从转发队列中把服务删除掉。
对象增加、变更及删除的操作,涉及负载均衡器和真实服务器。在负载均衡器方面,主要的操作就是修改
keepalived
的配置文件
keepalived.conf
;在真实服务器上,进行的操作主要是编写
lvs
配置脚本、运行或者关闭这个配置脚本。
在有
2
个负载均衡器的
lvs
环境,所作的配置文件
keepalived.conf
变更操作要在这两个服务器上都进行一遍,以保持配置和服务的一致性。
当我们进行对象增加、变更或删除的操作时,只要注意好执行的先后顺序,就能保证提供的服务不中断,用户的正常访问不受影响。
●
对象新增
假定在负载均衡环境新增一个
web
服务器,其操作顺序是:
1、
启用新增服务器的
web
服务。
2、
启用新增服务器的
lvs
客户端配置脚本。
3、
检验“
1
”和“
2
”两步的正确性。
4、
修改负载均衡器的配置文件
keepalived.conf
。
5、
关闭第一个
lvs
负载均衡器,所有的转发服务将切换到另外一个负载均衡器上。
6、
启用“
5
”关闭的那个负载均衡器,然后关闭“
5
”中还在运行的那个负载均衡器。
7、
重新启动“
6
”所关闭的负载均衡器。
●
删除对象
假定在负载均衡环境删除一个
web
服务器,其操作顺序是:
1、
关闭欲下线服务器的
web
服务。这样负载均衡器的健康检查会自动把该
web
服务从转发队列删除掉。
2、
卸载欲下线服务器的
vip
地址。即执行
/usr/local/bin/lvs_real stop
操作。
3、
修改负载均衡器的配置文件
keepalived.conf
。
4、
关闭第一个
lvs
负载均衡器,所有的转发服务将切换到另外一个负载均衡器上。
5、
启用“
4
”关闭的那个负载均衡器,然后关闭“
4
”中还在运行的那个负载均衡器。
6、
重新启动“
6
”所关闭的负载均衡器。
●
变更对象
与前两种方式的操作步骤基本相似,不再赘述。
这里再强调一下,如果真实服务器上的服务没关闭而把其上的
vip
卸载的话,某些用户的请求仍然会被负载均衡器转发过来,导致请求失败。因此,要记住,无论如何,请先关服务!
6.5.2
状态监控
为了随时随地了解整个
lvs
负载均衡环境的运行情况,我们必须对其进行有效的监控。当出现异常或故障时,监控系统能及时有效的通知维护人员,以便问题得以及时地处理。这也是提高可靠性的一个保障措施。
有很多开源的或商业类型的监控系统可供选择,本书选定开源的
nagios
作为监控平台,关于
nagios
的相关细节,请参照“网络服务及主机资源监控
-nagios
”一章。
可供
nagios
监控的对象很多,对
lvs
负载均衡环境而言,怎么选定对象才是最有效的呢?这里我们先来回顾一下
lvs
负载均衡环境运行时,其存在的表现形式有哪些?
1、
负载均衡器及真实服务器。
2、
各真实服务器上运行的服务。
3、
Lvs
公用的
vip
。
根据这些表现形式,我们选取存活检查及服务状态作为监控对象,就可以清晰地了解
lvs
负载均衡环境的运行状况。把它具体化,可分为:
1、
负载均衡器及真实服务器的存活检查。只有这些服务器运行正常,才可能有其他依赖服务。
2、
Vip
的存活检查。一般情况下,启用了
lvs
环境后,是可以用
ping
的方式检查
vip
的。
3、
真实服务器服务状态检查。
4、
Vip
对应的服务状态检查。一般通过
check_tcp
加端口号的形式实现。如果
web
集群,可以以
check_http!url
的方式更精确的检查。
6.5.3
故障处理
在对
lvs
运行环境进行有效的监控后,一旦有故障或异常发生,系统管理人员将会得到及时的通知。并且这些报警信息往往包含故障的基本情况,如负载过高、主机
down
了、服务严重不可用(
critical
)、磁盘空间快满了等等,这些信息非常有利于系统管理员定位故障点。如果没有一个有效的监控系统,故障的报告往往来自用户的报告。这些报告笼统而模糊,可能包含“你们的网站不能访问了”之类的字眼,要定位故障点,可能会花费更多的时间。
在知晓和定位故障以后,结下来就是分析和处理故障。
Lvs
负载均衡的故障点可分为:负载均衡器故障、真实服务器故障、
vip
故障、服务故障这几个部分。这些故障出现后,怎么着手处理?下面分别论述之。
●
负载均衡器发生故障的检查点
1、
查看系统日志
/var/log/messages ,
了解内核是否有报错信息。因为
keepalived
的日志也被追加到系统日子,因此通过系统日志,也能了解
keepalived
的运行情况。
2、
检查负载均衡器的网络连通状况。这包括
ip
地址的设置是否正确,是否能远程访问(如
ping
、
tracert
等)。
3、
检查
keepalived
的运行情况。这包括进程是否处于运行中,
ipvs
模块是否被加载到系统的内核,
vip
是否被绑定到网络接口,
ipvsadm
是否有输出。
4、
检查负载均衡器的系统负载。
5、
检查
keepalived
的配置文件书写是否正确。因为
keepalived
启动过程不对配置文件做语法检查,因此在运行前,必须按需求表逐项检查配置文件
keepalived.conf
的内容。有时,就可能就是因为漏写了一个“
}
”符号而导致意外的结果。配置文件的内容检查还包括主从优先级
priority
、虚拟路由标识
virtual_router_id
、路由标识
router_id
等几个部分,这些值有些是必须相同的、有些则必须不同。
6、
检查负载均衡器是否启用防火墙规则。
●
真实服务器发生故障的检查点
1、
查看系统日志
/var/log/messages ,
了解内核是否有报错信息。
2、
检查服务器的网络连通状况。
3、
检查服务是否正常运行。可以结合察看进程、模拟用户访问来确定。
4、
检查服务器的负载情况,看哪些进程占用较高的资源。如果暂停占资源高的进程,情况会怎么样?
5、
检查
vip
是否被绑定。
Linux
只能通过
ip add
指令察看,
freebsd
用
ifconfig
就可以了。
6、
检查主机防火墙是否被启用。如果需要启用主机防火墙,则应设置好过滤规则。
7、
从客户端直接访问服务器的服务,看是否能正常访问。这是
dr
模式的一个优点。
●
vip
发生故障的检查点
1、
检查负载均衡器的
vip
是否被绑定。
2、
检查负载均衡器
ipvsadm
的输出,察看输出的
vip
项是否与我们的设定相一致。
3、
检查各真实服务器的
vip
是否被绑定。
4、
从客户端测试一下
vip
的连通情况,如
ping vip
。
5、
检查
vip
地址是否与其它服务器的地址相冲突。
●
服务发生故障检查点
1、
检查服务是否正常运行。如查进程、模拟用户访问等。
2、
检查系统的负载情况。
3、
检查是否启用主机防火墙。
一旦知道问题的所在,解决问题本身就不再是什么困难的事情了,因此这里不再一一列举对应的解决方法。
6.5.4
数据备份
Lvs
负载均衡环境需要备份的数据包括
keepalived
配置文件和
lvs
客户端配置脚本。因为这两个文件都是文本文件,并且尺寸小(几
k
而已),因此可以以复制的方式进行备份。如果把备份放在
windows
环境的话,尽量不要用
word
、写字板一类的工具修改它。如果用
windows
的
word
之类的工具编辑这两个文件,上传到
linux
服务器时,会出现格式问题,而导致运行错误。当然,可以用
dos2unix
修正格式,或者在
vi
的命令模式下,以“
:set ff=unix
”方式转换格式。