private ReplicaPolicyConfiguration createReplicaHaPolicy(Element policyNode) { ReplicaPolicyConfiguration configuration = new ReplicaPolicyConfiguration(); configuration.setQuorumVoteWait(getInteger(policyNode, "quorum-vote-wait", ActiveMQDefaultConfiguration.getDefaultQuorumVoteWait(), Validators.GT_ZERO)); configuration.setRestartBackup(getBoolean(policyNode, "restart-backup", configuration.isRestartBackup())); configuration.setGroupName(getString(policyNode, "group-name", configuration.getGroupName(), Validators.NO_CHECK)); configuration.setAllowFailBack(getBoolean(policyNode, "allow-failback", configuration.isAllowFailBack())); configuration.setInitialReplicationSyncTimeout(getLong(policyNode, "initial-replication-sync-timeout", configuration.getInitialReplicationSyncTimeout(), Validators.GT_ZERO)); configuration.setClusterName(getString(policyNode, "cluster-name", configuration.getClusterName(), Validators.NO_CHECK)); configuration.setMaxSavedReplicatedJournalsSize(getInteger(policyNode, "max-saved-replicated-journals-size", configuration.getMaxSavedReplicatedJournalsSize(), Validators.MINUS_ONE_OR_GE_ZERO)); configuration.setScaleDownConfiguration(parseScaleDownConfig(policyNode)); configuration.setVoteOnReplicationFailure(getBoolean(policyNode, "vote-on-replication-failure", configuration.getVoteOnReplicationFailure())); configuration.setVoteRetries(getInteger(policyNode, "vote-retries", configuration.getVoteRetries(), Validators.MINUS_ONE_OR_GE_ZERO)); configuration.setVoteRetryWait(getLong(policyNode, "vote-retry-wait", configuration.getVoteRetryWait(), Validators.GT_ZERO)); configuration.setRetryReplicationWait(getLong(policyNode, "retry-replication-wait", configuration.getVoteRetryWait(), Validators.GT_ZERO)); configuration.setQuorumSize(getInteger(policyNode, "quorum-size", configuration.getQuorumSize(), Validators.MINUS_ONE_OR_GT_ZERO)); return configuration; }
static HAPolicyConfiguration buildConfiguration(OperationContext context, ModelNode model) throws OperationFailedException { ReplicaPolicyConfiguration haPolicyConfiguration = new ReplicaPolicyConfiguration() .setAllowFailBack(ALLOW_FAILBACK.resolveModelAttribute(context, model).asBoolean()) .setInitialReplicationSyncTimeout(INITIAL_REPLICATION_SYNC_TIMEOUT.resolveModelAttribute(context, model).asLong()) .setMaxSavedReplicatedJournalsSize(MAX_SAVED_REPLICATED_JOURNAL_SIZE.resolveModelAttribute(context, model).asInt()) .setScaleDownConfiguration(addScaleDownConfiguration(context, model)) .setRestartBackup(RESTART_BACKUP.resolveModelAttribute(context, model).asBoolean()); ModelNode clusterName = CLUSTER_NAME.resolveModelAttribute(context, model); if (clusterName.isDefined()) { haPolicyConfiguration.setClusterName(clusterName.asString()); } ModelNode groupName = GROUP_NAME.resolveModelAttribute(context, model); if (groupName.isDefined()) { haPolicyConfiguration.setGroupName(groupName.asString()); } return haPolicyConfiguration; } }
protected void setupHAPolicyConfiguration() { ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setMaxSavedReplicatedJournalsSize(-1).setAllowFailBack(true); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setRestartBackup(false); }
@Override protected void setupHAPolicyConfiguration() { if (isExtraBackupGroupNameReplicates) { ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setGroupName("foo"); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setGroupName("foo"); } }
@Override protected void setupServers() throws Exception { super.setupServers(); //we need to know who is connected to who ((ReplicatedPolicyConfiguration) servers[0].getConfiguration().getHAPolicyConfiguration()).setGroupName("group0"); ((ReplicatedPolicyConfiguration) servers[1].getConfiguration().getHAPolicyConfiguration()).setGroupName("group1"); ((ReplicatedPolicyConfiguration) servers[2].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2"); ((ReplicaPolicyConfiguration) servers[3].getConfiguration().getHAPolicyConfiguration()).setGroupName("group0"); ((ReplicaPolicyConfiguration) servers[4].getConfiguration().getHAPolicyConfiguration()).setGroupName("group1"); ((ReplicaPolicyConfiguration) servers[5].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2"); //reduce the numbers so that the vote finishes faster ((ReplicaPolicyConfiguration) servers[3].getConfiguration().getHAPolicyConfiguration()).setVoteRetries(5); ((ReplicaPolicyConfiguration) servers[3].getConfiguration().getHAPolicyConfiguration()).setVoteRetryWait(500); }
haPolicyConfiguration = new SharedStoreSlavePolicyConfiguration(); } else { haPolicyConfiguration = new ReplicaPolicyConfiguration(); if (getNodeGroupName() != null) { ((ReplicaPolicyConfiguration) haPolicyConfiguration).setGroupName(getNodeGroupName() + "-" + i);
ReplicaPolicyConfiguration rpc2 = new ReplicaPolicyConfiguration(); haPolicy.setLiveConfig(rpc); haPolicy.setBackupConfig(rpc2); if (scaleDown) { rpc2.setScaleDownConfiguration(new ScaleDownConfiguration());
TransportConfiguration acceptorConfig = createTransportConfiguration(netty, true, generateParams(node, netty)); Configuration configuration = createBasicConfig(sharedStorage ? liveNode : node).clearAcceptorConfigurations().addAcceptorConfiguration(acceptorConfig).addConnectorConfiguration(liveConfig.getName(), liveConfig).addConnectorConfiguration(backupConfig.getName(), backupConfig).setHAPolicyConfiguration(sharedStorage ? new SharedStoreSlavePolicyConfiguration() : new ReplicaPolicyConfiguration());
static HAPolicyConfiguration buildConfiguration(OperationContext context, ModelNode model) throws OperationFailedException { ReplicaPolicyConfiguration haPolicyConfiguration = new ReplicaPolicyConfiguration() .setAllowFailBack(ALLOW_FAILBACK.resolveModelAttribute(context, model).asBoolean()) .setInitialReplicationSyncTimeout(INITIAL_REPLICATION_SYNC_TIMEOUT.resolveModelAttribute(context, model).asLong()) .setMaxSavedReplicatedJournalsSize(MAX_SAVED_REPLICATED_JOURNAL_SIZE.resolveModelAttribute(context, model).asInt()) .setScaleDownConfiguration(addScaleDownConfiguration(context, model)) .setRestartBackup(RESTART_BACKUP.resolveModelAttribute(context, model).asBoolean()); ModelNode clusterName = CLUSTER_NAME.resolveModelAttribute(context, model); if (clusterName.isDefined()) { haPolicyConfiguration.setClusterName(clusterName.asString()); } ModelNode groupName = GROUP_NAME.resolveModelAttribute(context, model); if (groupName.isDefined()) { haPolicyConfiguration.setGroupName(groupName.asString()); } return haPolicyConfiguration; } }
@Override protected void setupHAPolicyConfiguration() { if (isReplicatedFailbackTest) { ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setCheckForLiveServer(true); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setMaxSavedReplicatedJournalsSize(2).setAllowFailBack(true); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setRestartBackup(false); } else { super.setupHAPolicyConfiguration(); } }
@Override protected void createReplicatedConfigs() throws Exception { super.createReplicatedConfigs(); ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setGroupName("liveNodeGroup1"); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setGroupName("liveNodeGroup1"); }
protected ActiveMQServer setupBackupServer(final int node, final int liveNode, final NodeManager nodeManager) throws Exception { TransportConfiguration serverConfigAcceptor = createTransportConfiguration(useNetty(), true, generateParams(node, useNetty())); TransportConfiguration thisConnector = createTransportConfiguration(useNetty(), false, generateParams(node, useNetty())); Configuration configuration = createBasicConfig(useSharedStorage() ? liveNode : node).clearAcceptorConfigurations().addAcceptorConfiguration(serverConfigAcceptor).addConnectorConfiguration("thisConnector", thisConnector).setHAPolicyConfiguration(useSharedStorage() ? new SharedStoreSlavePolicyConfiguration() : new ReplicaPolicyConfiguration()); List<String> targetServersOnConnection = new ArrayList<>(); for (int targetNode = 0; targetNode < getNumberOfServers(); targetNode++) { // if (targetNode == node) // { // // moving on from itself // continue; // } String targetConnectorName = "targetConnector-" + targetNode; TransportConfiguration targetServer = createTransportConfiguration(useNetty(), false, generateParams(targetNode, useNetty())); configuration.addConnectorConfiguration(targetConnectorName, targetServer); targetServersOnConnection.add(targetConnectorName); } ClusterConnectionConfiguration clusterConf = new ClusterConnectionConfiguration().setName("localCluster" + node).setAddress("cluster-queues").setConnectorName("thisConnector").setRetryInterval(100).setConfirmationWindowSize(1024).setMessageLoadBalancingType(MessageLoadBalancingType.ON_DEMAND).setStaticConnectors(targetServersOnConnection); configuration.getClusterConfigurations().add(clusterConf); ActiveMQServer server; if (useSharedStorage()) { server = createInVMFailoverServer(true, configuration, nodeManager, liveNode); } else { server = addServer(ActiveMQServers.newActiveMQServer(configuration, useRealFiles())); } server.setIdentity(this.getClass().getSimpleName() + "/Backup(" + node + " of live " + liveNode + ")"); return server; }
@Override protected void setupHAPolicyConfiguration() { ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setCheckForLiveServer(true); ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setVoteOnReplicationFailure(true); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setMaxSavedReplicatedJournalsSize(2).setAllowFailBack(true); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setRestartBackup(false); if (testBackupFailsVoteFails) { ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setQuorumSize(2); } }
@Override protected void setupHAPolicyConfiguration() { super.setupHAPolicyConfiguration(); ((ReplicatedPolicyConfiguration) liveConfig.getHAPolicyConfiguration()).setGroupName("liveNodeGroup1"); ((ReplicaPolicyConfiguration) backupConfig.getHAPolicyConfiguration()).setGroupName("liveNodeGroup1"); } }
public static void configureReplicationPair(Configuration backupConfig, TransportConfiguration backupConnector, TransportConfiguration backupAcceptor, Configuration liveConfig, TransportConfiguration liveConnector, TransportConfiguration liveAcceptor) { if (backupAcceptor != null) { backupConfig.clearAcceptorConfigurations().addAcceptorConfiguration(backupAcceptor); } if (liveAcceptor != null) { liveConfig.clearAcceptorConfigurations().addAcceptorConfiguration(liveAcceptor); } backupConfig.addConnectorConfiguration(BACKUP_NODE_NAME, backupConnector).addConnectorConfiguration(LIVE_NODE_NAME, liveConnector).addClusterConfiguration(ActiveMQTestBase.basicClusterConnectionConfig(BACKUP_NODE_NAME, LIVE_NODE_NAME)).setHAPolicyConfiguration(new ReplicaPolicyConfiguration()); liveConfig.setName(LIVE_NODE_NAME).addConnectorConfiguration(LIVE_NODE_NAME, liveConnector).addConnectorConfiguration(BACKUP_NODE_NAME, backupConnector).setSecurityEnabled(false).addClusterConfiguration(ActiveMQTestBase.basicClusterConnectionConfig(LIVE_NODE_NAME, BACKUP_NODE_NAME)).setHAPolicyConfiguration(new ReplicatedPolicyConfiguration()); } }
@Override @Test public void testStartBackupFirst() throws Exception { ((ReplicaPolicyConfiguration) backupServers.get(2).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-0"); ((ReplicaPolicyConfiguration) backupServers.get(3).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-1"); startServers(backupServers); startServers(liveServers); waitForBackups(); waitForTopology(liveServers.get(0).getServer(), liveServers.size(), 2); sendCrashReceive(); }
@Override @Test public void testStartLiveFirst() throws Exception { ((ReplicaPolicyConfiguration) backupServers.get(2).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-0"); ((ReplicaPolicyConfiguration) backupServers.get(3).getServer().getConfiguration().getHAPolicyConfiguration()).setGroupName(getNodeGroupName() + "-1"); startServers(liveServers); backupServers.get(0).start(); backupServers.get(1).start(); waitForSync(backupServers.get(0).getServer()); waitForSync(backupServers.get(1).getServer()); // wait to start the other 2 backups so the first 2 can sync with the 2 live servers backupServers.get(2).start(); backupServers.get(3).start(); sendCrashReceive(); waitForTopology(backupServers.get(0).getServer(), liveServers.size(), 2); sendCrashBackupReceive(); }
@Test public void testExtraBackupGroupNameReplicates() throws Exception { ReplicaPolicyConfiguration backupReplicaPolicyConfiguration = (ReplicaPolicyConfiguration) backupServer.getServer().getConfiguration().getHAPolicyConfiguration(); backupReplicaPolicyConfiguration.setGroupName("foo"); ReplicatedPolicyConfiguration replicatedPolicyConfiguration = (ReplicatedPolicyConfiguration) liveServer.getServer().getConfiguration().getHAPolicyConfiguration(); replicatedPolicyConfiguration.setGroupName("foo"); Configuration secondBackupConfig = backupConfig.copy(); TransportConfiguration tc = secondBackupConfig.getAcceptorConfigurations().iterator().next(); TestableServer secondBackupServer = createTestableServer(secondBackupConfig); tc.getParams().put("serverId", "2"); secondBackupConfig.setBindingsDirectory(getBindingsDir(1, true)).setJournalDirectory(getJournalDir(1, true)).setPagingDirectory(getPageDir(1, true)).setLargeMessagesDirectory(getLargeMessagesDir(1, true)).setSecurityEnabled(false); ReplicaPolicyConfiguration replicaPolicyConfiguration = (ReplicaPolicyConfiguration) secondBackupConfig.getHAPolicyConfiguration(); replicaPolicyConfiguration.setGroupName("foo"); waitForRemoteBackupSynchronization(backupServer.getServer()); secondBackupServer.start(); Thread.sleep(5000); backupServer.stop(); waitForSync(secondBackupServer.getServer()); waitForRemoteBackupSynchronization(secondBackupServer.getServer()); }
@Override protected void setupServers() throws Exception { super.setupServers(); //we need to know who is connected to who ((ReplicatedPolicyConfiguration) servers[0].getConfiguration().getHAPolicyConfiguration()).setGroupName("group0"); ((ReplicatedPolicyConfiguration) servers[1].getConfiguration().getHAPolicyConfiguration()).setGroupName("group1"); ((ReplicatedPolicyConfiguration) servers[2].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2"); ((ReplicaPolicyConfiguration) servers[4].getConfiguration().getHAPolicyConfiguration()).setGroupName("group1"); ((ReplicaPolicyConfiguration) servers[5].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2"); ReplicatedPolicyConfiguration replicatedPolicyConf = new ReplicatedPolicyConfiguration().setQuorumVoteWait(QUORUM_VOTE_WAIT_CONFIGURED_TIME_SEC); replicatedPolicyConf.setGroupName("group0"); replicatedPolicyConf.setVoteRetries(5); replicatedPolicyConf.setVoteRetryWait(100); servers[3].getConfiguration().setHAPolicyConfiguration(replicatedPolicyConf); }
@Override protected void setupServers() throws Exception { // The backups setupBackupServer(3, 0, isFileStorage(), isSharedStorage(), isNetty()); setupBackupServer(4, 1, isFileStorage(), isSharedStorage(), isNetty()); setupBackupServer(5, 2, isFileStorage(), isSharedStorage(), isNetty()); // The lives setupLiveServer(0, isFileStorage(), isSharedStorage(), isNetty(), false); setupLiveServer(1, isFileStorage(), isSharedStorage(), isNetty(), false); setupLiveServer(2, isFileStorage(), isSharedStorage(), isNetty(), false); //we need to know who is connected to who ((ReplicatedPolicyConfiguration) servers[0].getConfiguration().getHAPolicyConfiguration()).setGroupName("group0"); ((ReplicatedPolicyConfiguration) servers[1].getConfiguration().getHAPolicyConfiguration()).setGroupName("group1"); ((ReplicatedPolicyConfiguration) servers[2].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2"); ((ReplicaPolicyConfiguration) servers[3].getConfiguration().getHAPolicyConfiguration()).setGroupName("group0"); ((ReplicaPolicyConfiguration) servers[4].getConfiguration().getHAPolicyConfiguration()).setGroupName("group1"); ((ReplicaPolicyConfiguration) servers[5].getConfiguration().getHAPolicyConfiguration()).setGroupName("group2"); // Configure to vote to stay live, when backup dies ((ReplicatedPolicyConfiguration) servers[0].getConfiguration().getHAPolicyConfiguration()).setVoteOnReplicationFailure(true); ((ReplicatedPolicyConfiguration) servers[1].getConfiguration().getHAPolicyConfiguration()).setVoteOnReplicationFailure(true); ((ReplicatedPolicyConfiguration) servers[2].getConfiguration().getHAPolicyConfiguration()).setVoteOnReplicationFailure(true); }