LVS——keepalived高可用群集

一.Keepalived作用

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

二.实现原理

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

三.VRRP讲解

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

四.Keepalived案例讲解

1.Keepalived可实现多机热备,每个热备组可有多台服务器
2.双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
3.实现基于Web服务的双机热备

五.keepalived配置

主配置文件位置:/etc/keepalived/keepalived.conf
keepalived.conf是主配置文件
global_defs{…}区段指定全局参数
vrrp_instance实例名称{…}区段指定VRRP热备参数
注释文字以“!”符号开头
目录samples,提供了许多配置样例作为参考

配置参数
router_id LVS_1:本服务器名称为 LVS_1
vrrp_instance v1 {}:定义热备实例组名为 v1
state MASTER:热备状态,MASTER表示主服务器
interface ens33:表示承载虚拟地址的物理接口为ens33
virtual_router_id 1:表示虚拟服务器的ID号为1,每个热备组保持一致
priority 100:优先级为100,数值越大优先级越高
advert_int 1:表示通告间隔秒数(心跳频率)
auth_type PASS:认证类型为密码
auth_pass 123456:密码为123456
virtual_ipaddress {虚拟地址,可以有多个}

六.LVS+keepalived全过程

1.实验环境

主调度器:192.168.100.11 虚拟IP:192.168.100.210
备调度器:192.168.100.12 虚拟IP:192.168.100.210
服务器1:192.168.100.110 虚拟IP:192.168.100.210
服务器2:192.168.100.120 虚拟IP:192.168.100.210
共享存储服务器:192.168.100.10
客户机

2.共享存储服务器配置

[]yum -y install nfs-utils rpcbind
[] mkdir /opt/web1
[] mkdir /opt/web2
[] echo "this is kgc web" > /opt/web1/index.html
[]echo "this is accp web" > /opt/web2/index.html
[] vi /etc/exports
/opt/web1 192.168.100.110/32(ro)
/opt/web2 192.168.100.120/32(ro)
[] systemctl start nfs
[] systemctl start rpcbind
[]showmount -e	#查看本机共享存储发布情况

3.服务器

web1

showmount -e 192.168.100.10
[root@localhost ~]# mount 192.168.100.10:/opt/kgc /var/www/html/

vi aa.sh
#!/bin/bash
 # DR
ifconfig lo:0 192.168.100.210 broadcast 192.168.100.210netmask       255.255.255.255 up		
#添加虚拟网口
route add -host 192.168.100.210dev lo:0		#给lo:0添加路由
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
 ##系统只响应目的IP为本地真实IP的ARP请求
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
##系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送真实 接口的IP地址
sysctl -p &> /dev/null

ifconfig	#查看虚拟网口配置情况

web2

[root@localhost ~]# showmount -e 192.168.100.10
[root@localhost ~]# mount 192.168.100.10:/opt/accp /var/www/html/

vi bb.sh
#!/bin/bash
# DR
ifconfig lo:0 192.168.100.210 broadcast 192.168.100.210 netmask 255.255.255.255   up		
#添加虚拟网口
route add -host 192.168.100.210 dev lo:0		#给lo:0添加路由
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore   #系统只响应目的IP为本地真实IP的ARP请求
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce   #系统不使用IP包的源地址来设置ARP请求的源地址
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null

ifconfig	#查看虚拟网口配置情况

4.调度器

主调度器

modprobe ip_vs   //加载LVS内核模块
cat /proc/net/ip_vs //查看当前系统ip_vs模块版本信息
yum -y install ipvsadm
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel    //配置keepalived软件依赖环境

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_1
}

vrrp_instance v1 {
    state MASTER
    interface ens33
    virtual_router_id 1
    priority 105
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
}
virtual_ipaddress {
    192.168.100.210
}
}

virtual_server 192.168.100.210 80 {	#虚拟服务器地址
delay_loop 6	#健康检查的间隔时间6s
lb_algo rr		#调度算法为rr
lb_kind DR		#群集工作模式为DR
persistence_timeout 6	#连接保持时间6s
protocol TCP		#应用服务器采用TCP协议

real_server 192.168.100.110 80 {	#第一个web服务器真实地址
    weight 1	#节点的权重
    TCP_CHECK {		#健康检查方式TCP
            connect_port 80		#检查的目标端口80
            connect_timeout 3	#连接超时3秒
            nb_get_retry 3		#重试次数3次
            delay_before_retry 3	#重试间隔3秒
            }
    }
real_server 192.168.100.120 80 {
    weight 1
    TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            }
    }
}

systemctl start keepalived    //开启服务

备调度器

modprobe ip_vs   //加载LVS内核模块
cat /proc/net/ip_vs //查看当前系统ip_vs模块版本信息
yum -y install ipvsadm
yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel    //配置keepalived软件依赖环境

vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_2
}

vrrp_instance v1 {
 state BACKUP
 interface ens33
 virtual_router_id 1
 priority 100
 advert_int 1
 authentication {
    auth_type PASS
    auth_pass 1111
}
virtual_ipaddress {
    192.168.100.210
 }
}

virtual_server 192.168.100.210 80 {
 delay_loop 6
 lb_algo rr
 lb_kind DR
 persistence_timeout 6
 protocol TCP

real_server 192.168.100.110 80 {
    weight 1
    TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            }
    }
real_server 192.168.100.120 80 {
    weight 1
    TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            }
    }

}

5.测试

第一次访问192.168.100.210
在这里插入图片描述

第二次访问192.168.100.210
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45647891/article/details/110933881