lvs+keepalived+dns高可用

1.配置dns相关服务
1.1修改ip地址主机名
dns-master:
hostnamectl hostname lvs-master
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
dns-salve:
hostnamectl hostname lvs-slave
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.108/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
1.2配置仓库,下载bind服务
vim /etc/yum.repos.d/yum.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
挂载
mount /dev/sr0 /mnt
下载
dnf install bind -y
关闭防火墙和selinux服务
systemctl stop firewalld
setenforce 0
1.3配置dns相关文件
dns-master:
vim /etc/named.conf
options {listen-on port 53 { 10.10.10.107;10.10.10.200; };directory "/var/named";
};zone "example.com" IN {type master;file "example.com";
};
vim /var/named/example.com
$TTL 1D
@ IN SOA @ amdin.example.com. (0 1D 1H 2H 2D)IN NS ns1IN NS ns2
ns1 IN A 10.10.10.107
ns2 IN A 10.10.10.108
www IN A 10.10.10.200
启动服务并测试:
systemctl start named
dig -t A www.example.com @10.10.10.107
dig -t ns example.com @10.10.10.107
[root@dns-master ~]# dig -t ns example.com @10.10.10.107
; <<>> DiG 9.16.23-RH <<>> -t ns example.com @10.10.10.107 ;; global
options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status:
NOERROR, id: 14914 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2,
AUTHORITY: 0, ADDITIONAL: 3;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE:
f8f87f0c77258da70100000067fa038f37c0baa6b48666c1 (good) ;; QUESTION
SECTION: ;example.com. IN NS;; ANSWER SECTION: example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.;; ADDITIONAL SECTION: ns1.example.com. 86400 IN A 10.10.10.107
ns2.example.com. 86400 IN A 10.10.10.108;; Query time: 0 msec ;; SERVER: 10.10.10.107#53(10.10.10.107) ;;
WHEN: Sat Apr 12 14:09:19 CST 2025 ;; MSG SIZE rcvd: 136
[root@dns-master ~]# dig -t A www.example.com @10.10.10.107; <<>> DiG 9.16.23-RH <<>> -t A www.example.com @10.10.10.107 ;;
global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY,
status: NOERROR, id: 41021 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,
AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE:
915f2990163d16460100000067fa03b5ec98879ed99ed361 (good) ;; QUESTION
SECTION: ;www.example.com. IN A;; ANSWER SECTION: www.example.com. 86400 IN A 10.10.10.200
;; Query time: 0 msec ;; SERVER: 10.10.10.107#53(10.10.10.107) ;;
WHEN: Sat Apr 12 14:09:57 CST 2025 ;; MSG SIZE rcvd: 88
dns-slave:
vim /etc/named.conf
options {listen-on port 53 { 10.10.10.108 ;10.10.10.200 ; };directory "/var/named";
};zone "example.com" IN {type slave;file "slaves/example.com";masters {10.10.10.107 ;};
};
2.配置web相关服务
2.1修改ip地址和主机名
web01:
hostnamectl hostname web01
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.201/24 ipv4.gateway 10.10.10.2 ipv4.dns "10.10.10.107 10.10.10.108" connection.autoconnect yes
nmcli c up ens160
web02:
hostnamectl hostname web02
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.202/24 ipv4.gateway 10.10.10.2 ipv4.dns "10.10.10.107 10.10.10.108" connection.autoconnect yes
nmcli c up ens160
web03:
hostnamectl hostname web03
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.203/24 ipv4.gateway 10.10.10.2 ipv4.dns "10.10.10.107 10.10.10.108" connection.autoconnect yes
nmcli c up ens160
2.2配置仓库,下载nginx服务
vim /etc/yum.repos.d/yum.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
挂载
mount /dev/sr0 /mnt
下载
dnf install nginx -y
关闭防火墙和selinux服务
systemctl stop firewalld
setenforce 0
1.3配置dns相关文件
web01:
vim /etc/nginx/conf.d/web.conf
server{server_name www.example.com;listen 80;root /usr/share/nginx/html/index.html;
}
echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
web02:
vim /etc/nginx/conf.d/web.conf
server{server_name www.example.com;listen 80;root /usr/share/nginx/html/index.html;
}
echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
web03:
vim /etc/nginx/conf.d/web.conf
server{server_name www.example.com;listen 80;root /usr/share/nginx/html/index.html;
}
echo $(hostname) - $(hostname -I) > /usr/share/nginx/html/index.html
修改dns
nmcli c modify ens160 ipv4.dns 10.10.10.100
开启和测试nginx服务
systemctl start nginx
curl localhost
[root@web01 ~]# curl localhost web01 - 10.10.10.201 [root@web02 ~]#
curl localhost web01 - 10.10.10.202 [root@web03 ~]# curl localhost
web01 - 10.10.10.203
3.配置lvs相关服务
3.1修改ip地址和主机名
lb-master:
hostnamectl hostname lb-master
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.105/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
lb-salve:
hostnamectl hostname lb-salve
nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.106/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
nmcli c up ens160
3.2配置仓库,下载keepalived ipvsadm服务
vim /etc/yum.repos.d/yum.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0
挂载
mount /dev/sr0 /mnt
下载
dnf install keepalived ipvsadm -y
关闭防火墙和selinux服务
systemctl stop firewalld
setenforce 0
3.3配置keepalived相关文件
lb-master:
vim /etc/keeailved;keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_MASTER
}vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.100}
}vrrp_instance VI_2 {state BACKUPinterface ens160virtual_router_id 50priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.200}
}
virtual_server 10.10.10.100 53 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 10protocol UDPreal_server 10.10.10.107 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.107 txt.example.com"}}real_server 10.10.10.108 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.108 txt.example.com"}}
}virtual_server 10.10.10.200 80 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 10protocol TCPreal_server 10.10.10.201 80 {weight 3TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.202 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.203 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}
}
lb-slave:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_BACKUP
}vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.100}
}vrrp_instance VI_2 {state MASTERinterface ens160virtual_router_id 50priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.200}
}
virtual_server 10.10.10.100 53 {delay_loop 6lb_algo rrlb_kind NATpersistence_timeout 10protocol UDPreal_server 10.10.10.107 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.107 txt.example.com"}}real_server 10.10.10.108 53 {weight 1MISC_CHECK {connect_timeout 3misc_path "/etc/keepalived/checkdns.sh -h 10.10.10.108 txt.example.com"}}
}virtual_server 10.10.10.200 80 {delay_loop 6lb_algo wrrlb_kind DRpersistence_timeout 10protocol TCPreal_server 10.10.10.201 80 {weight 3TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.202 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}real_server 10.10.10.203 80 {weight 1TCP_CHECK {connect_timeout 3retry 3delay_before_retry 3}}
}
3.4编写执行的脚本
vim /etc/keepalived/checkdns.sh
#!/bin/bash
[ $# -le 2 ] && { echo "usage: $0 -h <ip>"; exit 2; }
domain=$3
while getopts "h:" OPT; docase $OPT inh)host=$OPTARG;;*)echo "usage: $0 -h <ip>" && exit 1;;esac
done
dig @${host} txt ${domain} +time=1 | grep "\<AaBbCcDdEeFf\>" >
/dev/null
exit $?
chmod a+x /etc/keepalived/checkdns.sh
3.5启动服务
systemctl start keepalived ipvsadm
查看lvs规则
ipvsadm -ln
4.修改web的dns增加ip
nmcli c modify ens160 ipv4.dns 10.10.10.100
nmcli c modify ens160 up
ifconfig lo:0 10.10.10.200 netmask 255.255.255.255
route add -host 10.10.10.200 dev lo:0
5.增加dns路由
ifconfig lo:0 10.10.10.100 netmask 255.255.255.255
route add -host 10.10.10.100 dev lo:0
6.测试


相关文章:
lvs+keepalived+dns高可用
1.配置dns相关服务 1.1修改ip地址主机名 dns-master: hostnamectl hostname lvs-master nmcli c modify ens160 ipv4.method manual ipv4.addresses 10.10.10.107/24 ipv4.gateway 10.10.10.2 ipv4.dns 223.5.5.5 connection.autoconnect yes nmcli c up ens160dns-salve: h…...
Spark RDD相关概念
Spark运行架构与核心组件 1.Spark运行梁构 spark运行架构包括master和slave两个主要部分。master负责管理整个集群的作业任务调度,而slave则负责实际执行任务。 dirver是Spark驱动器节点,负责执行Spark任务中的main方法,将用户程序转换成作业…...
雷池WAF防火墙如何构筑DDoS防护矩阵?——解读智能语义解析对抗新型流量攻击
本文深度解析雷池WAF防火墙在DDoS攻防中的技术突破,通过智能语义解析、动态基线建模、协同防护体系三大核心技术,实现从流量特征识别到攻击意图预判的进化。结合2023年金融行业混合攻击防御案例,揭示新一代WAF如何通过协议级漏洞预判与AI行为…...
网络互连与互联网
1.在路由表中找不到目标网络时使用默认路由,默认路由通常指本地网关的地址。 2.OSPF最主要的特征是使用分布式链路状态协议,而RIP使用的是距离向量协议。 3.OSPF使用链路状态公告LSA扩散路由信息 4.内部网关路由协议IGRP是一种动态距离矢量路由协议&a…...
Pytorch实现基于FlowS-Unet的遥感图像建筑物变化检测方法
基于FlowS-Unet的遥感图像建筑物变化检测方法是一种结合深度学习与细化结构的先进技术,旨在提高建筑物变化检测的精度和鲁棒性。 一、FlowS-Unet的核心架构与原理 FlowS-Unet是在经典U-Net网络基础上改进的模型,主要引入了超列(Hypercolumns)和FlowNet细化结构,通过多尺…...
什么是柜台债
柜台债(柜台债券业务)是指通过银行等金融机构的营业网点或电子渠道,为投资者提供债券买卖、托管、结算等服务的业务模式。它允许个人、企业及机构投资者直接参与银行间债券市场的交易,打破了以往仅限机构参与的壁垒。以下是综合多…...
SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记
目录 前言 背景与需求 代码改进方案 运行过程: 1、Run编辑 2、过程: 3、过程时间线: 4、最终效果展示: 总结与展望 前言 机器学习缺点之一:即不可解释性。最近,我在使用stable diffusion v1.5 Co…...
【ROS2】行为树:BehaviorTree
1、简介 与状态机不同,行为树强调执行动作,而不是状态之间的转换。 行为树是可组合的。可以重复使用简单的行为来构建复杂的行为。 在游戏领域,行为树已经比较流行了。主要用于维护游戏角色的各种动作和状态。 ROS2的导航框架Navigation2中引入了行为树来组织机器人的工作流…...
《JVM考古现场(十八):造化玉碟·用字节码重写因果律的九种方法》
"鸿蒙初判!当前因果链突破十一维屏障——全体码农修士注意,《JVM考古现场(十八)》即将渡劫飞升!" 目录 上卷阴阳交缠 第一章:混沌初开——JVM因果律的量子纠缠 第二章:诛仙剑阵改—…...
使用nuxt3+tailwindcss4+@nuxt/content3在页面渲染 markdown 文档
nuxt3tailwindcss在页面渲染 markdown 文档 页面效果 依赖 “nuxt/content”: “^3.4.0” “tailwindcss”: “^4.0.10” “nuxt”: “^3.16.2” “tailwindcss/vite”: “^4.0.10” tailwindcss/typography (这个是格式化 md 样式用的) 注意: 这里nuxt/content…...
[250412] OpenSSH 10.0 发布,移除DSA算法,sshd默认禁用有限域DH,并分离认证代码
目录 OpenSSH 10.0 正式发布:关键更新摘要主要变更亮点(潜在不兼容性) OpenSSH 10.0 正式发布:关键更新摘要 OpenSSH 10.0 已于 2025 年 4 月 9 日发布,现在可以从官网列出的镜像站点获取最新版本。 OpenSSH 是一个广…...
部署NFS版StorageClass(存储类)
部署NFS版StorageClass存储类 NFS版PV动态供给StorageClass(存储类)基于NFS实现动态供应下载NFS存储类资源清单部署NFS服务器为StorageClass(存储类)创建所需的RBAC部署nfs-client-provisioner的deployment创建StorageClass使用存储类创建PVC NFS版PV动态供给StorageClass(存储…...
JS【详解】迭代器 Iterator(含可迭代对象、同步迭代器、异步迭代器等)
什么是迭代器? JS 迭代器是一种遍历访问数据结构中所有成员的机制,本质是一个指针对象。 为什么要有迭代器? 为各种不同的数据结构提供统一的访问机制。自定义数据结构的遍历:当你创建了一个自定义的数据结构时,可以实…...
CFS 调度器两种调度类型普通调度 和 组调度
在 Linux 的 CFS(Completely Fair Scheduler) 调度器中,确实存在两种调度类型:普通调度 和 组调度。这两种调度类型分别适用于不同的场景,并通过三个关键维度(权重、抢占优先级、最大配额)来影响…...
Linux网络编程——详解网络层IP协议、网段划分、路由
目录 一、前言 二、IP协议的认识 1、什么是IP协议? 2、IP协议报头 三、网段划分 1、初步认识IP与路由 2、IP地址 I、DHCP动态主机配置协议 3、IP地址的划分 I、CIDR设计 II、子网数目的计算 III、子网掩码的确定 四、特殊的IP地址 五、IP地址的数量限…...
【图像生成之21】融合了Transformer与Diffusion,Meta新作Transfusion实现图像与语言大一统
论文:Transfusion: Predict the Next Token and Diffuse Images with One Multi-Modal Model 地址:https://arxiv.org/abs/2408.11039 类型:理解与生成 Transfusion模型是一种将Transformer和Diffusion模型融合的多模态模型,旨…...
Microsoft Office 如何启用和正常播放 Flash 控件
对于新安装的 Office 默认是不支持启用 Flash 组件的,Flash 组件会无法播放或者黑屏。 本片文章就带你解决这个问题,相关资料都在下方连接内。前提概要,教程对应的版本是 mso16,即 Office 2016 及更新版本,以及 365 等…...
深入浅出:信号灯与系统V信号灯的实现与应用
深入浅出:信号灯与系统V信号灯的实现与应用 信号灯(Semaphore)是一种同步机制,用于控制对共享资源的访问。在多线程或多进程环境下,信号灯能够帮助协调多个执行单元对共享资源的访问,确保数据一致性与程序…...
定位改了IP属地没变怎么回事?一文解析
明明用虚拟定位软件将手机位置改到了“三亚”,为何某某应用评论区显示的IP属地还是“北京”?为什么切换了代理IP,平台却似乎“无视”这一变化? 在“IP属地显示”功能普及后,许多用户尝试通过技术手段隐藏真实位置&…...
Cygwin中使用其它平台生成的动态库
在 Cygwin 环境下链接 VC 生成的 DLL 库需解决符号导出格式和调用约定的兼容性问题,以下是具体操作步骤: 一、VC 生成 DLL 的配置要点 声明 C 风格导出函数 在 VC 中使用 extern "C" 和 __declspec(dllexport) 避免 C 名称修饰,…...
《深入理解生命周期与作用域:以C语言为例》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、生命周期:变量的存在时间(一)生命周期的定义(二)C语言中的生命周期类型(三&#…...
算法魅力揭秘:螺旋矩阵 II 的模拟填充与规则总结
算法魅力揭秘:螺旋矩阵 II 的模拟填充与规则总结 作为一个算法人,我们经常在竞赛和面试中遇到各种“矩阵类”问题,而螺旋矩阵 II 是其中一颗耀眼的明星。今天我将带大家从直观理解到实战代码,全面拆解螺旋矩阵 II 的规律与实现。…...
一个插件,免费使用所有顶级大模型(Deepseek,Gpt,Grok,Gemini)
DeepSider是一款集成于浏览器侧边栏的AI对话工具,可免费使用所有顶级大模型 包括GPT-4o,Grok3,Claude 3.5 Sonnet,Claude 3.7,Gemini 2.0,Deepseek R1满血版等 以极简交互与超快的响应速度,完成AI搜索、实时问答、内容创作、翻译、…...
springboot Filter实现请求响应全链路拦截!完整日志监控方案
一、为什么你需要这个过滤器? 日志痛点: 🚨 请求参数散落在各处? 🚨 响应数据无法统一记录? 🚨 日志与业务代码严重耦合? 解决方案: 一个Filter同时拦截请…...
智能车摄像头开源—9 动态权、模糊PID、速度决策、路径优化
目录 一、前言 二、动态权 1.概述 2.偏差值加动态权 三、模糊PID 四、速度决策 1.曲率计算 2.速度拟合 3.速度控制 五、路径 六、国赛视频 一、前言 在前中期通过识别直道、弯道等元素可进行加减速操作实现速度的控制,可进一步缩减一圈的运行速度ÿ…...
《2025蓝桥杯C++B组:D:产值调整》
**作者的个人gitee** 作者的算法讲解主页▶️ 每日一言:“泪眼问花花不语,乱红飞过秋千去🌸🌸” 题目 二.解题策略 本题比较简单,我的思路是写三个函数分别计算黄金白银铜一次新产值,通过k次循环即可获…...
蓝队技能-Web入侵-入口查杀攻击链
Web攻击事件 分析思路: 1、利用时间节点筛选日志行为 2、利用对漏洞进行筛选日志行为 3、利用后门查杀进行筛选日志行为 4、利用文件修改时间筛选日志行为 Web日志分析 明确存储路径以及查看细节 常见中间件存储路径 IIS、Apache、Tomcat 等中间件的日志存放目…...
Android11车载WiFi热点默认名称及密码配置
一、背景 基于车厂信息安全要求,车载热点默认名称不能使用统一的名称,以及默认密码不能为简单的1~9。 基于旧项目经验,组装工厂自动化测试及客户整车组装的时候均存在多台设备同时打开,亦不太推荐使用统一的热点名称,连接无法区分。 二、需求 根据客户的要求,默认名称…...
对于GAI虚假信息对舆论观察分析
摘要 生成式人工智能(Generative Artificial Intelligence, GAI)的技术革新重构了信息生产机制,但也加剧了虚假信息对舆论生态的异化风险。 关键词:生成式人工智能、虚假信息、舆论异化、智能治理 一、生成式人工智能虚假信息下…...
问题 | 对于初学者来说,esp32和stm32哪个比较适合?
对于初学者选择ESP32还是STM32入门嵌入式开发,需综合考虑学习目标、兴趣方向及未来职业规划。以下是两者的对比分析及建议: 1. 适合初学者的关键因素 ESP32的优势 内置无线通信:集成Wi-Fi和蓝牙功能,无需额外模块即可开发物联网…...
