LVS+Keepalived(高可用集群部署)

引言

  • 因为企业应用中,单台LVS服务器(单挂)承担应用存在单点故障的危险;
  • 单点故障一旦发生,企业服务将发生中断,造成极大的危害。

一、Keepalived工具介绍

  • 专为LVS和HA设计的一款健康检查工具
    作用:
    支持故障自动切换(Failover)
    支持节点健康状态检查(Health Checking)

官方网站∶http∶//www.keepalived.org/

二、Keepalived实现原理剖析

1、Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能

2、VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

3、Keepalived案例讲解

  • Keepalived可实现多机热备,每个热备组可有多台服务器
  • 双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
    在这里插入图片描述

三、LVS+Keepalived配置

1、Keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器、管理服务器池,而不仅仅用做双击热备;

2、使用Keepalived构建LVS群集更加简便易用;

3、主要优势

  • 对LVS负载调度器实现热备切换,提高可用性;
  • 对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

3.1 Keepalived安装与启动

1、在LVS群集环境中应用时,也需要用到ipvsadm管理工具
2、YUM安装Keepalived
3、启用Keepalived服务

3.2 配置Keepalived master服务器

keepalived配置目录位于/etc/keepalived
keepalived.conf是主配置文件

  1. global_defs{…}区段指定全局参数
  2. vrrp_instance 实例名称{…}区段指定VRRP热备参数
  3. 注释文字“!”符号开头
  4. 目录samples,提供了许多配置样例作为参考

3.3 常用配置选项

router_id HA_TEST_R1:本路由器(服务器)的名称
vrrp_instance VI_1:定义VRRP热备实例
state MASTER:热备状态,MASTER表示主服务器
interface ens33:承载VIP地址的物理接口
virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
priority 100:优先级,数值越大优先级越高
advert_int 1:通告间隔秒数(心跳频率)
auth_type PASS:认证类型
auth_pass 123456:密码字串
virtual_ipaddress{vip}:指定漂移地址(VIP)

3.4 配置Keepalived slave服务器

Keepalived备份服务器的配置与master的配置由三个选项不同

1、router_id:设为自有名称
2、state:设为BACKUP
3、priority:值低于主服务器

其他选项与master相同

四、配置LVS+Keepalived

Keepalived双机热备效果测试

测试双机热备的效果
1、主、备机均启用web服务,设置不同内容
2、先后禁用、启用主服务器的网卡

执行的测试
测试1:使用ping检测192.168.40.100的连通性
测试2:访问http://192.168.40.100,确认可用性及内容变化
测试3:查看日志文件/var/log/message中的变化

4.1 配置环境:

主机名IP地址角色
lvs01192.168.40.11lvs01+keepalived
lvs02192.168.40.12lvs02+keepalived
VIP192.168.40.100虚拟IP地址
web1192.168.40.13web节点1
web2192.168.40.14web节点2
nfs192.168.40.15nfs远程共享目录

4.2 NFS共享服务器

[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
[root@nfs ~]# echo "<h1>this is server 1.</h1>" > /web1/index.html
[root@nfs ~]# echo "<h1>this is server 2.</h1>" > /web2/index.html
[root@nfs ~]# rpm -qa | grep nfs-utils
nfs-utils-1.3.0-0.48.el7.x86_64
[root@nfs ~]# rpm -qa | grep rpcbind
rpcbind-0.2.0-42.el7.x86_64

[root@nfs ~]# vi /etc/exports
/web1 192.168.40.13 (ro)
/web2 192.168.40.14 (ro)

[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# showmount -e #nfs服务器的 显示输出目录列表

在这里插入图片描述

4.3 web服务器

[root@web1 ~]# mount 192.168.40.15:/web1 /var/www/html/
[root@web1 ~]# df -Th	#查看是否挂载成功
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# showmount -e 192.168.40.15

[root@web1 ~]# vim web1.sh
#!/bin/bash
# lvs dr模式 web1ifconfig lo:0 192.168.40.100 broadcast 192.168.40.100 netmask 255.255.255.255 up
route add -host 192.168.40.100 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null

[root@web1 ~]# sh web1.sh #执行脚本
[root@web1 ~]# ifconfig
[root@web1 ~]# route -n	#查看路由表

4.4 LVS调度器

LVS01

[root@lvs01 ~]# modprobe ip_vs
[root@lvs01 ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

[root@lvs01 ~]# yum -y install ipvsadm
[root@lvs01 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel	#安装编译工具与开发包
[root@lvs01 ~]# tar zxvf keepalived-2.0.13.tar.gz 

[root@lvs01 ~]# cd keepalived-2.0.13/
[root@lvs01 keepalived-2.0.13]# ./configure --prefix=/ #配置
[root@lvs01 keepalived-2.0.13]# make && make install  #编译与安装
[root@lvs01 ~]# cp keepalived/etc/init.d/keepalived /etc/init.d	#把keepalived加入系统管理服务
[root@lvs01 ~]# systemctl enable keepalived #设置开机自启

[root@lvs01 ~]# vi /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
  router_id LVS_01  ##本服务器的名称
}
vrrp_instance VI_1 {  ##定义VRRP热备实例
state MASTER ##热备状态,MASTER(主服务器)
interface ens33  ##承载VIP地址的物理接口
virtual_router_id 51  ##虚拟路由器的ID号,每个热备组保持一致
priority 110  ##优先级,数值越大优先级越高
advert_int 1  ##通告间隔秒数(心跳频率)
authentication {  ##热备认证信息,每个热备组保持一致
  auth_type PASS  ##认证类型
  auth_pass 6666  ##密码字符串
 }
virtual_ipaddress {  ##指定漂移地址(VIP)
 192.168.40.100
}
}
virtual_server 192.168.40.100 80 { ##虚拟服务器地址(VIP)、端口
  delay_loop 6  ##健康检查的间隔时间(秒)
  lb_algo rr  ##调度算法(rr)
  lb_kind DR ##群集工作模式(DR)
  persistence_timeout 6  ##连接保持时间(秒)
  protocol TCP ##应用服务器采用的TCP协议
real_server 192.168.40.13 80 {   ##第一个web服务器节点的地址、端口
  weight 1  ##节点权重
  TCP_CHECK {  ## 健康检查方式
  connect_port 80 ##检查的目标端口
  connect_timeout 3 ## 连接超时(秒)
  nb_get_retry 3  ##重试次数
  delay_before_retry 3  ##重试间隔
}
}
real_server 192.168.40.14 80 {  ##第二个web服务器节点的地址、端口
  weight 1
  TCP_CHECK {
  connect_port 80
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
	}
  }
}

[root@lvs01 ~]# systemctl restart keepalived.service 
[root@lvs01 ~]# scp /etc/keepalived/keepalived.conf root@192.168.40.12:/etc/keepalived/keepalived.conf	#把lvs01上的keepalived的配置拷贝到lvs02上

配置lvs02

与vs01相同的安装步骤,配置文件需要改动三处:
[root@lvs02 ~]# vi /etc/keepalived/keepalived.conf 
	router_id LVS_02
	state BACKUP
	priority 105

[root@lvs02 ~]# systemctl restart keepalived.service 

五、测试

1、lvs01

[root@lvs01 ~]# ip addr #查看ens33端口是否绑定了VIP
[root@lvs01 ~]# tail -100 /var/log/messages  #查看日志最近100行
     此为lvs01是主服务器(2个凭证)

在这里插入图片描述
在这里插入图片描述
在浏览器访问VIP:192.168.40.100
在这里插入图片描述
删除缓存,再刷新。
在这里插入图片描述

[root@lvs01 ~]# ipvsadm -Lnc	#查看调度器是否正常工作
IPVS connection entries
pro expire state       source             virtual            destination
TCP 14:55  ESTABLISHED 192.168.40.1:54584 192.168.40.100:80  192.168.40.14:80
TCP 14:55  ESTABLISHED 192.168.40.1:54583 192.168.40.100:80  192.168.40.13:80
TCP 00:59  NONE        192.168.40.1:0     192.168.40.100:80  192.168.40.14:80

2.停止lsv01,查看lsv02是否会替换成主服务器

[root@lvs01 ~]# systemctl stop keepalived.service #停止主服务器
[root@lvs02 ~]# tail -f /var/log/messages	#在lvs02上,查看日志,已成为了主服务器,正发送ARP....
[root@lvs02 ~]# ip addr	#ens33上是否绑定了VIP

在这里插入图片描述
在这里插入图片描述
在lvs01上,输入ip addr ,ens33上的VIP已解绑了;
浏览器上再访问VIP:192.168.40.100,依旧有效,实现了双机热备!

3.重新开启lvs0调度器

[root@lvs01 ~]# systemctl start keepalived.service 
[root@lvs01 ~]# ip addr
因为优先级高,又成为了主服务器。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值