项目作者: mozamimy

项目描述 :
Tiny proxy of ElastiCahce Memceched configuration endpoint
高级语言: Rust
项目地址: git://github.com/mozamimy/mimikyu.git
创建时间: 2019-06-05T04:15:09Z
项目社区:https://github.com/mozamimy/mimikyu

开源协议:MIT License

下载


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