keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

keepalived是基于VRRP协议实现的,即虚拟路由冗余协议;

VRRP:虚拟路由冗余协议,可以使认为是实现虚拟路由高可用的协议,即将N台路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有对外提供服务的vip,master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据vrrp优先级来选举一个backup来当master,这样就可以保证路由器的高可用了;

keepalived的三个主要模块:corer、check、vrrp;

core:是keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。

check:负责健康检查,包括常见的各种检查方式。

vrrp模块是用来是实现vrrp协议的。

nginx--keepalived配置方式

主/备调度器安装软件

yum -y install keepalived

主/备修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
router_id directory1 #辅助改为directory2
}

vrrp_script check_nginx {
script "/etc/keepalived/check_nginx.sh"      #用来监视nginx的脚本在此处调用,将nginx工作状态与keepalived关联起来
interval 5
}

vrrp_instance VI_1 {
state MASTER #定义主还是备
interface ens33 #VIP绑定接口
virtual_router_id 80 #整个集群的调度器一致
priority 100 #back改为50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#vip
}

track_script {
check_nginx
}
}

LVS-keepalived配置方式

LVS主备配置

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
 
global_defs {
   router_id lvs-keepalived-master    #辅助改为lvs-backup
}
 
vrrp_instance VI_1 {
    state MASTER
    interface ens33                #VIP绑定接口
    virtual_router_id 80         #VRID 同一组集群,主备一致
    priority 100            #本节点优先级,辅助改为50
    advert_int 1            #检查间隔,默认为1s
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.147.101/24  # 可以写多个vip
    }
}
 
virtual_server 172.16.147.101 80 {    #LVS配置
delay_loop 3
lb_algo rr     #LVS调度算法
lb_kind DR     #LVS集群模式(路由模式)
net_mask 255.255.255.0
protocol TCP      #健康检查使用的协议
real_server 172.16.147.153 80 {
weight 1
inhibit_on_failure   #当该节点失败时,把权重设置为0,而不是从IPVS中删除
TCP_CHECK {          #健康检查
connect_port 80   #检查的端口
connect_timeout 3  #连接超时的时间
}
}
real_server 172.16.147.156 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
}
RS配置
echo "ip addr add dev lo 172.16.147.101/32" >> /etc/rc.local
echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.con
sysctl -p
chmod +x /etc/rc.local
RS服务器都需要这样配置
 
此作者没有提供个人介绍
最后更新于 2024-11-26