| = Configuring Cassandra |
| |
| The `Cassandra` configuration files location varies, depending on the |
| type of installation: |
| |
| * docker: `/etc/cassandra` directory |
| * tarball: `conf` directory within the tarball install location |
| * package: `/etc/cassandra` directory |
| |
| Cassandra's default configuration file, `cassandra.yaml`, is sufficient |
| to explore a simple single-node `cluster`. However, anything beyond |
| running a single-node cluster locally requires additional configuration |
| to various Cassandra configuration files. Some examples that require |
| non-default configuration are deploying a multi-node cluster or using |
| clients that are not running on a cluster node. |
| |
| * `cassandra.yaml`: the main configuration file for Cassandra |
| * `cassandra-env.sh`: environment variables can be set |
| * `cassandra-rackdc.properties` OR `cassandra-topology.properties`: set |
| rack and datacenter information for a cluster |
| * `logback.xml`: logging configuration including logging levels |
| * `jvm-*`: a number of JVM configuration files for both the server and |
| clients |
| * `commitlog_archiving.properties`: set archiving parameters for the |
| `commitlog` |
| |
| Two sample configuration files can also be found in `./conf`: |
| |
| * `metrics-reporter-config-sample.yaml`: configuring what the |
| metrics-report will collect |
| * `cqlshrc.sample`: how the CQL shell, cqlsh, can be configured |
| |
| == Main runtime properties |
| |
| Configuring Cassandra is done by setting yaml properties in the |
| `cassandra.yaml` file. At a minimum you should consider setting the |
| following properties: |
| |
| * `cluster_name`: Set the name of your cluster. |
| * `seeds`: A comma separated list of the IP addresses of your cluster |
| `seed nodes`. |
| * `storage_port`: Check that you don't have the default port of 7000 |
| blocked by a firewall. |
| * `listen_address`: The `listen address` is the IP address of a node |
| that allows it to communicate with other nodes in the cluster. Set to |
| [.title-ref]#localhost# by default. Alternatively, you can set |
| `listen_interface` to tell Cassandra which interface to use, and |
| consecutively which address to use. Set one property, not both. |
| * `native_transport_port`: Check that you don't have the default port of |
| 9042 blocked by a firewall, so that clients like cqlsh can communicate |
| with Cassandra on this port. |
| |
| == Changing the location of directories |
| |
| The following yaml properties control the location of directories: |
| |
| * `data_file_directories`: One or more directories where data files, |
| like `SSTables` are located. |
| * `commitlog_directory`: The directory where commitlog files are |
| located. |
| * `saved_caches_directory`: The directory where saved caches are |
| located. |
| * `hints_directory`: The directory where `hints` are located. |
| |
| For performance reasons, if you have multiple disks, consider putting |
| commitlog and data files on different disks. |
| |
| == Environment variables |
| |
| JVM-level settings such as heap size can be set in `cassandra-env.sh`. |
| You can add any additional JVM command line argument to the `JVM_OPTS` |
| environment variable; when Cassandra starts, these arguments will be |
| passed to the JVM. |
| |
| == Logging |
| |
| The default logger is [.title-ref]#logback#. By default it will log: |
| |
| * *INFO* level in `system.log` |
| * *DEBUG* level in `debug.log` |
| |
| When running in the foreground, it will also log at INFO level to the |
| console. You can change logging properties by editing `logback.xml` or |
| by running the [.title-ref]#nodetool setlogginglevel# command. |