什么叫keepalived
- List item
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
keepalived三个核心模块`
- core核心模块
- chech健康监测
- vrrp虚拟路由冗余协议
keepalived三个重要功能 - 管理LVS
- 对LVS集群节点检查
- 作为系统网络服务的高可用功能
keepalived工作原理 - keepavlied采用VRRP热备份协议实现Linux服务器的多机热备功能
- VRRP,虚拟路由冗余协议,是针对路由器的一种备份解决方案
①由多台路由器组成一个热备组,通过公用的虚拟IP地址对外提供服务
②每个热备份组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态
③若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务
常规配置选项讲解 - priority 100:优先级,数值越大优先级越高
- advert_int1:通告间隔秒数(心跳频率)
- auth_type PASS:认证类型
- auth_pass 123456:密码字串
- virtual_ipaddress{vip}:指定漂移地址(VIP),可以有多个
keepalived备份服务器的配置与master的配置有三个不同选项 - rooter_id:设为自有名称
- state:设为BACKUP
- priority:值低于主服务器
实验步骤如下
LVS_DR模式+keepalied
调度器服务DR1(主) 192.168.100.110
调度器服务DR2(备) 192.168.100.111
节点服务器web1 192.168.100.201
节点服务器web2 192.168.100.202
虚拟IP 192.168.100.10
配置DR两台调度服务器
//安装两个软件包 keepalived(双击热备) ipvsadm(DR调度)
yum install keepalived ipvsadm -y
//设置路由数据包的转发
vim /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
//建立虚拟网卡
cp -p /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33:0
//设置虚拟网卡
vim /etc/sysconfig/network-scripts//ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
//编写启动脚本
vim /etc/init.d/dr.sh
#!/bin/bash
GW=192.168.100.1
VIP=192.168.100.10
RIP1=192.168.100.201
RIP2=192.168.100.202
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 /etc/init.d/dr.sh
更改网卡为仅主机相连模式
//更改网卡为静态网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33
//DR1服务器
IPADDR=192.168.100.110
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
//DR2服务器
IPADDR=192.168.100.111
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
#把DHCP换成static
//重启服务
service network start
//启动虚拟网卡
ifup ens33:0
//启动dr.sh脚本
service dr.sh start
//关闭防火墙
systemctl stop firewalld.service
setenforce 0
建立两台节点服务器web(apache)
//安装apache服务
yum install httpd -y
//关闭防火墙
systemctl stop firewalld.service
setenforce 0
//创建首页
#web1服务器
vim /var/www/html/index.html
<h1>this is kgc</h1>
web2服务器
vim /var/www/html/index.html
<h1>this is accp</h1>
设置回环地址
//创建虚拟网卡
cp -p /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.10
NETMASK=255.255.255.0
ONBOOT=yes
//编辑启动脚本(web2将通过远程复制操作以下脚本)
vim /etc/init.d/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"
//将脚本文件远程复制到web2服务器上(地址:192.168.183.150)
scp /etc/init.d/web.sh root@192.168.183.150:/etc/init.d/web.sh
//给权限
chmod +x /etc/init.d/web.sh
将虚拟据网卡修改问静态模式(仅主机相连模式)
/修改网卡
#web1服务器
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.100.201
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
#web2服务器
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.100.202
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
#把DHCP换成static
//重启服务
service network start
//启动脚本文件
service web.sh start
//启动apache服务
systemctl start httpd
//启动回环地址
ifup lo:0
搭建双机热备
//修改配置文件
cd /etc/keepalived/
vim /keepalived.conf
//修改文件
smtp_server 127.0.0.1
router_id LVS_01
interface ens33
virtual_router_id 10
#将下面两行IP地址删除 192.168.100.16修改为虚拟主机地址192.168.100.10
29 virtual_ipaddress {
192.168.200.16
192.168.200.17
192.168.200.18
//修改文件
34 virtual_server 192.168.100.10 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
//将元IP地址改为web地址(192.168.100.201 端口改为80)在weight 1下面一行删除9行并加入TCP_CHECK { 、connect_port 80
real_server 192.168.100.201 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
//复制上面修改的real_server在49行复制并将IP地址改为192.168.100.202
real_server 192.168.100.202 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
//在60行往后删除
//重启服务
systemctl start keepalived.service
//将改好的文件通过远程复制给web2(192.168.100.111)
scp /etc/keepalived/keepalived.conf root@192.168.100.111:/etc/keepalived/
//修改web2中keepalived配置文件
vim /etc/keepalived/keepalived.conf
router_id LVS_02
vrrp_instance VI_1 {
state BACKUP
priority 90
//重启服务
systemctl start keepalived.service
注意:如果ping不通要重启服务