生产环境之负载均衡LVS+keepalived方案(5)_关键知识点

news/2024/10/18 8:33:31/

补充知识点

arp_ignore & arp_announce

https://www.cnblogs.com/lipengxiang2009/p/7451050.html
这篇博文介绍得很详细,以下主要做重点摘录及自己的一些总结:
(1)arp_ignore理解
arp_ignore参数的作用是控制系统在收到外部的arp请求时,是否要返回arp响应。
arp_ignore参数常用的取值主要有0,1,2,3~8较少用到:
0:响应任意网卡上接收到的对本机IP地址的arp请求(包括环回网卡上的地址),而不管该目的IP是否在接收网卡上。
1:只响应目的IP地址为接收网卡上的本地地址的arp请求。
2:只响应目的IP地址为接收网卡上的本地地址的arp请求,并且arp请求的源IP必须和接收网卡同网段。
3:如果ARP请求数据包所请求的IP地址对应的本地地址其作用域(scope)为主机(host),则不回应ARP响应数据包,如果作用域为全局(global)或链路(link),则回应ARP响应数据包。
4~7:保留未使用
8:不回应所有的arp请求
sysctl.conf中包含all和eth/lo(具体网卡)的arp_ignore参数,取其中较大的值生效。

(2)arp_announce理解
arp_announce的作用是控制系统在对外发送arp请求时,如何选择arp请求数据包的源IP地址。(比如系统准备通过网卡发送一个数据包a,这时数据包a的源IP和目的IP一般都是知道的,而根据目的IP查询路由表,发送网卡也是确定的,故源MAC地址也是知道的,这时就差确定目的MAC地址了。而想要获取目的IP对应的目的MAC地址,就需要发送arp请求。arp请求的目的IP自然就是想要获取其MAC地址的IP,而arp请求的源IP是什么呢? 可能第一反应会以为肯定是数据包a的源IP地址,但是这个也不是一定的,arp请求的源IP是可以选择的,控制这个地址如何选择就是arp_announce的作用)
arp_announce参数常用的取值有0,1,2。
0:允许使用任意网卡上的IP地址作为arp请求的源IP,通常就是使用数据包a的源IP。
1:尽量避免使用不属于该发送网卡子网的本地地址作为发送arp请求的源IP地址。
2:忽略IP数据包的源IP地址,选择该发送网卡上最合适的本地地址作为arp请求的源IP地址。
sysctl.conf中包含all和eth/lo(具体网卡)的arp_ignore参数,取其中较大的值生效。

keepalived日志文件

keepalived默认的日志文件位置: /var/log/message
可修改日志的输出位置:

1:vi /etc/sysconfig/keepalived
把KEEPALIVED_OPTIONS=“-D” 修改为 KEEPALIVED_OPTIONS=“-D -d -S 0”
其中 -S 指定 syslog 的 facility
2:vi /etc/rsyslog.conf
添加:

# save keepalive message also to keepalived.log
local0.*             /var/log/keepalived.log     // local0 ~ local7 用户自定义

3:运行如下命令重启服务

systemctl restart rsyslog
systemctl restart keepalived

日志级别:

debug 0 # 表示程序和系统的调试信息
info 1 # 表示一般信息
notice 2 # 表示不影响正常功能,但是需要注意的信息
warning/warn 3 # 表示可能影响正常功能,需要提醒用户注意的事件;
err/error 4 # 表示错误信息
crit 5 # 表示比较严重的信息
alert 6 # 表示必须马上处理的
emerg/panic 7 # 会导致系统不可用的

遇见的问题及处理

RS服务器在对client做响应时的数据包,会刷新交换机的mac地址表,能造成mac地址冲突吗?

不会,虽然真实服务器回复的数据包的源IP地址是VIP,但是业务数据包不会去刷新arp表,arp表刷新只根据arp协议数据包做刷新。

双主机方式会有2个VIP,也就是对外服务地址,两台同时工作的情况下,怎么实现负债均衡咧?

如果只是对外提供VIP地址,那就只能人为分别给到client。
如果有统一的域名,那就将域名绑定到2个VIP地址,让dns解析来负责负载均衡。

VIP不通,主备切换正常

virtual_ipaddress {  192.168.200.2     
}  
变更为:
virtual_ipaddress {192.168.200.2/24  
}

怎么让LVS接收所有端口流量

0 表示所有端口
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XIjfGDLg-1685416068051)(image/2023-05-15-10-22-47.png)]
端口配置为0后,实验的结果是接收到1端口的连接后,其他端口的连接就不再转发了, 还有断开连接的bug,原因不知。

NAT模式一切正常,业务流量就是不通

原因:
LVS在将数据包(NAT到)转发到Real Server(RS服务器)服务器, 跟我们熟知的网络NAT模式不一样:NAT模式转发时源IP地址不变,即源ip地址仍然是客户端的ip地址。
这样真实服务器在恢复包时,如果有其他的网卡,特别是网卡的网络地址跟VIP一致时,网卡将从该网卡发出。

解决方案:
只保留一工作网卡,多网卡是也至少要保证按上发出的数据包也能到LVS服务器。


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

相关文章

网络面试题:什么是 TCP/IP?

目录标题 什么是 TCP/IP?1) 网络接口层:2) 网络层:3) 传输层:4) 应用层: 2.数据包3.网络接口层4.网络层1) IP:2)地址解析协议 ARP3)子网 5 传输层1)UDP:2)TCP: 6 应用层运行在TCP协议上的协议:运行在UDP协议上的协议&…

【回眸】牛客网刷刷刷!网络专项知识点大集合

前言 正文 网络设备 net_device包含的信息 DHCP作用 DHCP交互过程 DHCP饥饿攻击 注册网络设备 不具有路由功能的网络设备 Linux网络通信中sk_buff net_device结构体 查询路由表 虚拟网卡 前言 笔者是个物联网专业的应届生,有一天发现自己对网络相关的…

“开启科技之门,每日工作充满力量” —— 全国科技者工作日

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

PostgreSQL 16 beta 重磅发布,OpenPie 再次引领中国贡献关键力量

PostgreSQL 一直被誉为全球最先进的开源关系数据库之一,在 DB-engines 排行榜上长期稳居前五。5 月 25 日,PostgreSQL 全球开发团队官方宣布,PostgreSQL 16 Beta 1 版本正式发布。 本次 PostgreSQL 新版本功能亮点众多,涉及多个模…

什么是深度数据包检测 (DPI)

随着混合工作成为生活的正常部分,新技术每天都在使用,同时总是通过网络传输数据的山体滑坡。通过高正常运行时间、快速解决问题和富有洞察力的情报提供无缝的用户体验至关重要。为此,对网络进行端到端监控非常重要。 深度数据包检测是一种用…

Java有线程安全的set吗?

在Java中,有线程安全的Set实现。一个常用的线程安全的Set实现是ConcurrentSkipListSet。ConcurrentSkipListSet是一个有序的集合,基于跳表(SkipList)的数据结构实现。它提供了线程安全的操作,并且具有较好的性能。 接下来笔者用一段简单的Jav…

助力工业物联网,工业大数据之工业大数据之油站维度设计【十四】

文章目录 01:油站维度设计02:油站维度构建 01:油站维度设计 目标:掌握油站维度的需求与设计 路径 step1:需求step2:设计 实施 需求:构建油站维度表,得到油站id、油站名称、油站所属…

生产环境之负载均衡LVS+keepalived方案(3)_KeepAlived介绍

keepalived简介 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,加入了可以实现高可用的VRRP(Virtual Router RedundancyProtocol(虚拟路由器冗余协议))功能&#x…