public void Initialize(ConfigServerConfiguration configuration) { if (LoggerManager.Instance.CONDBLogger != null && LoggerManager.Instance.CONDBLogger.IsInfoEnabled) { LoggerManager.Instance.CONDBLogger.Info("ConfigurationCluster", "started configuration cluster"); } UpdateConfiguration(configuration); }
protected override void BeginProcessing() { if (string.IsNullOrEmpty(Server)) { Server = ProviderUtil.GetLocalAddress(); } var rcm = new RemoteConfigurationManager(); rcm.Initilize(StandAlone?MiscUtil.LOCAL:MiscUtil.CLUSTERED, Server, Port, new ConfigurationChannelFormatter(), new SSPIClientAuthenticationCredential()); if (!_standAlone) { if (rcm.VerifyConfigurationCluster()) { ConfigurationConnection.ConfigCluster = rcm.GetConfigurationClusterConfiguration(); ConfigurationConnection.ClusterConfiguration = rcm.GetDatabaseClusterConfig(true); ConfigurationConnection.Current = rcm; ConfigurationConnection.UpdateDatabaseClusterInfo(); } else { throw new Exception("Database cluster does not exist on the specified server."); } } else { var localConfig = rcm.GetDatabaseClusterConfig(false); if (localConfig != null) { var configCluster = new ConfigServerConfiguration { Name = MiscUtil.STAND_ALONE, Port = Port, Servers = new ServerNodes() }; configCluster.Servers.AddNode(new ServerNode { Name = Server, Priority = 1 }); ConfigurationConnection.ConfigCluster = configCluster; ConfigurationConnection.ClusterConfiguration = localConfig; ConfigurationConnection.Current = rcm; ConfigurationConnection.UpdateClusterConfiguration(); ConfigurationConnection.UpdateDatabaseClusterInfo(); } else { throw new Exception("Standalone database does not exist on the specified server."); } } }
public ConfigClusterInfo(ConfigServerConfiguration configuration) { if (configuration != null) { if (!string.IsNullOrWhiteSpace(configuration.Name)) { Name = configuration.Name; Port = configuration.Port; List <ServerDetail> serverList = new List <ServerDetail>(); foreach (ServerNode serv in configuration.Servers.Nodes.Values) { ServerDetail serverNodeInfo = new ServerDetail(); serverNodeInfo.IPAddress = serv.Name; serverNodeInfo.Priority = serv.Priority; serverList.Add(serverNodeInfo); } Servers = serverList.ToArray(); } } }
private void DetermineSecondaryConfigurationServer() { if (AutoReconnect && FailoverToSecondary) { ConfigServerConfiguration configuration = _session.GetConfigurationClusterConfiguration("*"); if (configuration != null) { if (configuration.Servers != null && configuration.Servers.Nodes != null) { ServerNode secondServer = configuration.Servers.Nodes.Values.FirstOrDefault(s => s.Name.ToLower() != _firstConfiguratioServer); if (secondServer != null) { _secondConfiguratioServer = secondServer.Name; } } } } }
public ConfigurationConnection(ConfigServerConfiguration configCluster) { _configClusterInfo = configCluster; }
public void UpdateConfiguration(ConfigServerConfiguration configuration) { _configuration = configuration; bool needReconnect = false; if (LoggerManager.Instance.CONDBLogger != null && LoggerManager.Instance.CONDBLogger.IsInfoEnabled) { LoggerManager.Instance.CONDBLogger.Info("ConfigurationCluster", "configuration has been changed"); } if (_configuration != null) { ServerNode peerNode = _configuration.Servers.Nodes.Values.FirstOrDefault(p => p.Name.ToLower() != _localServerIP.ToLower()); if (_peerNode != null) { if (peerNode == null || !peerNode.Name.ToLower().Equals(_peerNode.Name.ToLower())) { //peer node is removed from configuration if (_session != null) { _session.Disconnect(); } if (_reconnctionThread != null) { _reconnctionThread.Abort(); } needReconnect = peerNode != null && !peerNode.Name.ToLower().Equals(_peerNode.Name.ToLower()); } } else { if (peerNode != null) { needReconnect = true; } } _peerNode = peerNode; if (LoggerManager.Instance.CONDBLogger != null && LoggerManager.Instance.CONDBLogger.IsInfoEnabled && _peerNode != null) { LoggerManager.Instance.CONDBLogger.Info("ConfigurationCluster.Update", "peer configuration server " + _peerNode.Name); } if (needReconnect) { if (!ConnectToPeerServer()) { ConnectInBackground(); } } else { if (_peerNode == null) { if (_session != null) { _session.Disconnect(); } } if (_reconnctionThread != null && _reconnctionThread.IsAlive) { _reconnctionThread.Abort(); } DetermineRole(); } if (!(_configuration.Servers != null && _configuration.Servers.Nodes != null && _configuration.Servers.Nodes.Count > 0)) { //By default an unitialized server is considered in primary role BecomePrimary(); } } }
public void CreateConfigurationCluster(ConfigServerConfiguration serverConfig, int heartBeat, ReplicationConfiguration replConfig, string displayName) { _session.CreateConfigurationCluster(serverConfig, heartBeat, replConfig, displayName); }