jgroups-kubernetes BindException - PullRequest
       15

jgroups-kubernetes BindException

0 голосов
/ 22 марта 2019

Я использовал infinispan в проекте весенней загрузки, и я знаю, что jgroups завершает взаимодействие и обнаружение узлов в infinispan. Я уже могу сделать многократное взаимное обнаружение на докерах. Теперь проблема в Куберне.

Файл конфигурации jgroups default-jgroups-kubernetes.xml, который я использовал, был найден в официальном пакете infinispan. Я изменил только tcp.port и тег KUBE_PING:

<config xmlns="urn:org:jgroups"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups-4.0.xsd">

   <TCP bind_addr="${jgroups.tcp.address:match-interface:eth.*}"
        bind_port="${jgroups.tcp.port:30001}"
        enable_diagnostics="false"
        thread_naming_pattern="pl"
        send_buf_size="640k"
        sock_conn_timeout="300"
        bundler_type="no-bundler"
        logical_addr_cache_expiration="360000"

        thread_pool.min_threads="${jgroups.thread_pool.min_threads:0}"
        thread_pool.max_threads="${jgroups.thread_pool.max_threads:200}"
        thread_pool.keep_alive_time="60000"
   />
   <kubernetes.KUBE_PING
     port_range="3000"
     namespace="default"
     masterProtocol="https"
     masterHost="https://192.1.5.110:32305"
     masterPort="32305"
   />
   <MERGE3 min_interval="10000" 
           max_interval="30000" 
   />
   <FD_SOCK />
   <!-- Suspect node `timeout` to `timeout + timeout_check_interval` millis after the last heartbeat -->
   <FD_ALL timeout="10000"
           interval="2000"
           timeout_check_interval="1000"
   />
   <VERIFY_SUSPECT timeout="1000"/>
   <pbcast.NAKACK2 use_mcast_xmit="false"
                   xmit_interval="100"
                   xmit_table_num_rows="50"
                   xmit_table_msgs_per_row="1024"
                   xmit_table_max_compaction_time="30000"
                   resend_last_seqno="true"
   />
   <UNICAST3 xmit_interval="100"
             xmit_table_num_rows="50"
             xmit_table_msgs_per_row="1024"
             xmit_table_max_compaction_time="30000"
   />
   <pbcast.STABLE stability_delay="500"
                  desired_avg_gossip="5000"
                  max_bytes="1M"
   />
   <pbcast.GMS print_local_addr="false"
               join_timeout="${jgroups.join_timeout:5000}"
   />
   <MFC max_credits="2m" 
        min_threshold="0.40"
   />
   <FRAG3/>
</config>

Кстати, я ввел зависимости jgroups-kubernetes

Я использовал вышеуказанную конфигурацию, а затем следующее исключение:

...
Caused by: java.net.BindException: no port available in range [30001 .. 30051] (bind_addr=xxxxx%eth0)
  at org.jgroups.util.Util.createServerSocket(Util.java:3512)
  ...

Где xxxxx представляет адрес IPv6

Я не знаю, как решить это исключение. Я попытался изменить порт TCP на 7800, а затем диапазон не изменился. Результатом по-прежнему является указанное выше исключение, но информация становится [7800..7850]

С нетерпением ждем вашей помощи. Спасибо!

1 Ответ

0 голосов
/ 25 марта 2019

Попробуйте использовать либо IPv4, либо IPv6, но не сочетание обоих. IPv4 можно принудительно установить, установив для системного свойства java.net.preferIPv4Stack значение true. port_range из 3000 не имеет никакого смысла, используйте меньшее число, например 10, в зависимости от того, сколько контейнеров вы используете в одном модуле (1 также может работать). В masterHost вы также настраиваете порт, который не нужен и может фактически потерпеть неудачу. На самом деле, ни одно из свойств 3 master* не нужно устанавливать, так как Kubernetes сам устанавливает эти свойства.

...