EchoStore
More information and discussion about changes to this draft on the talk page.
Echostore provides application servers with shared access to the Echo extension's seen-time cache. It utilizes Kask, a RESTful opaque key/value storage abstraction on top of Apache Cassandra, deployed in an active/active configuration in both the eqiad and codfw data-centers.
Production Environment
Service endpoints
Discovery
https://echostore.discovery.wmnet:8082/echoseen/v1
eqiad
https://echostore.svc.eqiad.wmnet:8082/echoseen/v1
codfw
https://echostore.svc.codfw.wmnet:8082/echoseen/v1
staging
https://staging.svc.eqiad.wmnet:8082
Prometheus metrics
https://echostore.discovery.wmnet:8082/metrics
Readiness
https://echostore.discovery.wmnet:8082/healthz
Cassandra
Utilizes the RESTBase storage cluster.
Common Tasks
Deployment
k8s
Follow the Kubernetes documentation for the echostore service.
Deployment-prep
Unlike production, Docker is used to deploy the echostore service in the deployment-prep environment.
In a web browser:
- Visit https://horizon.wikimedia.org
- Select the deployment-prep project
- Select Project → Compute → Instances (in the sidebar)
- Locate and select the deployment-echostoreNN instance
- Select the Puppet Configuration tab
- Scroll to the bottom of the page, and click edit for Hiera Config (see below)
- Click "Apply Changes"
- Run
sudo run-puppet-agent
from deployment-echostoreNN
Sample Hiera Config
profile::cassandra::instances:
deployment-echostoreNN.deployment-prep.eqiad1.wikimedia.cloud: {}
profile::docker::engine::declare_service: true
profile::docker::engine::settings: {}
profile::docker::engine::version: 1.12.6-0~debian-jessie
profile::docker::runner::service_defs:
mediawiki-services-kask:
config:
base_uri: /echoseen/v1
cassandra:
authentication:
password: cassandra
username: cassandra
hosts:
- deployment-echostoreNN.deployment-prep.eqiad1.wikimedia.cloud
keyspace: sessions
table: values
default_ttl: 86400
listen_address: 0.0.0.0
listen_port: 8080
openapi_spec: /go/src/gerrit.wikimedia.org/r/mediawiki/services/kask/openapi.yaml
service_name: sessions
namespace: wikimedia
override_cmd: ./kask --config /etc/mediawiki-services-kask/config.yaml
port: 8080
version: v1.0.10
mediawiki-services-config.config
are written verbatim to the container as /etc/mediawiki-services-kask/config.yaml
(the Kask configuration file)mediawiki-services-kask.version
to specify the Kask Docker image tag. Use mediawiki-services-kask.port
to assign the port Kask will listen on.