LVS负载均衡 --DR模式 + Keepalived

一.Keepalived概述

  1. Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查,来判断LVS负载调度器、节点服务器的可用性,及时隔离并且替换为新的服务器,当故障主机恢复后将其重新加入群集
  2. Keepalived的官方网站位于http://www.keepalived.org/,在非LVS的群集环境中使用时,Keepalived也可以作为热备软件使用

二.Keepalived的热备方式

  1. Keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的多机热备功能。
  2. VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务,每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态,如果当前在线的路由器失效,则其他路由器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务(前文提供了VRRP协议的博客详解)
  3. 热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内的路由器之间进行转移,所以也称为漂移IP地址。
  4. 此外,使用Keepalived时,漂移地址的实现不需要手动建立虚接口配置文件,而是由Keepalived根据配置文件自动管理
     

实验案例说明:

1.两台LVS负载均衡服务器,调度两台WEB服务器

2.两台LVS服务器同时配置Keepalived,实现负载均衡和双机热备

3.客户端主机能够通过虚拟ip地址,访问到后台的 Web服务器的网页

4.实验结果验证:其中一台 DR 宕机,访问正常进行,所有服务照常运行

角色 IP
LVS服务器1(主) 192.168.100.100
LVS服务器2(备) 192.168.100.101
WEB服务器1 192.168.100.200
WEB服务器2 192.168.100.201
虚拟IP(VIP) 192.168.100.10

一.配置两台LVS服务(DR模式)

配置第一台LVS服务:

  • 安装 ipvsadm 和 keepalived 包
yum install ipvsadm keepalived -y
  • LVS服务器1配置,开启路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
#proc响应关闭重定向功能
net.ipve.conf.all.send_redirects = 0
net.ipve.conf.default.send_redirects = 0
net.ipve.conf.ens33.send_redirects = 0
  • 重启功能
sysctl -p
  • 设置虚拟网卡ens33:0
cd /etc/systemct/network-scripts/
cp -p ifcfg-ens33 ifcfg-ens33:0

//全部删除后添加虚拟网卡配置
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
  • 启用虚拟网卡
ifup ens33:0
  • 编写脚本,便于service管理LVS服务,启动和停止,查看LVS状态
cd /etc/init.d
vim dr.sh
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.10
RIP1=192.168.100.200
RIP2=192.168.100.201
case "$1" in
start)
	/sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
	systemctl start ipvsadm
	/sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
	/sbin/route add -host $VIP dev ens33:0
	/sbin/ipvsadm -A -t $VIP:80 -s rr
	/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
	/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
	echo "ipvsadm starting------------------[ok]"
	;;
stop)
	/sbin/ipvsadm -C
	systemctl stop ipvsadm
	ifconfig ens33:0 down
	route del $VIP
	echo "ipvsamd stoped--------------------[ok]"
	;;
stop)
	/sbin/ipvsadm -C
	systemctl stop ipvsadm
	ifconfig ens33:0 down
	route del $VIP
	echo "ipvsamd stoped--------------------[ok]"
     	;;
status)
	if [ ! -e ar/lock/subsys/ipvsadm ];then
	echo "ipvsadm stoped--------------------"
	exit 1
	else
	echo "ipvsamd Runing-------------[ok]"
	fi
	;;
*)
	echo "Usage: $0 {start|stop|status}"
	exit 1
esac
exit 0
  • 添加执行权限,执行脚本
chmod +x dr.sh
service dr.sh start

配置第二台LVS服务:

  • LVS服务器2配置与1设置相同,重复操作一遍即可

二.配置两台Aapche服务

  • 安装 httpd
yum install httpd -y
  • 创建站点目录,添加网页内容
vim /var/www/html/index.html
<h1>this is kgc web</h1>
  • 创建虚拟网卡
cd /etc/systemct/network-scripts/
cp -p ifcfg-lo ifcfg-lo:0

DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
  • 编写服务启动脚本,路径:/etc/init.d
cd /etc/init.d
vim web.sh
#!/bin/bash
VIP=192.168.100.10
        case "$1" in
        start)
                ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                /sbin/route add -host $VIP 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/lo/arp_ignore
        echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
        sysctl -p > /dev/null 2>&1
        echo "RealServer Start OK "
        ;;
        stop)
                ifconfig lo:0 down
                route del $VIP /dev/null 2>&1
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
                echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
    echo "RealServer Stoped"
                ;;
        *)
                echo "Usage: $0 {start|stop}"
                exit 1
        esac
        exit 0
  • 添加权限,并执行
chmod +x web.sh
service web.sh start
  • 关闭防火墙开启httpd服务
systemctl stop firewalld.service 
systemctl start httpd
  • 配置第二台节点服务器 web2
节点服务器2按照服务器1重新配置
站点目录更改
<h1>this is accp web</h1>
  • 测试网页:

三.在两台LVS服务器上分别部署部keepalived

  • 在第一台LVS服务器 (DR) 上部署:
vim /etc/keepalived/keepalived.conf 

  • 启动服务
systemctl start keepalived.service 
  • 在第二台LVS服务器 (DR) 上部署:
vim /etc/keepalived/keepalived.conf 

  • 启动服务
systemctl start keepalived.service 

四.验证实验:

由于部署了 LVS 和 keepalived,目的是,负载均衡和双机热备。
此时,我们模拟一下故障,宕掉其中一台 DR1,如果客户端依旧可以和虚拟 IP地址 互通,且能够正常访问网站的话,就说明 DR2 就代替 DR1 工作了,防止单点故障的效果实现了。

  • 故障模拟:宕掉 主LVS
ifdown ens33:0
  • 结果验证,在客户端 ping 一下虚拟ip

  • 访问Apache服务网站验证:

发布了78 篇原创文章 · 获赞 5 · 访问量 2580

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/103991495