目录
3.8 模拟node01中LVS挂掉,node04中LVS接管服务
1.写在前面
因为我们之前是手动搭建的LVS模块,现在我们需要将node1中都删掉,这个动作,后面我们是由keepalived的配置文件搭建的。(只需要重启机器即可清除,或者使用ipvsadm命令)
清除掉子接口eth0:2
并且我们的两个RS服务器均配置好了隐藏vip,通告响应级别也调整好了,httpd也已经启动了,这两个RS我们不需要处理,今天主要是扩展一个LVS服务器,使用keepalived调节,实现负载均衡。
2.keepalived的安装和配置文件说明
2.1 安装概述
keepalived是用户空间的一个程序,这个程序会在主LVS上面启动一个,备用LVS上面启动一个。LVS就是一个转发中心,没有心跳健康检查的能力,需要借助keepalived,也就说每台服务器自己的keepalived为自己的LVS做检查,其中第一条keepalived配置成主LVS,向外广播自己还活着的消息,这个功能是有keepalived实现的,并不是LVS上实现的。当主LVS挂掉之后,备LVS会接管,当主LVS修复之后,会重新成为管理,所以我们一般备用服务器配置不如主LVS。
2.2 keepalived配置文件说明
[root@lb01 keepalived]# man keepalived.conf -配置文件说明信息
配置文件结构:
GLOBAL CONFIGURATION --- 全局配置
VRRPD CONFIGURATION --- vrrp配置
LVS CONFIGURATION --- LVS服务相关配置
[root@lb01 keepalived]# cat keepalived.conf
! Configuration File for keepalived ---注释内容,说明此文件为keepalived配置文件
global_defs { ------全局配置
notification_email { -------定义服务故障报警email地址信息,当服务发生切换或RS节点发生故障时,发送报警邮件
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected] --定义报警邮件地址
smtp_server 192.168.200.1 --- 定义发送报警邮箱服务器信息
smtp_connect_timeout 30 --- 定义发送报警邮件连接服务器超时时间
router_id LVS_DEVEL --- 定义路由标识信息,相同局域网唯一
}
vrrp_instance VI_1 { ---- 定义keepalived实例信息,主备节点实例标识相同
state MASTER ---- 定义实例中的主备状态角色(MASTER/BACKUP)
interface eth0 --- 设置主备服务器虚IP地址放置网卡位置
virtual_router_id 51 --- 虚拟路由ID标识,不同实例不同ID,主备相同
priority 100 --- 设置抢占优先级,优先级高为主,优先级低为备
advert_int 1 --- 主备间通讯间隔
authentication { --- 主备间通过认证建立连接
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { --- 定义主备服务器之间的虚IP地址信息
192.168.200.16
192.168.200.17
192.168.200.18
}
}
3.安装细节
3.1 node01使用yum安装keepalived
在/etc/keepalived中我们可以找到keepalived的配置文件:keepalived.conf文件,我们暂且将其拷贝一份做一个副本。当我们修改配置文件如果改错了,删掉,直接用备份文件就行。
3.2 开启一个node04做为LVS服务器
使用yum安装keepalived和ipvsadm,ipvsadm可以查询负载情况。
3.3 node01中修改 keepalived配置文件
修改主配服务器虚拟IP信息:
修改虚拟服务器信息:
node01中保存keepalived的配置文件。
3.4 node04修改keepalived配置文件
可以直接从node01中拷贝过来,然后进行修改即可。
修改决策状态为BACKUP,并且修改优先级,需要小于主LVS中的优先级,其余一致。
3.5 node01中启动keepalived
我们会看到接口出现了eth0:3,查看ipvsadm(ipvsadm是linux下的LVS虚拟服务器的管理工具,LVS工作于内核空间,而ipvsadm则提供了用户空间的接口;)
我们看到RS只出现了一个,是因为我们把node03服务给关闭了,我们重新启动一下就好了:
因为健康检查会有一个延迟,所以我们等一会儿,重新查看ipvsadm -ln命令,可以看到:
3.6 客户端验证
9.12和9.13来回提供服务:
3.7 启动node04中keepalived服务
当node01中LVS挂掉,node04会接管服务。
3.8 模拟node01中LVS挂掉,node04中LVS接管服务
我们可以将node01中网卡全部禁掉,不能通信。
备用LVS机器,接口会增加eth0:3
但是无论后台服务器怎么变,对于客户端还是一样的,客户端还是显示由9.12和9.13两台RS提供服务。
node01,经过运维修复,抢回管理,获得eth0:3接口,备LVS服务器中该eth0:3接口自动卸载。
3.9 模拟keepalived异常退出
keepalived是用户程序,避免不了异常退出。我们先查看一下相关进程:
我们杀死这三个进程,这个时候我们node01上面就没有这个keepalived进程了。
查看接口,这个时候eth0:3接口因为异常退出,来不及卸载该接口,来不及清理内核模块配置。
查看node04,发现已经配上了ip,出现了eth0:3接口:
这个地方有一个小bug,互联网中有两台设备,有同一个ip地址,是一件非常危险的事情。因为我们的机器在同一个网段,演示不出来效果。我们要求互联网中ip地址不能重复,我们后面用zookeeper可以解决这个问题。