2017-01-03 12 views
0

Ниже приведена программная конфигурация HazelCast, приведенная в документации, но она не может добавлять членов в кластер HazelCast.Программная конфигурация Tcp-IP HazelCast не добавляет членов в кластер

Config cfg = new Config(); 
    Hazelcast.newHazelcastInstance(cfg); 

    cfg.setProperty("hazelcast.initial.min.cluster.size","3"); 
    cfg.getGroupConfig().setName("DEV").setPassword("DEV-pass"); 
    NetworkConfig network = cfg.getNetworkConfig(); 
    JoinConfig join = network.getJoin(); 
    TcpIpConfig tcpipConfig=join.getTcpIpConfig(); 
    tcpipConfig.addMember("172.17.153.87").addMember("10.45.67.100") 
    .setRequiredMember("192.168.10.100").setEnabled(true); 
    network.getInterfaces().setEnabled(true).addInterface("10.45.67.*"); 
    System.out.println(tcpipConfig.isEnabled()); 
    System.out.println(tcpipConfig.getMembers()); 

    MapConfig mapCfg = new MapConfig(); 
    mapCfg.setName("testMap"); 
    mapCfg.setBackupCount(2); 
    mapCfg.getMaxSizeConfig().setSize(10000); 
    mapCfg.setTimeToLiveSeconds(300); 

    MapStoreConfig mapStoreCfg = new MapStoreConfig(); 
    mapStoreCfg.setClassName("com.hazelcast.examples.DummyStore").setEnabled(true); 
    mapCfg.setMapStoreConfig(mapStoreCfg); 

    NearCacheConfig nearCacheConfig = new NearCacheConfig(); 
    nearCacheConfig.setMaxSize(1000).setMaxIdleSeconds(120).setTimeToLiveSeconds(300); 
    mapCfg.setNearCacheConfig(nearCacheConfig); 

    cfg.addMapConfig(mapCfg); 

пожалуйста, посмотрите на код и дайте мне, если какой-либо предмет дальнейшей модификации требуется добавить членов hazelcast кластеру

ответ

1

Добавьте эту строку, чтобы отключить многоадресной рассылки в пользу TCP,

join.getMulticastConfig().setEnabled(false);

Переместить эту линию до конца,

Hazelcast.newHazelcastInstance(cfg);

Перед созданием экземпляра необходимо завершить конфигурацию.

+0

Благодаря Сработало –

0

Под Windows готовая конфигурация Hazelcast (с пустым Config) только что сработала.
Мне просто пришлось запускать свою программу Java несколько раз параллельно, а узлы Hazelcast обнаруживали друг друга.

Под Linux, это было сложнее: следующее является работает пример - просто запустить несколько экземпляров параллельно.

import java.util.*; 
import com.hazelcast.config.*; 
import com.hazelcast.core.*; 

public class NewClass { 

    public static void main(String[] args) { 
     Config config = new Config(); 
     config.getNetworkConfig().setPublicAddress("127.0.0.1") 
       .setPort(7771).setPortAutoIncrement(true); 
     JoinConfig join = config.getNetworkConfig().getJoin(); 
     join.getMulticastConfig().setEnabled(false); 
     join.getAwsConfig().setEnabled(false); 
     join.getTcpIpConfig().setEnabled(true).setMembers(
       Arrays.asList(
        "127.0.0.1:7771", 
        "127.0.0.1:7772", 
        "127.0.0.1:7773")); 

     HazelcastInstance h = Hazelcast.newHazelcastInstance(config); 
    } 
} 

Выход после третьего исполнения:

[snip] 

Members [3] { 
    Member [127.0.0.1]:7771 - 18f5aada-6f00-4077-814e-337517d5c1eb 
    Member [127.0.0.1]:7772 - e9e2e7fd-e2fe-4c56-80c5-6b499d07b2b9 
    Member [127.0.0.1]:7773 - 14fd377c-69fd-4c69-a9b8-086dd1cd7857 this 
} 

[snip]