我们在用LVS做负载均衡的时候因该要考虑到如果我们的调度器挂掉,那岂不是整个服务器都瘫痪掉了,那么此时我们就因该给它加上一个高可用来放置单点故障
高可用的LVS(DR模式)(HA+LB)
在这里我们要用的高可用软件是keepalived
keeplived:
keepalived是集群管理中保证高可用的一个服务软件,用来防止单点故障,这种故障切换是通过VRRP协议来实现的,主节点 在一定的时间间隔中发送心跳信息的广播包,告诉自己的存活状态信息,当主节点发生故障时,各从节点在一段时间内收到广 播包,从而判断主节点是否发生了故障,因此会调用自己的接管程序来接管主节点的IP资源和服务,当主节点恢复时,备节点 会主动释放资源,恢复到接管前状态,从而实现主备故障切换。
VRRP( Virtual Router Redundancy Protocol )协议:
网络在设计的时候必须考虑到冗余容灾,包括线路冗余,设备冗余等,防止网络存在单点故障,那在路由器或三层交换机处实现冗余就显得尤为重要,在网络里面有个协议就是来做这事的,这个协议就是VRRP协议,Keepalived就是巧用VRRP协议来实现高可用性(HA)的。
1.用于实现路由器冗余的协议
2.解决静态路由单点故障问题
3.通过一种竞选(election)协议来实现虚拟路由器的功能
LVS高可用配置
1.我们再上一个实验的基础上再机爱能力一个虚拟机server4,使他成为备份调度器
2.我们在server1上安装keepalived
安装一个依赖性
进行源码编译
./configure --prefix=/usr/local/keepalived --with-init=SYSV
make (默认makefile文件)
make install
3.制作软连接方便keepalived的管理与设置,并给它执行权限
ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/keepalived/etc/keepalived/ /etc/
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
4.把server1中源码编译好的keepalived发送给server4,在server4中做同样的软连接
5.关闭ldictord并删除eth0上的vip
6.在server1(主)中配置keepalived
Keepalived的所有配置都在一个配置文件里面设置,支持的配置项主要分三类:
1. 全局配置(Global Configuration):作用于整个keepalived服务
2.VRRPD配置:keepalived的核心
3. 虚拟服务配置:指定服务与负载均衡
配置文件都是以块(block)形式组织的,每个块都在{ }包围的范围内 ,#和!开头的行都是注释
\
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
全局配置
----
global_defs { #全局定义块
notification_email { #邮件通知
sysadmin@localhost
}
#notification_email指定keepalived在发生事件(切换),需要发送email到的对象。 可以有多个,每行一个。
notification_email_from keepalive@localhost
smtp_server 127.0.0.1 #smtp_*指定发送email的smtp服务器
smtp_connect_timeout 30
router_id LVS_DEVEL #router_id运行keepalived的机器的一个标识
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
VRRPD配置
-------
vrrp_instance VI_1 {
##state指定instance的初始化状态,在两台router都启动后,马上会发生竞选,高 priority的会竞选为Master,因而这里的state并不表示这台就一直是Master
state MASTER # 指定该节点为主节点,备用节点设置为BACKUP
interface eth0 #绑定虚拟IP的网络接口
virtual_router_id 1 #设置验证信息,两个节点需一致
priority 100 # 主节点的优先级,数值在1~254,注意从节点必须比主节点的 优先级别低
advert_int 1 #组播信息发送间隔,两个节点需一致
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.25.77.100 #指定虚拟IP,两个节点需设置一样
}
}
虚拟服务配置
------
virtual_server 172.25.77.100 80 {
delay_loop 3 #指定检查间隔
lb_algo rr #指定lvs算法
lb_kind DR #指定lvs模式为DR
#persistence_timeout 50 #持久连接设置,会话保持时间,在此处需要注释
protocol TCP #指定转发协议为TCP协议
#后端实际TCP服务配置
real_server 172.25.77.2 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 172.25.77.3 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
7.在server4上配置keepalived
9.server1开启keepalived
我们发现在启动keepalived后需要等一会儿才会将vip加上
10.我们安装一个邮件查看器
11.server4同样开启keepalived
12.真机测试负载均衡
13.server1关闭keepalived
14.真机测试负载均衡并查看server4的ip
我们可以很清晰的看到当我们挂掉server1后,负载均衡仍然可以,这是因为我们的调度器现在是备份服务器server4
15.我们可以通过查看邮件的形式查看高可用