Search in sources :

Example 46 with Node

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++;
    }
}
Also used : Node(org.mobicents.tools.heartbeat.api.Node)

Example 47 with Node

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();
    }
}
Also used : NioServerSocketChannelFactory(org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory) InetSocketAddress(java.net.InetSocketAddress) Node(org.mobicents.tools.heartbeat.api.Node) ClientController(org.mobicents.tools.heartbeat.impl.ClientController) ServerBootstrap(org.jboss.netty.bootstrap.ServerBootstrap) ServerPipelineFactory(org.mobicents.tools.heartbeat.server.ServerPipelineFactory) ExecutorService(java.util.concurrent.ExecutorService)

Example 48 with Node

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());
}
Also used : KeySmpp(org.mobicents.tools.sip.balancer.KeySmpp) Node(org.mobicents.tools.heartbeat.api.Node) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap)

Example 49 with Node

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;
}
Also used : PodStatus(io.fabric8.kubernetes.api.model.PodStatus) Node(org.mobicents.tools.heartbeat.api.Node)

Example 50 with 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) {
    }
}
Also used : ProtocolObjects(org.mobicents.tools.sip.balancer.ProtocolObjects) Node(org.mobicents.tools.heartbeat.api.Node) SipFactory(javax.sip.SipFactory) ClientController(org.mobicents.tools.heartbeat.impl.ClientController) InvalidArgumentException(javax.sip.InvalidArgumentException) ParseException(java.text.ParseException) SipException(javax.sip.SipException)

Aggregations

Node (org.mobicents.tools.heartbeat.api.Node)70 ListeningPoint (javax.sip.ListeningPoint)19 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)11 Via (gov.nist.javax.sip.header.Via)7 HashMap (java.util.HashMap)7 SIPHeader (gov.nist.javax.sip.header.SIPHeader)6 ParseException (java.text.ParseException)6 ArrayList (java.util.ArrayList)6 ViaHeader (javax.sip.header.ViaHeader)6 RouteHeader (javax.sip.header.RouteHeader)5 SIPResponse (gov.nist.javax.sip.message.SIPResponse)4 UnknownHostException (java.net.UnknownHostException)4 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)4 InvalidArgumentException (javax.sip.InvalidArgumentException)4 SipException (javax.sip.SipException)4 SipURI (javax.sip.address.SipURI)4 RecordRouteHeader (javax.sip.header.RecordRouteHeader)4 ToHeader (javax.sip.header.ToHeader)4 Response (javax.sip.message.Response)4 Test (org.junit.Test)4