use of org.mobicents.tools.heartbeat.api.Node in project load-balancer by RestComm.
the class UserSpace method initBind.
public void initBind(MServerConnectionImpl customer) {
this.isSslConnection = customer.getConfig().isUseSsl();
this.systemType = customer.getConfig().getSystemType();
if (logger.isDebugEnabled())
logger.debug("Start initial bind for customer with sessionID : " + customer.getSessionId());
bindingCustomer.set(customer);
// INITIAL CONNECTION TO ALL SERVERS
for (Node node : nodes) {
if (balancerRunner.balancerContext.terminateTLSTraffic)
isSslConnection = false;
connectionsToServers.put(serverSessionID, new MClientConnectionImpl(serverSessionID, this, monitorExecutor, balancerRunner, node, isSslConnection));
monitorExecutor.execute(new MBinderRunnable(connectionsToServers.get(serverSessionID), systemId, password, systemType));
serverSessionID++;
}
}
use of org.mobicents.tools.heartbeat.api.Node in project load-balancer by RestComm.
the class AppServer method start.
public void start() {
ExecutorService executor = Executors.newCachedThreadPool();
protocolObjects = new ProtocolObjects(name, "gov.nist", transport, false, false, true);
if (!isSendResponse) {
sipListener = new TestSipListener(isIpv6, port, lbSIPint, protocolObjects, false);
sipListener.abortProcessing = true;
} else if (!isDummy) {
if (!isMediaFailure || !isFirstStart) {
sipListener = new TestSipListener(isIpv6, port, lbSIPint, protocolObjects, false);
} else {
sipListener = new TestSipListener(isIpv6, port, lbSIPint, protocolObjects, false);
sipListener.setRespondWithError(Response.SERVICE_UNAVAILABLE);
}
} else {
sipListener = new TestSipListener(isIpv6, port + 1, lbSIPint, protocolObjects, false);
}
sipListener.appServer = this;
try {
sipProvider = sipListener.createProvider();
sipProvider.addSipListener(sipListener);
protocolObjects.start();
} catch (Exception e) {
e.printStackTrace();
}
// generate node
if (!isIpv6)
node = new Node(name, "127.0.0.1");
else
node = new Node(name, "::1");
node.getProperties().put(transport.toLowerCase() + "Port", "" + port);
node.getProperties().put(Protocol.VERSION, version);
node.getProperties().put(Protocol.SESSION_ID, "" + System.currentTimeMillis());
node.getProperties().put(Protocol.HEARTBEAT_PORT, "" + heartbeatPort);
nioServerSocketChannelFactory = new NioServerSocketChannelFactory(executor, executor);
serverBootstrap = new ServerBootstrap(nioServerSocketChannelFactory);
serverBootstrap.setPipelineFactory(new ServerPipelineFactory(this));
serverChannel = serverBootstrap.bind(new InetSocketAddress(node.getIp(), heartbeatPort));
logger.info("Heartbeat service listen on " + heartbeatAddress + ":" + heartbeatPort + " (Node's side)");
// start client
if (balancers == null)
clientController = new ClientController(this, lbAddress, lbPort, node, 5000, heartbeatPeriod, executor);
else {
String[] lbs = balancers.split(",");
clientControllers = new ClientController[lbs.length];
for (int i = 0; i < lbs.length; i++) {
if (!isIpv6)
node = new Node(name, "127.0.0.1");
else
node = new Node(name, "::1");
node.getProperties().put(transport.toLowerCase() + "Port", "" + port);
node.getProperties().put(Protocol.VERSION, version);
node.getProperties().put(Protocol.HEARTBEAT_PORT, "" + heartbeatPort);
clientControllers[i] = new ClientController(this, lbs[i].split(":")[0], Integer.parseInt(lbs[i].split(":")[1]), node, 5000, heartbeatPeriod, executor);
clientControllers[i].startClient();
}
}
if (sendHeartbeat) {
if (balancers == null)
clientController.startClient();
}
}
use of org.mobicents.tools.heartbeat.api.Node in project load-balancer by RestComm.
the class SmppToProviderRoundRobinAlgorithm method configurationChanged.
@Override
public void configurationChanged() {
ConcurrentHashMap<KeySmpp, Node> newSmppNodeMap = new ConcurrentHashMap<KeySmpp, Node>();
String[] s = balancerContext.lbConfig.getSmppConfiguration().getRemoteServers().split(",");
String[] sTmp = new String[2];
for (int i = 0; i < s.length; i++) {
sTmp = s[i].split(":");
Node currNode = new Node("SMPP server " + i, sTmp[0].trim());
currNode.getProperties().put("smppPort", sTmp[1].trim());
newSmppNodeMap.put(new KeySmpp(sTmp[0].trim(), Integer.parseInt(sTmp[1].trim())), currNode);
}
ConcurrentHashMap<KeySmpp, Node> removedSmppNodes = null;
ConcurrentHashMap<KeySmpp, Node> addedSmppNodes = null;
logger.info("Nodes removed : " + (removedSmppNodes = mapDifference(newSmppNodeMap, invocationContext.smppNodeMap)).values());
for (KeySmpp key : removedSmppNodes.keySet()) invocationContext.smppNodeMap.remove(key);
logger.info("Nodes added : " + (addedSmppNodes = mapDifference(invocationContext.smppNodeMap, newSmppNodeMap)).values());
invocationContext.smppNodeMap.putAll(addedSmppNodes);
logger.info("Updated SMPP node map after changing config file : " + invocationContext.smppNodeMap.values());
}
use of org.mobicents.tools.heartbeat.api.Node in project load-balancer by RestComm.
the class ServerControllerKube method getNodeFromPod.
private Node getNodeFromPod(Pod pod) {
Map<String, String> labels = pod.getMetadata().getLabels();
PodStatus status = pod.getStatus();
Node node = new Node(labels.remove(Protocol.HOST_NAME), status.getPodIP());
node.getProperties().putAll(labels);
return node;
}
use of org.mobicents.tools.heartbeat.api.Node in project load-balancer by RestComm.
the class BackToBackUserAgent method start.
public void start() {
SipFactory sipFactory = null;
sipFactory = SipFactory.getInstance();
sipFactory.setPathName("gov.nist");
this.protocolObjects = new ProtocolObjects("backtobackua", "gov.nist", transport, true, true, false);
try {
messageFactory = protocolObjects.messageFactory;
lp = protocolObjects.sipStack.createListeningPoint("127.0.0.1", port, transport);
sp = protocolObjects.sipStack.createSipProvider(lp);
sp.addSipListener(this);
protocolObjects.start();
node = new Node("Node", "127.0.0.1");
node.getProperties().put(transport.toLowerCase() + "Port", "" + port);
node.getProperties().put("version", "0");
node.getProperties().put(Protocol.SESSION_ID, "" + System.currentTimeMillis());
node.getProperties().put(Protocol.HEARTBEAT_PORT, "" + heartbeatPort);
clientController = new ClientController(this, lbAddress, lbHBPort, node, 2000, heartbeatPeriod, executor);
clientController.startClient();
} catch (Exception ex) {
}
}
Aggregations