Public Repository

Last pushed: 4 days ago
Short Description
Elassandra is a fork of Elasticsearch modified to run on top of Apache Cassandra.
Full Description

Elassandra docker image

Elassandra is a fork of Elasticsearch modified to run on top of Apache Cassandra in a scalable and resilient peer-to-peer architecture. Elasticsearch code is embedded in Cassanda nodes providing advanced search features on Cassandra tables and Cassandra serve as an Elasticsearch data and configuration store.

Check-out the elassandra documentation for detailed instructions.

Commercial support is available from Strapdata.

Basic usage

docker pull strapdata/elassandra

Start a single-node cluster

docker run --name el strapdata/elassandra

Connect with cqlsh

docker run -it --link el --rm strapdata/elassandra cqlsh some-elassandra

Connect to Elasticsearch API with curl

docker run -it --link el --rm strapdata/elassandra curl some-elassandra:9200

Exposed ports

  • 7000: Intra-node communication
  • 7001: TLS intra-node communication
  • 7199: JMX
  • 9042: CQL
  • 9142: encrypted CQL
  • 9160: thrift service
  • 9200: ElasticSearch HTTP
  • 9300: ElasticSearch transport

Volumes

  • /var/lib/cassandra
  • /etc/cassandra

Advanced Usage

This image is a fork of the Cassandra "Official Image" modified to run Elassandra.

We added some more features to the images, described below.

Logging

Elassandra logging is configured with the file logback.xml`.
It is parametrized with environment variables and thus allows to manage debug levels from your docker env section.

LOGBACK_org_apache_cassandra
LOGBACK_org_apache_cassandra_service_CassandraDaemon
LOGBACK_org_elassandra_shard
LOGBACK_org_elassandra_indices
LOGBACK_org_elassandra_index
LOGBACK_org_elassandra_discovery
LOGBACK_org_elassandra_cluster_service
LOGBACK_org_elasticsearch

Kubernetes

A ready_probe.sh script can be use for readiness probe as follow:

  readinessProbe:
      exec:
        command: [ "/bin/bash", "-c", "/ready-probe.sh" ]
      initialDelaySeconds: 15
      timeoutSeconds: 5

Configuration

All the environment variables that work for configuring the official Cassandra image continue to work here (e.g CASSANDRA_RPC_ADDRESS, CASSANDRA_LISTEN_ADDRESS...).

But for convenience, we provide an extended mechanism for configuring almost everything in cassandra.yaml and elasticsearch.yml, directly from the docker env section (except yaml arrays).

For example, to tweak the cassandra setting server_encryption_options.keystore, use the environment variable CASSANDRA__server_encryption_options__keystore.

The same apply for elasticsearch with the prefix ELASTICSEARCH__.

Run cassandra only

To disable Elasticsearch, set the CASSANDRA_DAEMON to org.apache.cassandra.service.CassandraDaemon, default is org.apache.cassandra.service.ElassandraDaemon.

Init script

Every .sh files found in /docker-entrypoint-init.sh will be sourced before to start elassandra.

docker run -v $(pwd)/script.sh:/docker-entrypoint-init.d/script.sh strapdata/elassandra-rc

Use the build tool

REPO_DIR=../path/to/elassandra-repo ./build.sh

Where repo REPO_DIR point to an elassandra repository with debian package assembled.

Much more parameters available, see the source.

Docker Pull Command
Owner
strapdata