首页 > 解决方案 > 如何将 hazelcast 节点绑定到特定的 IP 地址?

问题描述

我尝试运行此代码,但它给了我一个错误。看来我无法绑定到特定的 IP 地址;相反,我需要绑定到网络接口。有没有办法解决这个问题?

import io.vertx.core.VertxOptions
import io.vertx.reactivex.core.Vertx
import io.vertx.spi.cluster.hazelcast.{ ConfigUtil, HazelcastClusterManager }

object Test extends App {
  val host = "127.0.0.2"
  def getConfig(): Config = {
    import scala.collection.JavaConverters._
    val config = ConfigUtil.loadConfig()
    config.setProperty("hazelcast.socket.bind.any", "false")
    config
      .getNetworkConfig
      .setPortAutoIncrement(false)
      .getInterfaces
      .setEnabled(true)
      .setInterfaces(List(s"127.0.0.2").asJava)
    val joinConfig = config.getNetworkConfig.getJoin

    joinConfig
      .getMulticastConfig
      .setEnabled(false)

    config
  }
  def run(): Unit = {
    val mgr = new HazelcastClusterManager(getConfig())
    val options = new VertxOptions().setClusterManager(mgr)
    options.getEventBusOptions.setHost(host)
    val vrtx = Vertx.rxClusteredVertx(options).blockingGet()
  }
  run()
}

我越来越java.lang.RuntimeException: Hazelcast CANNOT start on this node. No matching network interface found.

标签: javascalahazelcastvert.x

解决方案


检查文档的这一部分和文档中的链接:https ://docs.hazelcast.org/docs/latest/manual/html-single/index.html#discovering-members-by-tcp

您需要通过设置禁用 Hazelcast 来绑定所有hazelcast.socket.bind.any接口false。然后,您可以使用此处所述的接口:https ://docs.hazelcast.org/docs/latest/manual/html-single/index.html#interfaces


推荐阅读