如何抑制Keepalived因Docker容器启停产生的veth接口增删日志?
我来帮你解决这个问题!Docker的veth接口频繁变动确实会让Keepalived的日志变得乱糟糟的,有几个靠谱的方法可以搞定这个事儿:
指定Keepalived仅监控特定接口
默认情况下Keepalived会监听系统上所有网络接口的变化,我们可以修改它的配置文件(通常是/etc/keepalived/keepalived.conf),明确指定需要监控的接口,彻底排除veth类临时接口。
比如在你的VRRP实例配置里,只保留业务相关的物理接口或固定虚拟接口:vrrp_instance VI_1 { state MASTER interface eth0 # 这里只写你需要监控的核心接口,比如物理网卡 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 dev eth0 } }配置修改后重启Keepalived服务:
systemctl restart keepalived,这样它就只会盯着你指定的接口,不会再理会Docker的veth接口变动了。通过日志系统过滤veth相关日志
如果不想改动Keepalived的核心配置,也可以在日志层面做过滤,让这些veth的增删日志不被记录到主日志里。
以rsyslog为例,你可以在rsyslog的配置目录下新建一个规则文件(比如/etc/rsyslog.d/keepalived-filter.conf),添加以下内容::msg, contains, "Interface veth" ~这条规则的意思是,只要日志消息里包含“Interface veth”,就直接丢弃这条日志。添加完成后重启rsyslog服务:
systemctl restart rsyslog,就能立刻生效。编译Keepalived时关闭接口监控(进阶方法)
如果你是自行编译安装的Keepalived,可以在编译阶段加上--disable-interface-monitor选项,彻底关闭Keepalived的接口监控功能。不过要注意,这个操作会关闭所有接口的状态监控,如果你需要监控特定接口的可用性,就不适合用这个方法了,所以一般更推荐前两种方案。
备注:内容来源于stack exchange,提问作者Roberto Iglesias

