Sign inSign up

strapdata/elassandra

By strapdata

•Updated over 4 years ago

Elassandra is a fork of Elasticsearch modified to run on top of Apache Cassandra.

Image
16

5M+

strapdata/elassandra repository overview

⁠Official Elassandra Image

Build Status

This source code is available on GitHub⁠.

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 my-elassandra strapdata/elassandra
⁠Connect with cqlsh
docker exec -it my-elassandra cqlsh

or :

docker run -it --link my-elassandra --rm strapdata/elassandra cqlsh my-elassandra
⁠Connect to Elasticsearch API with curl
docker exec -it my-elassandra curl localhost:9200

or :

docker run -it --link my-elassandra --rm strapdata/elassandra curl my-elassandra:9200
⁠Connect to Cassandra nodetool
docker exec -it my-elassandra nodetool status
⁠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

⁠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.

For instance, to configure cassandra num_tokens and elasticsearch http.port we do like this :

docker run \
  -e CASSANDRA__num_tokens=16 \
  -e ELASTICSEARCH__http__port=9201 \
  strapdata/elassandra

Notice that __ are replaced by . in the generated yaml files.

It does not work to configure yaml arrays, such as cassandra seeds...

⁠Run cassandra only

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

docker run \
  -e CASSANDRA_DAEMON=org.apache.cassandra.service.CassandraDaemon \
  strapdata/elassandra
⁠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

Tag summary

Content type

Image

Digest

Size

264.5 MB

Last updated

over 4 years ago

docker pull strapdata/elassandra