keepalived 高可用集群简单搭建

news/2025/3/14 17:55:45/

1.keepalived概念

keepalived是一款高可用集群软件,keepalived功能:心跳检测和故障切换。

心跳检测:master主机会向从节点广播心跳信息,当从节点收不到master节点的心跳信息时,会进行vip的漂移。

故障切换:master节点宕机之后,vip会漂移到备用节点上,备用节点上的应用会去接管外部访问。当客户端输入vip进行访问时,时备用节点上的应用进行应答。

 VRRP协议:(虚拟路由冗余协议)是一种容错协议,保障主机路由出现故障的时候,可以是使用另一台路由来代替这台路由进行工作。

2.keepalived的安装

注意:

书写格式的{}配对问题也许注意

关闭防火墙和selinux

两种方式安装keepalived:yum安装 源码安装(源码安装较为复杂)

yum安装:

1.安装cheese
yum install http://www.nosuchhost.net/~cheese/fedora/packages/epel-7/x86_64/cheese-release-7-1.noarch.rpm
2.yum安装keepalived
yum install -y keepalived

keepalived的配置文件:

keepalived的配置文件:

/etc/keepalived/keepalived.conf

keepalived中的部分参数:

第一部分:全局配置(可以在此处配置邮箱)

 ! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL         主机上的router_id 需要唯一
#vrrp_skip_check_adv_addr    以下几行进行注释
#vrrp_strict
#vrrp_garp_interval 0
#vrrp_gna_interval 0}

第二部分:实例配置(在一个实例中主机的virtual_router_id一样)

vrrp_instance VI_1 {
state MASTER         代表主机节点时主还是备
interface eth0
virtual_router_id 51    同一个实列需要virtual_router_id 为同一个
priority 100            master主机的优先级需要高于backup主机的优先级  
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16         指定虚拟vip的地址(地址需要不被任何主机使用)
192.168.200.17
192.168.200.18
}
}

第三部分:real-server配置

virtual_server 192.168.200.100 443 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 50protocol TCP
real_server 192.168.201.100 443 {weight 1SSL_GET {url {path /digest ff20ad2481f97b1754ef3e12ecd3a9cc
}url {path /mrtg/digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}

抢占模式:

keepalived默认是抢占模式,工作环境中使用的时不抢占模式,这样环境较为稳定。

3.单实例主备模式的keepalived配置

master:192.168.27.120

backup:192.168.27.122

master节点配置

192.168.27.120

[root@localhost ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc
}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL1
}
vrrp_instance VI_1 {state MASTER        主节点interface ens33    自己本机的网卡virtual_router_id 51    一个实例中一样priority 100            优先级大于备节点advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.135        vip设置
}
}

 backup节点配置:

192.168.27.122

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc
}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL2    从主机的id
}
vrrp_instance VI_1 {state BACKUP            从节点interface ens33         自己的网卡设备virtual_router_id 51    和主节点一个实例,其的实例id一样priority 80             优先级小于主节点advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.135          同一个实例中的VIP一致
}

重启:

systemctl start keepalived.service (先启动主节点在启动备节点)

单实例配置主备模式

(三台机器,两台置keepalived和httpd,另一台为客户端)

keepalived的配置和之前一样,在这两台主机上配置安装httpd服务,客户端进行测试。

客户端测试使用定义的vip测试
curl ip
当主机点宕机后看是否会切换另一个节点的应用服务器应答

在节点添加实例2即可:

master节点vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 52priority 80advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.136
}
}backup节点:
vrrp_instance VI_2 {state MASTERinterface ens33virtual_router_id 52priority 100advert_int 1
authentication {auth_type PASSauth_pass 1111
}
virtual_ipaddress {192.168.27.136
}
}


http://www.ppmy.cn/news/1038637.html

相关文章

小程序-基于vant的Picker组件实现省市区选择

一、原因 因vant/area-data部分的市/区数据跟后台使用的高德/腾讯省市区有所出入,故须保持跟后台用同一份数据,所以考虑以下几个组件 1、Area 2、Cascader 3、Picker 因为使用的是高德地图的省市区json文件,用area的话修改结构代价太大&…

【Python机器学习】实验12 基于神经网络的回归-分类实验

文章目录 神经网络的回归例1 基于神经网络的回归(简单例子)1.1 导入包1.2 构造数据集(随机构造的)1.3 构造训练集和测试集1.4 构建神经网络模型1.5 采用训练数据来训练神经网络模型 实验1 基于神经网络的分类(鸢尾花数据集)1.1 导入包1.2 构造数据集1.3 …

Golang协程,通道详解

进程、线程以及并行、并发 关于进程和线程 进程(Process)就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一…

Layui列表复选框根据条件禁用

// 禁用客服回访id有值的复选框res.data.forEach(function (item, i) {if (item.feedbackEmpId) {let index res.data[i][LAY_TABLE_INDEX];$(".layui-table tr[data-index"index"] input[typecheckbox]").prop(disabled,true);$(".layui-table tr[d…

avue表单验证;avue自定义表单验证;avue-curd在配置项中进行验证

avue自定义表单验证 data() {var validateSpeed (rule, value, callback) > {if (value ) {callback(new Error(请输入默认速度));} else if (value < 0 || value > 0.5) {callback(new Error(请输入0-0.5之间的数字));} else {callback();}};var validateDistance …

GD32F207 位带操作 GPIO

下面的程序用在GD32F207上测试成功&#xff0c; 如果要在新的单片机上进行位带操作需要查看新的单片机的寄存器偏移量。 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)0x2000000((addr &0xFFFFF)<<5)(bitnum<<2)) #define MEM_ADDR(addr) *((vol…

mysqldump工具使用

mysqldump -h${host} -u${username} -p${password} -P${port} -f --single-transaction ${dbname} > ${dbname}.sql

大数据——协同过滤推荐算法:矩阵分解

矩阵分解的方法也分为很多种&#xff1a;SVD、LFM、BiasSVD和SVD。 Traditional SVD 一般SVD矩阵分解指的是SVD奇异值分解&#xff0c;将矩阵分解成三个相乘矩阵&#xff0c;中间矩阵就是奇异值矩阵。SVD分解的前提是矩阵是稠密的&#xff0c;现实场景中数据都是稀疏的&#x…