keepalived 实现 IP 地址漂移

news2024/11/16 11:42:48

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、实验环境

二、安装软件

2.1 安装 keepalived 和 ipvsadm

2.2 安装 httpd

2.3 配置修改

2.4 启动服务

三、测试 keepalived

四、总结


本篇文章主要介绍 keepalived 的配置,实现 VIP 漂移。

一、实验环境

实验环境为 CentOS 7.9,如下所示。

[root@k8s-node-1 node]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
[root@k8s-node-1 node]#

准备两台同样的机器,配置如下。

实验机器
名称系统IP
mastercentos7.9192.168.231.152 
slavecentos7.9192.168.231.151

二、安装软件

2.1 安装 keepalived 和 ipvsadm

分别在 master 和 slave 上安装 keepalived 包,执行命令如下所示。

[root@k8s-node-1 node]# yum -y install keepalived ipvsadm
[root@k8s-node-1 node]# systemctl enable keepalived

上面两个命令分别是安装软件包 keepalived 和 ipvsadm,然后设置 keepalived 开机自启动。

2.2 安装 httpd

[root@k8s-node-1 node]# yum -y install httpd
[root@k8s-node-1 node]# systemctl enable httpd

2.3 配置修改

(1)master 机器

添加 index.html,执行如下命令。

[root@k8s-master node]# echo "<h1>This is master</h1>" > /var/www/html/index.html

修改 keepalived 的配置文件 /etc/keepalived/keepalived.conf,如下所示。

! Configuration File for keepalived

global_defs {
   router_id 1
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 1
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.231.160
    }
}

(2)slave 机器

添加 index.html,执行如下命令。

[root@k8s-node-1 node]# echo "<h1>This is backup</h1>" > /var/www/html/index.html

修改 keepalived 的配置文件 /etc/keepalived/keepalived.conf ,如下所示。

! Configuration File for keepalived
global_defs {
   router_id 2
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 1
    nopreempt
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.231.160
    }
}

其中,配置文件的规则如下所示。

global_defs {
    router_id 1 //router_id 自定义,主备不能相同,备:router_id 2
}
vrrp_instance VI_1 {
    state MASTER // 主:state MASTER,备:state BACKUP
    interface eth0 // 改为自己网卡名称
    virtual_router_id 1 // 组的ID,主备要一致
    mcast_src_ip 192.168.231.150 // 本段服务器IP
    priority 100 // 优先级,主要高于备,备改为99
    advert_int 1 // 通告间隔描述,心跳频率
    nopreempt    // 不抢夺 VIP 重要!
    authentication {
    auth_type PASS // 主备一致
    auth_pass 123456 // 主备一致
    virtual_ipaddress {
        192.168.231.160 // 指定的VIP,主备一致
    }
}

(3)关闭防火墙

关闭防火墙,谨慎操作,仅用于测试环境。 

[root@k8s-node-1 node]# systemctl stop firewalld.service

2.4 启动服务

分别在 master 和 slave 节点上执行如下命令,启动 keepalived。

[root@k8s-node-1 node]# systemctl start keepalived.service

分别在 master 和 slave 节点上执行如下命令,启动 httpd。

[root@k8s-node-1 node]# systemctl start httpd

三、测试 keepalived

首先,在 master 上执行命令 ip a,查看是否已经配置成功。

[root@k8s-master node]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ca:f5:28 brd ff:ff:ff:ff:ff:ff
    inet 192.168.231.152/24 brd 192.168.231.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.231.160/32 scope global ens33  # 出现这个表示配置成功!!!
       valid_lft forever preferred_lft forever
    inet6 fe80::e3a3:533b:4112:90d5/64 scope link tentative noprefixroute dadfailed
       valid_lft forever preferred_lft forever
    inet6 fe80::57e:3922:f35e:9904/64 scope link tentative noprefixroute dadfailed
       valid_lft forever preferred_lft forever
    inet6 fe80::1bb3:d02e:702b:d4dc/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:84:91:8b brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:84:91:8b brd ff:ff:ff:ff:ff:ff
[root@k8s-master node]#

如上所示,出现 192.168.231.160 的 IP 表示配置成功,通过在浏览器中输入 192.168.231.160,执行结果如下所示。

图1 访问结果

 你可以进一步进行测试,例如:关掉 master 节点,在浏览器中输入 192.168.231.160 后执行结果如下所示。

图2 访问结果

 如果再次将 master 节点启动起来,在浏览器中输入 192.168.231.160 后执行结果如下所示。

图1 访问结果

四、总结

本篇文章介绍到这里,有问题欢迎在评论区交流,后续会更新 keepalived 的原理,敬请期待!

参考链接:

CentOS7 部署 Keepalived保姆级教程_centos7 keepalived_未来村长的博客-CSDN博客

 Keepalived 设置master故障恢复后不重新抢回VIP(解决nopreempt无效)_征服.刘华强的博客-CSDN博客


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


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

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

相关文章

基于redis实现延时队列(二)

背景 上篇文章中使用了redis的zset定时器实现延时任务&#xff0c;虽然定时器设置为30秒执行一次&#xff0c;但是还是有时间上的差异化&#xff1b;现更换一种方式实现&#xff0c;可以避免时间上的差异。 redis的key过期回调事件&#xff0c;也能达到延迟队列效果 配置修改…

抖音短视频seo矩阵源码开源SaaS部署(四)

目录 一、 抖音短视频SEO矩阵包括以下内容&#xff1a; ​编辑 二、 源码开源部署流程 三、 SaaS的理解 四、 抖音短视频seo&#xff0c;SaaS矩阵部署用到的技术 抖音短视频SEO主要是通过以下几个方面实现的&#xff1a; SaaS矩阵部署主要用到的技术包括以下几个方面&…

深蓝学院C++基础与深度解析笔记 第 11 章 类

深蓝学院C基础与深度解析笔记 第 11 章 类 1. 结构体与对象聚合 **● 结构体&#xff1a;**对基本数据结构进行扩展&#xff0c;将多个对象放置在一起视为一个整体 – 结构体的声明与定义&#xff08;注意定义后面要跟分号来表示结束&#xff09; – 仅有声明的结构体是不完全…

【Linux后端服务器开发】共享内存

目录 一、共享内存概述 二、共享内存&#xff08;IPC资源&#xff09;的查看——ipcm 三、共享内存的创建——shmget 四、共享内存的控制&#xff08;删除&#xff09;——shmctl 五、共享内存的关联——shmat 六、共享内存去关联——shmdt 七、进程间通信 一、共享内存…

力扣 -- 309. 最佳买卖股票时机含冷冻期

题目链接&#xff1a;309. 最佳买卖股票时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码&#xff1a; class Solution { public:int maxProfit(vec…

基于matlab使用深度神经网络对肿瘤图像进行分类(附源码)

一、前言 此示例演示如何使用 Inception-v3 深度神经网络对可能不适合内存的多分辨率全玻片图像 &#xff08;WSI&#xff09; 进行分类。 用于肿瘤分类的深度学习方法依赖于数字病理学&#xff0c;其中整个组织切片被成像和数字化。生成的 WSI 具有高分辨率&#xff0c;大约…

Openlayers实战:平移、弹性平移、飞行动画

Openlayers地图上经常会遇到这样的一种 场景,获取到某数据后,会重新定位中心点到某个位置,这里可以用setCenter([lon,lat]), 更可以用动画的形式展现。 在本实战中,展示出平移、弹性平移、飞行的动画。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑…

【图像处理OpenCV(C++版)】——5.5 图像平滑之双边滤波

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

第三十六天 Java基础学习(三十)

一、Spring MVC 组件是将处理某类问题的代码进行封装的整体模块。一个大的问题可以拆分为不同的小问题&#xff0c;解决每个小问题的代码封装可以称之为组件&#xff0c;但是组件又是无法独立运行的&#xff0c;必须结合其他组件一起才能最终解决问题。就好比汽车&#xff0c;…

同步任务和异步任务的执行过程

同步任务和异步任务的执行过程 1、执行过程描述2、EventLoop的概念 1、执行过程描述 同步任务 是由JS主线程按次序执行异步任务委托给宿主环境执行已完成的异步任务对应的回调函数&#xff0c;会被加入到任务队列中等待执行JS的主线程的执行栈被清空后&#xff0c;会读取任务队…

Java026——System 类和Scanner 类

一、System 类 1.1、System 类提供的常用方法 方法 功能描述 ----------------------------------------------------------------------------------------------------------------------- currentTimeMillis() 返回当前计算机时间 和 格林威治时间&#xff…

mysql查询练习

1.创建表 CREATE TABLE worker( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL,工资 float(8,2) NOT NULL,政治面貌 varchar(10) NOT NULL DEFAULT 群众 , 姓名 varchar(20) NOT NULL,出生日期 date NOT NULL,PRIMARY KEY (职工号))ENGINE…

4.3Java EE——一对多查询

用户与订单关联关系图​​​​​​​ 与一对一的关联关系相比&#xff0c;接触更多的关联关系是一对多&#xff08;或多对一&#xff09;。例如一个用户可以有多个订单&#xff0c;多个订单也可以归一个用户所有。用户和订单的关联关系如图。 一、<collection>元素 在MyB…

前端技术学习第九讲:VUE基础语法---VUE常用指令

VUE常用指令 在VUE学习中&#xff0c;通常使用相关指令使VUE对象中的内容与网页进行挂载绑定&#xff0c;是我们的数据与视图之间产生关联&#xff0c;完成渐进式动态效果。VUE指令都会以“v-”开头。 指令名描述v-text将文本内容挂载到页面元素中v-html将html代码展示到页面…

更开放、更高性能、更具规模,闪马智能布局AGI时代

7月6日&#xff0c;2023世界人工智能大会&#xff08;WAIC 2023&#xff09;在上海盛大开幕。本届大会以“智联世界 生成未来”为主题&#xff0c;聚焦通用人工智能发展&#xff0c;共话产业新未来。 8日上午&#xff0c;由上海闪马智能科技有限公司&#xff08;下称“闪马智能…

ZGC垃圾收集器(-XX:+UseZGC)

ZGC在jdk11只支持Linux版本&#xff0c;4TB的内存&#xff0c;STW时间控制在10ms内&#xff1b;jdk16已经支持16TB的内存&#xff0c;STW时间不超过1ms&#xff0c;下面主要针对jdk11版本的详解 一、堆内存结构 ZGC堆内存分为三种类型的页面即小页面&#xff08;空间大小2M&a…

CYCLO (L-ALA-L-ALA),5845-61-4,环(丙氨酰-丙氨酰),氨基酸中间体

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ 【产品描述】 cyclo(Ala-Ala)氨基酸中间体&#xff0c;主要由丙氨酰组成 【中文名称】环(丙氨酰-丙氨酰) 【英文名称】 cyclo(Ala-Ala)&#xff0c;CYCLO (L-ALA-L-ALA) 【结 构 式】 【CAS】5845-61-4 【分子式】C6H10N2O…

C#制作打包安装程序,安装程序类使用

这里写目录标题 安装Microsoft Visual Studio Installer Projects创建安装项目设置安装程序文件设置程序桌面图标给程序设置安装程序名称安装程序类怎么使用Installer1.cs自定义安装步骤自定义设置安装程序路径&#xff0c;让用户安装时不能选择安装路径生成安装包 安装Microso…

实例011 在状态栏中显示检查框

实例说明 在设计程序界面时&#xff0c;为了规范界面&#xff0c;可以将一些控件放置在状态栏中&#xff0c;这样既能起到控制程序的作用&#xff0c;又能使界面和谐、美观。运行程序&#xff0c;在窗体的状态栏中加入了显示时间检查框。效果如图1.11所示。 技术要点 在状态…

对Linux系统对Spark开发环境配置

单机版本 上传对应文件&#xff0c;解压文件&#xff0c;并查看 unzip scala-2.12.12.zip tar -xzf spark-3.2.0-bin-hadoop2.7.tgz 移动scala及spark安装包到指定目录下 在opt目录下移动该文件到/usr目录下 mv scala-2.12.12 /usr/scala/ mv spark-3.2.0-bin-hadoop2.7 /…