Teamwork Cloud 18.5 SP3 Documentation

Skip to end of metadata
Go to start of metadata

This page provides instructions to set up a Teamwork Cloud (TWCloud) Cluster on your system. A TWCloud Cluster is composed of two clustering layers, TWCloud and Cassandra layers.

To set up a TWCloud Cluster, you need to do two separate tasks


  1. Set up a Cassandra Cluster
  2. Set up a TWCloud Cluster

An illustration of TWCloud Cluster and Cassandra Cluster nodes within TWCloud Cluster.

Setting up a Cassandra Cluster

Prior to establishing a Cassandra cluster, you need to determine the following.

  • The initial number of nodes in the cluster.
  • The IP address of each node.
  • Determine which node to be the seed.

When setting up a Cassandra node, you need to configure a seed that indicates an initial contact point for the new node. So, you can configure the seed using the IP of any existing active node in the cluster. Use the node's own IP when configuring the first node. 

For example, if you are configuring a three-node cluster and the nodes' IPs are 10.1.1.101, 10.1.1.102, and 10.1.1.103. Select one, for example 10.1.1.101, as the seed. While you are configuring cassandra.yaml, specify 10.1.1.101 as the seed value for all of the three nodes.

Now that you understand what a seed is and how to configure it, follow the instructions to install and configure Cassandra in the link below. 

Please note that listen_address and broadcast_rpc_address are still their machine.

Machine IP10.1.1.10110.1.1.10210.1.1.103
seeds10.1.1.10110.1.1.10110.1.1.101
listen_address10.1.1.10110.1.1.10210.1.1.103
broadcast_rpc_address10.1.1.10110.1.1.10210.1.1.103


After installing and configuring all nodes, start the seed node machine and verify that it is up and running first, and then start the rest of the nodes. You can check cluster status from the command, nodetool status.

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--   Address     Load      Tokens    Owns (effective)    Host ID                                   Rack
UN   10.1.1.101  6.7 GB    256       35.1%               b33c603a-95c7-426d-9f7b-ebad2375086a      rack1
UN   10.1.1.102  6.34 GB   256       32.5%               16f40503-4a65-45fe-9ee7-5d942506aa87      rack1
UN   10.1.1.103  6.15 GB   256       32.4%               2d90c119-08a4-4799-ac73-0440215d0b18      rack1

Setting up a TWCloud Cluster

Before setting up a TWCloud Cluster, you need to determine the following.

  • The initial number of nodes in the cluster.
  • The IP address of each node.
  • Determine which node to be the seed.
  • Prepare a list of IPs of Cassandra nodes.

 

For ease of understanding, the instructions below will use the following as a sample environment.

  • 3 nodes cluster
  • Node IP address are 10.1.1.111, 10.1.1.112, and 10.1.1.113
  • 10.1.1.111 will be used as seed node
  • IP address of Cassandra nodes are 10.1.1.101, 10.1.1.102, 10.1.1.103

 

Setting up the TWCloud Cluster involves 2 group parameters in application.conf.

  1. TWCloud clustering parameter

    - akka.cluster.seed-nodes

    This parameter indicates the initial contact points for the cluster.

    If you install TWCloud using the installer file, you will be asked to provide the seed node IP during installation process and the value will be configured in application.conf.

    If you install using the zip file, you will need to manually configure the parameter in application.conf. Search for the following.

                            seed-nodes = ["akka.tcp://twcloud@${seed-node.ip}:2552"]

     Replace ${seed-node.ip} with the IP of the seed node, so it should look similar to the following.

                            seed-nodes = ["akka.tcp://twcloud@10.1.1.111:2552"]


  2. Cassandra configuration parameters 

  - esi.persistence.cassandra.connection.seeds

          The value of this parameter is a list of Cassandra node IP addresses. You can find this parameter in application.conf by looking for the following.

# List of comma delimited host.

# Setting the value as localhost will be resolved from InetAddress.getLocalHost().getHostAddress()

# Ex. seeds = ["10.1.1.123", "10.1.1.124", "10.1.1.125"]

seeds = ["localhost"]

As you can see, the default value is [“localhost”], which is only suitable for a single node server where both TWCloud and Cassandra are deployed on the same machine. According to our sample environment, you should change it to the following.

seeds = ["10.1.1.101", "10.1.1.102", "10.1.1.103"]

 

- esi.persistence.cassandra.keyspace.replication-factor

This parameter is for defining the Cassandra replication factor for “esi” keyspace which is used by TWCloud. The replication factor describes how many copies of your data will be written by Cassandra. For example, replication factor 2 means your data will be written to 2 nodes.

 

For a three-node cluster, if you would like the cluster to be able to survive 1 node loss, you will need to set the replication factor to 3.

persistence {
         cassandra {
                 keyspace {                                                                                           
                        replication-factor = 3                                         
                 }

Please note that this configuration will be used only for the first time TWCloud connects to Cassandra and creates a new esi keyspace. Changing the replication factor after the keyspace has already been created is rather a complex task. Look at the following DataStax document if it happens that you need to change it https://docs.datastax.com/en/cql/3.3/cql/cql_using/useUpdateKeyspaceRF.html.


Note

TWCloud uses QUORUM for both write and read consistency level.


For a detailed explanation about data consistency, see DataStax document here http://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html

To start up the TWCloud cluster, first start the server on the seed machine and wait until you see a message similar to the following in the server.log.

INFO  2017-02-15 10:57:08.409 TWCloud Cluster with 1 node(s) : [10.1.1.111] [com.nomagic.esi.server.core.actor.ClusterHealthActor, twcloud-esi.actor.other-dispatcher-31]


Then you can start the server on the remaining machines. You should see the following messages in the server.log which shows all 3 nodes are forming the cluster.

INFO  2017-02-15 10:58:23.956 TWCloud Cluster with 2 node(s) : [10.1.1.111, 10.1.1.112] [com.nomagic.esi.server.core.actor.ClusterHealthActor, twcloud-esi.actor.other-dispatcher-18]
INFO  2017-02-15 10:58:25.963 TWCloud Cluster with 3 node(s) : [10.1.1.111, 10.1.1.112, 10.1.1.113] [com.nomagic.esi.server.core.actor .ClusterHealthActor, twcloud-esi.actor.other-dispatcher-18]

  • No labels