Changing the Default Cassandra Configuration
WSO2 Storage Server comes with a default Cassandra configuration, which you can override by changing the following configuration files:
Pointing to a remote Cassandra cluster
Change the <SS_HOME>/repository/conf/etc/hector-config.xml
file. The default configuration is as follows:
<HectorConfiguration> <Cluster> <Name>ClusterOne</Name> <Nodes>localhost:9160</Nodes> <AutoDiscovery disable="false" delay="1000"/> </Cluster> </HectorConfiguration>
The following are the XML elements which you can use to change the default configuration:
Property Name | Description | Default Value | Fixed Values | Mandatory/Optional | |
---|---|---|---|---|---|
<Name/> | Hector reference name for the Cassandra cluster connection | Â | Â | Mandatory | |
<Nodes/> | Comma separated Cassandra Cluster node list |  |  | Mandatory | |
<AutoDiscovery disable="" delay=""/> | Enable Hector Auto node discovery service |  | disable - True/False | Mandatory |
Changing default IPs and ports
Storage Server comes with configurations suited for a standalone Cassandra deployment , but if you set up a cluster, you must change listening and ports accordingly in <SS_HOME>/
repository/conf/etc/cassandra.yaml file.
- Cassandra listening IP is used for inter-node communications in a clustered environment:
listen_address: <Server listening IP or domain name>
 Storage port is used to exchange the data and the command between the cluster nodes:
storage_port: 7000
 ÂThis port changes according to <Offset> value in <Ports> section in carbon.xml. Changing storage_port value in cassandra.yaml will not affect the server.
If encrypted communication is enabled, the cluster uses the port defined in ssl_storage_port for cluster-related commands and data communication:
ssl_storage_port: 7001
 Â
RPC listen address is used for the thrift-based communication between server and the client: Â
rpc_address: <IP_ADDRESS> # port for Thrift to listen for clients on rpc_port: 9160
RPC port changes according to <Offset> value in <Ports> section in carbon.xml. Changing rpc_port value in cassandra.yaml will not affect the server.
Native Transport Port is the port which is listening to CQL clients. Please note that the address on which the native transport is bound is the same as the rpc_address (to start the native transport server,
start_native_transport
should be equal to true, which is its default value). This needs to be set as follows:start_native_transport: true native_transport_port: 9042
For a full list of explanations of each configuration directive, refer to the file's code comments. Additionally, see http://wiki.apache.org/cassandra/StorageConfiguration .
Cassandra Cluster Configuration for Statistics and Node Operations
To view Cassandra cluster statistics and do cluster operations, <SS_HOME>/repository/conf/etc/cluster-config.xml needs to be configured. Here, all the SS nodes and their service URLs needs to be configured.
<cluster> <configuration> <cluster_authentication> <username>admin</username> <password>admin</password> </cluster_authentication> <nodes> <node> <host>127.0.0.1</host> <backend_url>local://services/</backend_url> </node> </nodes> </configuration> </cluster>
 The following are the XML elements which you can use to change the default configuration:
Property Name | Description | Default Value | Fixed Values | Mandatory/Optional | |
---|---|---|---|---|---|
<cluster_authentication/> | SS admin service authentication details | Â | Â | Mandatory | |
<username/> | Admin service username | Â | Â | Â Mandatory | |
<password/> | Admin service password | Â | Â | Â Mandatory | |
/> | Parent element of SS nodes | Â | Â | Mandatory | |
<node/>+ | Node element for each SS node | Â | Â | Mandatory | |
<host/> | Host Name / IP of SS node | Â | Â | Mandatory | |
<backend_url/> | SS node's service URL | Â | Â | Mandatory |
Exposing services to the public
In a IaaS infrastructure, services, public IP and domain names of the backend Cassandra cluster must be exposed via public addresses. This is done in <SS_HOME>/repository/conf/etc/cassandra-endpoint.xml
file. Given below is the default configuration, where the <EndPoint>
 and <HostName>
 elements represent each Cassandra node by its host name.
<Cassandra> <EndPoints> <EndPoint> <HostName>css0.stratoslive.wso2.com</HostName> </EndPoint> <EndPoint> <HostName>css1.stratoslive.wso2.com</HostName> </EndPoint> <EndPoint> <HostName>css2.stratoslive.wso2.com</HostName> </EndPoint> <EndPoint> <HostName>css3.stratoslive.wso2.com</HostName> </EndPoint> <EndPoint> <HostName>css4.stratoslive.wso2.com</HostName> </EndPoint> </EndPoints> </Cassandra>