Как мне привязать узел hazelcast к определенному IP-адресу?

#java #scala #hazelcast #vert.x

#java #scala #hazelcast #vert.x

Вопрос:

Я попытался запустить этот код, но он выдает ошибку. Кажется, что я не могу привязаться к определенному 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.

Комментарии:

1. Мне нужно было добавить ip-адрес в интерфейс обратной связи. посмотрите askubuntu.com/questions/444124/how-to-add-a-loopback-interface за подробностями.

Ответ №1:

Проверьте этот раздел документации и ссылку в документе: 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