Skip to content
Tiny proxy of ElastiCahce Memceched configuration endpoint
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Do not publish as a crate now Jun 6, 2019
docs Improve README Jun 5, 2019
src rustfmt Jun 6, 2019
.dockerignore Ready to run with Docker Jun 6, 2019
.gitignore Initial commit Jun 4, 2019
Cargo.lock Install dependencies Jun 5, 2019
Cargo.toml Install dependencies Jun 5, 2019
Dockerfile Ready to run with Docker Jun 6, 2019
LICENSE.txt
README.md Show CircleCI status badge in README Jun 6, 2019
docker-compose.yaml Ready to run with Docker Jun 6, 2019

README.md

Mimikyu

CircleCI

Mimikyu is a tiny proxy of ElastiCahce Memceched configuration endpoint designed for safe migration between 2 Memcached clusters.

This implementation is very rough. Please test carefully with your Memcached client before use in production.

How Mimikyu works

Amazon ElasiCahce Memcached has a mechanism for auto-discovery nodes consists of a Memcached cluster. The configuration endpoint provides the feature.

A Memcached client implemented the auto-discovery protocol fetches all node information (endpoint, port, and so on.) from the endpoint by use config get cluster command.

Mimikyu emulates the configuration endpoint. When Mimikyu receives a request from client,

  • If the sent command is stats
    • Execute same stats command to upstream primary cluster. Then, send the response to the client as it as.
    • Respond with secondary stats when primary endpoint is down.
  • If the sent command is config get cluster
    • Execute config get cluster for upstream primary/secondary clusters and collect the responses.
    • Then, put the endpoint information together as a single response for the client.
  • If other commands is sent, Mimikyu just returns SERVER_ERROR and close the connection from client.
  • Also Mimikyu returns error when primary and secondary upstream is down or not exist.

As a result, the client of Mimikyu can discover all nodes included primary cluster and secondary cluster. Hence, we can decrease nodes of primary cluster gradually.

Usage

See mimikyu --help.

License

MIT

You can’t perform that action at this time.