Режим роя Docker с запуском кластера Hazelcast

Я запускаю кластер Hazelcast, используя рой докеров. Даже если узлы устанавливают соединение

Members [1] {                                                                                                
        Member [10.0.0.3]:5701 - b5fae3e3-0727-4bfd-8eb1-82706256ba2d this                                   
}                                                                                                            

May 27, 2017 2:38:12 PM com.hazelcast.internal.management.ManagementCenterService                            
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] Hazelcast will connect to Hazelcast Management Center on address: 
http://10.0.0.3:8080/mancenter                                                                               
May 27, 2017 2:38:12 PM com.hazelcast.internal.management.ManagementCenterService                            
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] Failed to pull tasks from management center                       
May 27, 2017 2:38:12 PM com.hazelcast.internal.management.ManagementCenterService                            
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] Failed to connect to:http://10.0.0.3:8080/mancenter/collector.do  
May 27, 2017 2:38:12 PM com.hazelcast.core.LifecycleService                                                  
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] [10.0.0.3]:5701 is STARTED                                        
May 27, 2017 2:38:12 PM com.hazelcast.internal.partition.impl.PartitionStateManager                          
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] Initializing cluster partition table arrangement...               
May 27, 2017 2:38:19 PM com.hazelcast.internal.cluster.ClusterService                                        
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8]                                                                   

Members [2] {                                                                                                
        Member [10.0.0.3]:5701 - b5fae3e3-0727-4bfd-8eb1-82706256ba2d this                                   
        Member [10.0.0.4]:5701 - b3bd51d4-9366-45f0-bb66-78e67b13268c                                        
}                                                                                                            

May 27, 2017 2:38:19 PM com.hazelcast.internal.partition.impl.MigrationManager                               
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] Re-partitioning cluster data... Migration queue size: 271         
May 27, 2017 2:38:21 PM com.hazelcast.internal.partition.InternalPartitionService                            

через некоторое время я продолжаю получать ошибки:

WARNING: [10.0.0.3]:5701 [kpts-cluster] [3.8] Wrong bind request from [10.0.0.3]:5701! This node is not requested endpoint: [10.0.0.2]:5701
May 27, 2017 2:45:06 PM com.hazelcast.nio.tcp.TcpIpConnection
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] Connection[id=18, /10.0.0.3:5701->/10.0.0.3:49575, endpoint=null, alive=false, type=MEMBER] closed. Reason: Wrong bind request from [10.0.0.3]:5701! This node is not requested endpoint: [10.0.0.2]:5701
May 27, 2017 2:45:06 PM com.hazelcast.nio.tcp.TcpIpConnection
INFO: [10.0.0.3]:5701 [kpts-cluster] [3.8] Connection[id=17, /10.0.0.2:49575->/10.0.0.2:5701, endpoint=[10.0.0.2]:5701, alive=false, type=MEMBER] closed. Reason: Connection closed by the other side

Я предполагаю, что это должно что-то делать с интерфейсом eth0 на каждом узле. Назначено 2 адреса - один "настоящий" и один "поддельный" менеджера кластера... он почему-то рекламируется как конечная точка...

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
82: eth0@if83: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
    link/ether 02:42:0a:00:00:03 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.3/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.2/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:aff:fe00:3/64 scope link
       valid_lft forever preferred_lft forever
84: eth1@if85: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
    link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.3/16 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe12:3/64 scope link
       valid_lft forever preferred_lft forever
86: eth2@if87: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default
    link/ether 02:42:0a:ff:00:07 brd ff:ff:ff:ff:ff:ff
    inet 10.255.0.7/16 scope global eth2
       valid_lft forever preferred_lft forever
    inet 10.255.0.6/32 scope global eth2
       valid_lft forever preferred_lft forever
    inet6 fe80::42:aff:feff:7/64 scope link
       valid_lft forever preferred_lft forever

Вот конфигурация сети, считанная с одного из узлов:

[                                                                                                  
    {                                                                                              
        "Name": "hazelcast-net",                                                                   
        "Id": "ly1p50ykwjhf68k88220gxih6",                                                         
        "Created": "2017-05-27T16:38:04.638580169+02:00",                                          
        "Scope": "swarm",                                                                          
        "Driver": "overlay",                                                                       
        "EnableIPv6": false,                                                                       
        "IPAM": {                                                                                  
            "Driver": "default",                                                                   
            "Options": null,                                                                       
            "Config": [                                                                            
                {                                                                                  
                    "Subnet": "10.0.0.0/24",                                                       
                    "Gateway": "10.0.0.1"                                                          
                }                                                                                  
            ]                                                                                      
        },                                                                                         
        "Internal": false,                                                                         
        "Attachable": true,                                                                        
        "Containers": {                                                                            
            "0fa2bd8f8e8e931e1140e2d4bee1b43ff1f7bd5e3049d95e9176c63fa9f47e4f": {                  
                "Name": "kpts.1zhprrumdjvenkl4cvsc7bt40.2ugiv46ubar8utnxc5hko1hdf",                
                "EndpointID": "0c5681aebbacd27672c300742077a460c07a081d113c2238f4c707def735ebec",  
                "MacAddress": "02:42:0a:00:00:03",                                                 
                "IPv4Address": "10.0.0.3/24",                                                      
                "IPv6Address": ""                                                                  
            }                                                                                      
        },                                                                                         
        "Options": {                                                                               
            "com.docker.network.driver.overlay.vxlanid_list": "4097"                               
        },                                                                                         
        "Labels": {},                                                                              
        "Peers": [                                                                                 
            {                                                                                      
                "Name": "c4-6f6cd87e898f",                                                         
                "IP": "10.6.225.34"                                                                
            },                                                                                     
            {                                                                                      
                "Name": "c5-77d9f542efe8",                                                         
                "IP": "10.6.225.35"                                                                
            }                                                                                      
        ]                                                                                          
    }                                                                                              
]  

person kboom    schedule 27.05.2017    source источник
comment
Привет. Вы можете поделиться своими файлами Docker/Compose и сценариями запуска?   -  person Vik Gamov    schedule 02.06.2017


Ответы (2)


Вы можете найти этот предыдущий выпуск полезным:

Сеть Docker — ошибка "Этот узел не запрошен конечной точкой" № 4537

Теперь ближе к делу. У вас работает надежное соединение, поэтому узлы могут соединяться; однако вы, скорее всего (предположительно, поскольку у меня нет вашего hazelcast.xml) привязываетесь ко всем интерфейсам, и поэтому вы хотите изменить свою сетевую привязку, чтобы привязываться только к желаемому адресу. Мы привязываемся к * по умолчанию, так как не знаем, какую сеть вы хотите использовать.

Надеюсь это поможет,

person Terry Walters    schedule 06.06.2017

Попробуйте использовать SPI обнаружения роя докеров. Он предоставит настраиваемую реализацию AddressPicker для swarm, которая полностью избавит вас от этой постоянной проблемы в Hazelcast с выбором интерфейса и ошибкой «Этот узел не является запрошенной конечной точкой». Я действительно хочу, чтобы они это исправили.

https://github.com/bitsofinfo/hazelcast-docker-swarm-discovery-spi

import org.bitsofinfo.hazelcast.discovery.docker.swarm.SwarmAddressPicker;
...

Config conf =new ClasspathXmlConfig("yourHzConfig.xml");

NodeContext nodeContext = new DefaultNodeContext() {
    @Override
    public AddressPicker createAddressPicker(Node node) {
        return new SwarmAddressPicker(new ILogger() {
            // you provide the impl... or use provided "SystemPrintLogger"
        });
    }
};

HazelcastInstance hazelcastInstance = HazelcastInstanceFactory
        .newHazelcastInstance(conf,"myAppName",nodeContext);
person bitsofinfo    schedule 07.07.2017
comment
Возможно, будет уместно указать, что вы являетесь автором рекомендуемого инструмента? - person Taylor O'Connor; 01.08.2017
comment
Я автор инструмента! - person bitsofinfo; 07.02.2018
comment
это кажется невозможным. Вам необходимо внести изменения в инфраструктуру докеров, например. опубликуйте свой сокет докера через tcp. - person Sebastian; 03.06.2019