补充知识点
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服务器。