Я использую OrientDB 2.1.7 во встроенном и распределенном режиме, и приложение работает на двух узлах (два процесса Java).
При использовании конфигурации базы данных JSON по умолчанию все работает нормально:
{
"autoDeploy": true,
"hotAlignment": false,
"executionMode": "undefined",
"readQuorum": 1,
"writeQuorum": 2,
"failureAvailableNodesLessQuorum": false,
"readYourWrites": true,
"servers": {
"*": "master"
},
"clusters": {
"internal": {
"replication": false
},
"index": {
"replication": false
},
"*": {
"servers": ["<NEW_NODE>"]
}
}
}
Однако я хочу изменить hotAlignment на «true», но когда я это сделаю, я получаю следующую ошибку при запуске узла 2 (примечание: база данных не развернута на узле 2 на данный момент, но она была создана на узле 1 ):
Кажется, возникают проблемы с созданием локальных кластеров для node2 при включении hotAlignment. Я также видел ту же проблему при отключении автоматического развертывания. Что-то не хватает в моей конфигурации?
РЕДАКТИРОВАТЬ: Вот как мы запускаем сервер:
Хорошо, поэтому я нашел решение этой проблемы (здесь)
OServerConfiguration cfg = new OServerConfiguration();
//DB server config
cfg.handlers = new ArrayList<OServerHandlerConfiguration>();
//Cluster plugin config
OServerHandlerConfiguration hazelcastHandlerConfig = new OServerHandlerConfiguration();
hazelcastHandlerConfig.clazz = "com.orientechnologies.orient.server.hazelcast.OHazelcastPlugin";
hazelcastHandlerConfig.parameters = new OServerParameterConfiguration[6];
hazelcastHandlerConfig.parameters[0] = new OServerParameterConfiguration("nodeName", nodeName);
hazelcastHandlerConfig.parameters[1] = new OServerParameterConfiguration("enabled", "true");
hazelcastHandlerConfig.parameters[2] = new OServerParameterConfiguration("configuration.db.default", "/config/distributed-db-config.json");
hazelcastHandlerConfig.parameters[3] = new OServerParameterConfiguration("configuration.hazelcast", "/config/hazelcast.xml");
hazelcastHandlerConfig.parameters[4] = new OServerParameterConfiguration("conflict.resolver.impl", "com.orientechnologies.orient.server.distributed.conflict.ODefaultReplicationConflictResolver");
hazelcastHandlerConfig.parameters[5] = new OServerParameterConfiguration("sharding.strategy.round-robin", "com.orientechnologies.orient.server.hazelcast.sharding.strategy.ORoundRobinPartitioninStrategy");
cfg.handlers.add(hazelcastHandlerConfig);
//Network config
cfg.network = new OServerNetworkConfiguration();
cfg.network.protocols = new ArrayList<OServerNetworkProtocolConfiguration>();
cfg.network.protocols.add(new OServerNetworkProtocolConfiguration("binary", "com.orientechnologies.orient.server.network.protocol.binary.ONetworkProtocolBinary"));
OServerNetworkListenerConfiguration binaryListenerCfg = new OServerNetworkListenerConfiguration();
binaryListenerCfg.ipAddress = "0.0.0.0";
binaryListenerCfg.portRange = "2424-2430";
binaryListenerCfg.protocol = "binary";
cfg.network.listeners = new ArrayList<>();
cfg.network.listeners.add(binaryListenerCfg);
//Storage config
OServerStorageConfiguration storageCfg = new OServerStorageConfiguration();
storageCfg.path = "plocal:./databases/test";
storageCfg.name = "test";
storageCfg.loadOnStartup = true;
cfg.storages = new OServerStorageConfiguration[]{storageCfg};
//User config
OServerUserConfiguration userCfg = new OServerUserConfiguration(username, password, "*");
cfg.users = new OServerUserConfiguration[]{userCfg};
databaseServer = OServerMain.create(true);
databaseServer.startup(cfg);
databaseServer.activate();