文章目录
一、keepalived
(1)keepalived是什么
(2)keepalived工作原理
二、配置步骤:
第一步:配置两台 DR
第二步:配置第一台节点服务器 web1
第三步:配置第二台节点服务器 web2
第四步:客户端测试
第五步:部署 keepalived
第六步:实验结果验证
一、keepalived :
(1)keepalived是什么
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
1、keepalived的三个核心模块:
core核心模块
chech健康监测
vrrp虚拟路由冗余协议
2、Keepalived服务的三个重要功能:
管理LVS
对LVS集群节点检查
作为系统网络服务的高可用功能
(2)keepalived工作原理
1、keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
2、虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
3、keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
二、配置步骤:
实验环境说明:
(1)准备四台虚拟机,两台为调度服务器,两台为节点服务器;
(2)调度服务器部署 LVS 和 keepalived ,实现负载均衡和双机热备;
(3)客户端主机能够通过虚拟ip地址,访问到后台的 Web服务器的网页;
(4)实验结果验证:其中一台 DR 宕机,访问正常进行,所有服务照常运行。
角色 IP地址
调度服务器 DR1(主) 192.168.100.201
调度服务器 DR2 (备) 192.168.100.202
节点服务器 web1 192.168.100.221
节点服务器 web2 192.168.100.222
虚拟 IP 192.168.100.10
客户端测试机 win7 192.168.100.50
第一步:配置两台 DR
(1)安装 ipvsadm 和 keepalived 包
yum install ipvsadm keepalived -y
(2)修改 /etc/sysctl.conf 文件,添加以下代码:
net.ipv4.ip_forward=1
//proc响应关闭重定向功能
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p 这条命令是让以上配置生效
(3)配置虚拟网卡(ens33:0):
1、注意路径:/etc/sysconfig/network-scripts/
2、直接复制已有的网卡信息,加以修改即可:
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
删除原来所有信息,添加以下代码:
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
3、启用虚拟网卡:
ifup ens33:0
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE0OS5qcGc=)
(4)编写服务启动脚本,路径:/etc/init.d
1、vim dr.sh 脚本内容如下:
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.10
RIP1=192.168.100.221
RIP2=192.168.100.222
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
2、添加权限,启动脚本
chmod +x dr.sh
service dr.sh start
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1MC5qcGc=)
(5)第二台 DR 配置和第一台一模一样,重复操作一下即可
第二步:配置第一台节点服务器 web1
(1)安装 httpd
yum install httpd -y
systemctl start httpd.service //开启服务
(2)在站点写一个测试网页,待会后面方便验证试验结果
路径:/var/www/html
echo "this is accp web" > index.html
(3)创建虚拟网卡
1、路径:/etc/sysconfig/network-scripts/
2、复制网卡信息加以修改
cp ifcfg-lo ifcfg-lo:0
3、vim ifcfg-lo:0
删除原来所有信息,添加以下内容:
DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.0
ONBOOT=yes
(4)编写服务启动脚本,路径:/etc/init.d
1、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
2、添加权限,并执行
chmod +x web.sh //添加权限
service web.sh start //启动服务
(5)开启虚拟网卡
ifup lo:0
(6)测试网页是否正常
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1Mi5qcGc=)
第三步:配置第二台节点服务器 web2
第二台web和第一台配置一模一样,唯一不同的是,为了区分实验效果,第二台的测试网页内容换了:
路径:/var/www/html
echo "this is benet web" > index.html
测试网页是否正常:
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1My5qcGc=)
第四步:客户端测试
(1)配置好客户端的IP地址
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1NC5qcGc=)
(2)测试
1、与 192.168.100.10 能否互通:
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1Ni5qcGc=)
2、访问网页是否正常
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1Ny5qcGc=)
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1OC5qcGc=)
第五步:部署 keepalived
一、在第一台 DR 上部署:
(1)修改 keepalived.conf 文件,路径 /etc/keepalived/
修改以下内容:
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE1OS5qcGc=)
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE2MC5qcGc=)
(2)启动服务
systemctl start keepalived.service
二、在第二台 DR 上部署:
(1)修改 keepalived.conf 文件
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE2MS5qcGc=)
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE2Mi5qcGc=)
(2)启动服务
systemctl start keepalived.service
第六步:实验结果验证
由于部署了 LVS 和 keepalived,目的是,负载均衡和双机热备。
此时,我们模拟一下故障,宕掉其中一台 DR1,如果客户端依旧可以和虚拟 IP地址 互通,且能够正常访问网站的话,就说明 DR2 就代替 DR1 工作了,防止单点故障的效果实现了。
(1)故障模拟:宕掉 DR1
ifdown ens33:0
(2)结果验证
1、在客户端 ping 一下虚拟ip
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE2NC5qcGc=)
2、网站也依旧能够访问
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE2NS5qcGc=)
![LVS 负载均衡 ------ DR模式 + Keepali LVS 负载均衡 ------ DR模式 + Keepali](/default/index/img?u=aHR0cHM6Ly9jYWNoZS55aXN1LmNvbS91cGxvYWQvaW5mb3JtYXRpb24vMjAyMDAyMTUvMzMvMzE2Ni5qcGc=)