开发者社区> 问答> 正文

如何指定网络接口名称以获取 canal IP

环境信息

docker canal/canal-server:v1.1.5

问题描述

当我在canal服务器上使用docker swarm时,将启动多个容器服务,每个容器有多个网络接口,在java中接口顺序是不可控的。

怎么通过这些接口获取canal IP?

提问107.png

当网络接口的顺序被打乱时,以下代码将获得错误的IP。

public static InetAddress getHostAddress() { InetAddress localAddress = null; try { Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); if (interfaces != null) { while (interfaces.hasMoreElements()) { try { NetworkInterface network = interfaces.nextElement(); Enumeration addresses = network.getInetAddresses(); if (addresses != null) { while (addresses.hasMoreElements()) { try { InetAddress address = addresses.nextElement(); if (isValidHostAddress(address)) { return address; } } catch (Throwable e) { logger.warn("Failed to retriving network card ip address. cause:" + e.getMessage()); } } } } catch (Throwable e) { logger.warn("Failed to retriving network card ip address. cause:" + e.getMessage()); } } } } catch (Throwable e) { logger.warn("Failed to retriving network card ip address. cause:" + e.getMessage()); } logger.error("Could not get local host ip address, will use 127.0.0.1 instead."); return localAddress; } So I want to specify the name of the network interface to ensure that the correct IP is ob

我想指定网络接口的名称,以确保获得正确的IP。

原提问者GitHub用户xiaoyao9184

展开
收起
山海行 2023-04-27 16:42:58 104 0
1 条回答
写回答
取消 提交回答
  • 参考配置:

    tcp bind ip

    canal.ip =

    register ip to zookeeper

    canal.register.ip =

    原回答者GitHub用户agapple

    2023-04-27 22:23:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Session:更加安全、可靠的数据中心网络产品更新 立即下载
Session:极简易用的全球化网络产品更新 立即下载
Session:弹性、高可用、可观测的应用交付网络产品更新 立即下载