Centos7.9环境下安装Keepalived(亲测版)

目录

一、在线安装

二、离线安装

(1)、 下载

(2)、安装依赖包

(3)、解压文件 

(4)、编译

(4.1)、进入 keepalived-2.2.8 目录中

(4.2)、安装Keepalived

 (5)、配置文件修改

 (6)、启动

 (7)、检查启动状态

(8)、 设置开机自启

 (9)、配置从节点

 (10)、启动从节点keepalived

 (11)、检查从节点状态

(12)、主从节点差异

三、验证VIP漂移

(1)、主节点停止keepalived

(2)、查看从节点状态

(3)、启动主节点

(4)、查看主从状态

四、配置非抢占式

(1)、概念

(2)、非抢占配置

(3)、vip漂移演示

五、问题 

(1)、脑裂问题

(1.1)、现象:

 (1.2)、脑裂故障原因

 (1.3)、故障排查

(1.4)、处理办法之关闭防火墙

(1.5)、处理办法之添加vrrp协议

(2)、WARNING - this build will not support IPVS with IPv6

(2.1)、处理方式:


一、在线安装

执行命令

yum install keepalived

 执行完成后,修改配置文件并启动,配置文件启动方法参考离线安装方式

二、离线安装

(1)、 下载

下载源码包,根据自己需要选择版本,本次安装使用的是2.2.8版本

(2)、安装依赖包

keepalived依赖包有openssl-devel 、net-snmpdevel、libnl、libnl-devel,需要先安装,安装方法可以参考本人nginx安装文章,整体安装的包在nginx基础上多两个,可能会有些雍余,但是不影响。

具体明细如下图:

执行命令

rpm -Uvh *.rpm --nodeps --force

 

(3)、解压文件 

(4)、编译

(4.1)、进入 keepalived-2.2.8 目录中

(4.2)、安装Keepalived

依次执行命令:

./configure --prefix=/usr/local/keepalived

make

make install

prefix后边的路径为keepalived安装的路径

 

 进入到/usr/local下可以看到keepalived安装目录

 (5)、配置文件修改

进入目录/usr/local/keepalived/etc/keepalived

复制keepalived.conf.sample  并且命名为keepalived.conf

修改配置文件 keepalived.conf

! Configuration File for keepalived

global_defs { #全局配置

   router_id lb132  #标识身份->名称
 
}

vrrp_instance VI_1 { #vrrp 实例定义部分 VI_1
    state MASTER #标识角色状态:主节点
    interface ens33 #网卡绑定接口:绑在ens33 上
    virtual_router_id 51 #虚拟路由id
    priority 100  #优先级 主节点值要大于备用节点
    advert_int 1 #监测间隔时间:1秒
    authentication { #认证
        auth_type PASS #认证方式 主从节点要一致
        auth_pass 1111 #认证密码  主从节点要一致
    }
    virtual_ipaddress {
        192.168.75.131 #虚拟的VIP地址
    }
}

 (6)、启动

systemctl start keepalived

 (7)、检查启动状态

systemctl status keepalived

或者 ip a

 

 

(8)、 设置开机自启

systemctl enable keepalived

 (9)、配置从节点

在从节点服务器中按以上步骤安装keepalived,对应的配置文件与主节点有些差别,具体如下

! Configuration File for keepalived

global_defs {

   router_id lb129
 
}

vrrp_instance VI_1 {
    state BACKUP #标识角色状态:备节点
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.75.131
    }
}

 (10)、启动从节点keepalived

systemctl start keepalived

 (11)、检查从节点状态

systemctl status keepalived

或者 ip a

 从节点此时不应该有虚拟vip

(12)、主从节点差异

keepalived配置区别Master节点配置Backup节点配置
router_id(唯一标识)router_id lb132router_id lb129
state(角色状态)state MASTERstate BACKUP
priority(优先级)priority 100priority  50

三、验证VIP漂移

(1)、主节点停止keepalived

systemctl stop keepalived

#查看状态

ip a

(2)、查看从节点状态

ip a

(3)、启动主节点

systemctl start keepalived

 

(4)、查看主从状态

四、配置非抢占式

(1)、概念

上边的配置方式都是抢占方式,即如果Master故障,Backup自动接管,Master恢复后会夺权,

所以抢占方式与非抢占方式的区别为:

  • 抢占式:如果Master恢复后将VIP抢回来,就叫抢占式
  • 非抢占式:节点都是BACKUP,只要节点成为为VIP,其他节点就是启动恢复,哪怕式权重高也不会把VIP抢回来,就叫非抢占式。 

(2)、非抢占配置

配置步骤:

 1.两个节点上的state都必须配置为BACKUP

  2.两个节点都必须加上配置nopreempt

  3.其中一个节点的优先级必须高于另一个节点的优先级

两个节点配置如下:

## lb132

! Configuration File for keepalived

global_defs {

   router_id lb132

}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.75.131
    }
}
 

## lb129


! Configuration File for keepalived

global_defs {

   router_id bl129

}

vrrp_instance VI_1 {
    state BACKUP
    nopreempt
    interface ens33
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.75.131
    }
}

(3)、vip漂移演示

分别启动129和132服务中的keepalived服务,虽然132的权重比较高,但是因为是非抢占式并且129先启动的,所以vip不会漂移到132中。这也说明非抢占模式只要

五、问题 

(1)、脑裂问题

(1.1)、现象:

如果两台服务器都认为自己是Master,就会出现VIP在两台服务器上,造成冲突

 

 (1.2)、脑裂故障原因

  • 服务器网线松动等网络故障
  • 服务器硬件故障发生损坏现象而崩溃
  • 主备都开启firewalld防火墙
  • 配置文件错误

 (1.3)、故障排查

先排查对应的配置文件是否有错误,确保配置文件没有问题

如果配置文件没有错误,则重启keepalived服务

systemctl restart keepalived

观察日志

 tail -f /var/log/messages

 主节点重启后,它会直接去抢MASTER,日志如下:

 从节点重启后,先是进入BackUp状态,然后马上又会争抢进入Master状态,日志如下:

日志显示,从节点先进入 BACKUP,但是紧接着从节点Receive advertisement timeout,接收广播超时后,进入主节点状态。

此时检查了服务器防火墙状态发现,防火墙状态是开启状态。

(1.4)、处理办法之关闭防火墙

关闭从节点防护墙,查看日志发现,从节点正常

 这种关闭防火墙的方式可以解决此问题,但在线上是不可行的。

(1.5)、处理办法之添加vrrp协议

通过命令查看防火墙当前配置

firewall-cmd --list-all

通过命令添加协议

firewall-cmd --zone=public --add-protocol=vrrp --permanent

#重启防火墙

firewall-cmd --reload

查看从节点状态

从节点状态正常

(2)、WARNING - this build will not support IPVS with IPv6

(2.1)、处理方式:

执行./configure --prefix=/usr/local/keepalived 时候报该警告,是因为对应的依赖libnl、libnl-devel没有安装,直接安装如下的对应的依赖包即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/19989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3中实现鼠标点击后出现点击特效

一、效果展示 图片下方为效果体验地址 缓若江海凝清光 二、代码 js中&#xff1a; <script setup lang"ts"> window.addEventListener("click", (e: MouseEvent) > {const pointer document.createElement("div");pointer.classLi…

Oracle索引的在线添加方法

在Oracle中&#xff0c;索引的在线添加方法主要是通过使用CREATE INDEX语句时添加ONLINE选项来实现的。以下是关于Oracle索引在线添加方法的详细步骤和要点&#xff1a; 了解在线添加索引的概念&#xff1a; 在线添加索引意味着在创建索引的过程中&#xff0c;其他数据库操作…

头歌数据结构与算法课程设计中-硬币找零

给定n种不同面值的硬币k_i和每种硬币的数量x_i以及一个总金额k,请编写一个程序计算最少需要几枚硬币凑出这个金额k,凑出的方案是什么? 如果凑不出则输出“凑不出” 输入描述: 第一行两个正整数,n和k 然后n行每行两个数k_i和x_i 表示k_i面值的硬币有x_i个,中间以空格分隔 输…

k8s处于pending状态的原因有哪些

k8s处于pending状态的原因 资源不足&#xff1a;集群中的资源&#xff08;如CPU、内存&#xff09;不足以满足Pod所需的资源请求&#xff0c;导致Pod无法调度。 调度器问题&#xff1a;调度器无法为Pod找到合适的节点进行调度&#xff0c;可能是由于节点资源不足或调度策略配置…

数模混合芯片之可靠性设计

一、可靠性设计目的 数模混合芯片设计之所以需要可靠性设计&#xff0c;主要原因有以下几点&#xff1a; 工艺与环境影响&#xff1a; 半导体制造工艺存在着不可避免的随机和系统性偏差&#xff0c;这可能导致芯片内部的模拟电路和数字电路参数发生变化&#xff0c;影响性能…

CobaltStrike基本渗透

目录 CobaltStrike简介 主要功能&#xff1a; 使用注意&#xff1a; 在使用CobaltStrike进行渗透测试时&#xff0c;务必遵守法律法规&#xff0c;并获得合法授权。 CobaltStrike安装 前提 安装 服务端安装 windows安装 CS基本使用 监听器配置 一些基本的攻击…

算法(十四)动态规划

算法概念 动态规划&#xff08;Dynamic Programming&#xff09;是一种分阶段求解的算法思想&#xff0c;通过拆分问题&#xff0c;定义问题状态和状态之间的关系&#xff0c;使得问题能够以递推&#xff08;分治&#xff09;的方式去解决。动态规划中有三个重点概念&#xff…

【监控】prometheus自定义指标 exporter

一、【写在前面】 prometheus自定义指标本质是用代码自己写一个网络访问的采集器&#xff0c;你可以在官网看到&#xff0c;Client libraries | Prometheus官方支持的语言有GO JAVA PYTHON RUBY RUST, 第三方的库就支持的更多了&#xff0c;有BASH C CPP LUA C# JS PHP R PER…

智慧医院物联网建设-统一管理物联网终端及应用

近年来&#xff0c;国家卫健委相继出台的政策和评估标准体系中&#xff0c;都涵盖了强化物联网建设的内容。物联网建设已成为智慧医院建设的核心议题之一。 作为医院高质量发展的关键驱动力&#xff0c;物联网的顶层设计与网络架构设计规划&#xff0c;既需要结合现代信息技术的…

Keras深度学习框架基础第四讲:层接口(layers API)“层权重约束”

1、层权重约束概述 1.1 层权重约束的定义 Keras层权重约束的定义主要涉及到在训练神经网络模型时&#xff0c;对层的权重参数施加一定的限制或约束&#xff0c;以提高模型的泛化能力和稳定性。以下是关于Keras层权重约束的详细定义&#xff1a; 约束的目的&#xff1a; 防止…

APM编程环境:深度探索与未来展望

APM编程环境&#xff1a;深度探索与未来展望 APM编程环境&#xff0c;一个充满神秘与挑战的领域&#xff0c;吸引了无数开发者与研究者的目光。这个环境不仅提供了强大的编程工具与平台&#xff0c;更在编程逻辑、代码优化等方面展现了前所未有的可能性。接下来&#xff0c;我…

「前端+鸿蒙」核心技术HTML5+CSS3(六)

1、CSS默认宽度详解 在CSS中,默认情况下,块级元素(如<div>、<p>等)的宽度是auto,这意味着它们会根据内容自动调整宽度。内联元素(如<span>、<a>等)的宽度同样会根据其内部内容的宽度来决定。 为了控制元素的宽度,可以使用width属性来手动设置…

Python3位运算符

前言 本文介绍的是位运算符&#xff0c;位运算可以理解成对二进制数字上的每一个位进行操作的运算&#xff0c;位运算分为 布尔位运算符 和 移位位运算符。 文章目录 前言一、位运算概览1、布尔位运算符1&#xff09;按位与运算符 ( & )2&#xff09;按位或运算符 ( | )3…

一款C#开源、简单、免费的屏幕录制和GIF动画制作神器

前言 今天要给大家推荐一款由C#语言开发且开源的操作简单、免费的屏幕录制和GIF动画制作神器&#xff1a;ScreenToGif 。 工具介绍 ScreenToGif 是一款免费的开源屏幕录制和GIF 制作工具。它可以帮助用户捕捉计算机屏幕上的实时动画&#xff0c;并将其保存为高质量的 GIF 图像…

开发者工具-sources(源代码选项)

一、概要说明 源代码面板从视觉效果上分为三个区域&#xff1a;菜单区、内容区、监听区。 菜单区里面有5个子分类&#xff1a; 网页(Page)&#xff1a;指页面源&#xff0c;包含了该页面中所有的文件&#xff0c;即使多个域名下的文件也都会展示出来&#xff0c;包括iframe…

手机耳机哪个品牌音质好

在寻找音质出色的手机耳机时&#xff0c;品牌选择显得尤为重要。市场上众多知名品牌提供了各式各样的耳机产品&#xff0c;它们在音质、降噪功能、设计等方面各有千秋。以下是一些在音质上表现优异的手机耳机品牌的分析&#xff1a; 索尼&#xff1a;索尼的耳机以其卓越的降噪技…

开利网络参加广州数据交易所学习活动

开利网络做为南沙广州数据交易所的会员参加了由“广东三会”组织的“数据资产”相关学习活动。&#xff08;下图为开利董事长付立军先生在签到&#xff09; 学习内容提现了数字时代企业数字化转型的核之心“发掘数据价值&#xff0c;驱动高速发展”&#xff0c;交易中心组织大家…

如何解决mac系统mkdir命令不可用?

Mac系统mkdir命令不可用有两种 第一种&#xff1a; 提示&#xff1a;mkdir:11:command not found 解决方案&#xff1a; 选择shell->新建命令&#xff0c;输入disabled_shell_files命令运行&#xff0c;他会在你的主目录下创建一个disabled_shell_files文件夹&#xff0…

5G NR TAE TEST

环境配置&#xff1a; 测试TAE时&#xff0c;需要比对不同的Antenna Port之间的差异来测试 配置DL 2 layer MU的case layer1&#xff1a;通过设置weight&#xff0c;只有一个物理天线上有weight&#xff0c;其他天线上的weight为0&#xff0c;该天线的DMRS DMRS Port设置为1…

es6中箭头的用法

在ES6&#xff08;ECMAScript 2015&#xff09;中&#xff0c;箭头函数&#xff08;Arrow Functions&#xff09;提供了一种更简洁的函数表达式语法&#xff0c;并且它们不绑定自己的this、arguments、super或new.target。这些值由外围的正常函数值&#xff08;即包含箭头函数的…