企业-LVS实现高可用的稳定性集群
1.keeplived
我们使用keeplived代理lvs,它具有lvs的功能,但同时可以有多个,有主有备。当主挂了备用就去做轮询,当主好了备用就把任务还给主。当主调度器好着的时候,keepalived就回去通知备份调度器自己可以正常工作,不需要接管自己的任务。当主调度器坏了,不告诉备份调度器任何消息的时候,备份调度器就会自动去接管主调度器的工作,这个时候客户端依然可以正常访问。首先配置的时候需要将ld关闭,并且在IPVS表中添加LVS的策略,不过并不需要手动添加VIP,Keepalived会自动帮你添加,并且当高可用性实现的时候自动漂移至备用调度器。
2.健康检测
Ldirectord这款软件可以在主LVS负载均衡调度器发生故障时自动切换至备用的LVS调度器,可以对后端服务器进行健康检查,并且自动删除出现故障的后端服务器。这款软件在运行的时候会自动建立一个IPVS表,当发现无法提供服务的后端服务器时可以自动将这个服务器移出集群。
首先下载软件安装包
vim /etc/yum.repos.d/rhel7.3.repo 编辑yum源配置文件,添加高可用
yum install ldirectord-3.9.5-3.1.x86_64.rpm
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/ 复制配置文件
vim /etc/ha.d/ldirectord.cf 修改配置文件
在真机尝试
关闭后端服务器server1的httpd服务,之后再查看IPVS表,会自动删除
虽然ld拥有对后端服务器进行健康检查的功能,但是它并不支持高可用性,因此我们将LVS与Keepalived进行捆绑以便实现高可用性,同时Keepalived也支持对后端服务器的健康检查。
3.配置过程
在server3和server4下载 keepalived-2.0.17.tar.gz
以下操作在server3和server4中均要进行:
tar zxf keepalived-2.0.6.tar.gz 解压安装包
cd keepalived-2.0.6 进入目录
yum install gcc openssl-devel -y 安装依赖性相关的库及软件
./configure --prefix=/usr/local/keepalived --with-init=systemd 源码编译
make && make install 安装
cd /usr/local/keepalived/
cd etc
cd keepalived/
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/ 给服务添加软链接方便直接调用
配置完毕后需在server3关闭ldirectord服务,因为会有冲突
/etc/init.d/ldirectord stop
在server3中查看ip信息,并删除虚拟Ip
ip addr show
ip addr del 172.25.66.100/32 dev eth0
vim /etc/keepalived/keepalived.conf 将server3设置为MASTER,server4为backup
global_defs { 全局定义块
notification_email { 邮件通知
root@localhost 邮件发给本地用户
}
notification_email_from keepalived@localhost 邮件发送方地址
smtp_server 127.0.0.1 设置smtp server地址,为回环接口
smtp_connect_timeout 30 设置smtp server服务的超时时间
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
#VRRPD的配置
vrrp_instance VI_1 {
state MASTER 主机,备机为BACKUP(此状态是由priority的数值来决定的,当前priority的数值小于备机的数值,那么将会失去master状态)
interface eth0
virtual_router_id 51 主\备机的virtual_router_id必须相同取值0-255
priority 100 主机的优先级,必须大于备机
advert_int 1 主备之间的检查间隔秒数
authentication {
auth_type PASS 认证类型,主要有PASS和AH俩种
auth_pass 1111 认证密码
}
virtual_ipaddress { 指定漂移地址(VIP),即切换到master时,这些IP会被添加,切换到BACKUP时,这些IP会被删除(传给ip addr命令),所以每台服务器可以不用绑定任何的虚拟地址。
172.25.66.100
}
}
#虚拟服务配置
virtual_server 172.25.66.100 80 { 定义虚拟服务器
delay_loop 3 连接失败3次以后发送邮件
lb_algo rr 调度算法
lb_kind DR lvs的DR模式
#persistence_timeout 50
protocol TCP 指定转发协议类型
real_server 172.25.66.1 80 { 配置服务节点
TCP_CHECK {
weight 1 默认为1,0为失效
connect_port 80 端口
connect_timeout 3 3秒无响应超时
}
}
real_server 172.25.66.2 80 {
TCP_CHECK {
weight 1
connect_port 80
connect_timeout 3
}
}
}
关闭server3的keepalived,此时虚拟ip会自动漂浮到server4上