Installation
Elasticell is consists of pd, cell and proxy(optional). More about Elasticell components
Configuration
For example, we will install Elasticell cluster as below:
Components | Nodes |
---|---|
PD | 192.168.1.101, 192.168.1.102, 192.168.1.103 |
Cell | 192.168.1.201, 192.168.1.202, 192.168.1.203 |
Proxy | 192.168.1.91 |
On each node, use /apps/deepfabric
as base folder, and create data folder /apps/deepfabric/data
, and create log folder /apps/deepfabric/log
PD
Node: 192.168.1.101
./pd --log-level=info --log-file=/apps/deepfabric/log/pd.log --name=pd1 --data=/apps/deepfabric/data --addr-rpc=192.168.1.101:20800 --urls-client=http://192.168.1.101:2379 --urls-peer=http://192.168.1.101:2380 --initial-cluster=pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380
Node: 192.168.1.102
./pd --log-level=info --log-file=/apps/deepfabric/log/pd.log --name=pd2 --data=/apps/deepfabric/data --addr-rpc=192.168.1.102:20800 --urls-client=http://192.168.1.102:2379 --urls-peer=http://192.168.1.102:2380 --initial-cluster=pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380
Node: 192.168.1.103
./pd --log-level=info --log-file=/apps/deepfabric/log/pd.log --name=pd3 --data=/apps/deepfabric/data --addr-rpc=192.168.1.103:20800 --urls-client=http://192.168.1.103:2379 --urls-peer=http://192.168.1.103:2380 --initial-cluster=pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380
Cell
Node: 192.168.1.201
./cell --log-level=info --log-file=/apps/deepfabric/log/cell.log --pd=192.168.1.101:20800,192.168.1.102:20800,192.168.1.103:20800 --addr=192.168.1.201:10800 --addr-cli=192.168.1.201:6379 --zone=zone-1 --rack=rack-1 --data=/apps/deepfabric/data
Node: 192.168.1.202
./cell --log-level=info --log-file=/apps/deepfabric/log/cell.log --pd=192.168.1.101:20800,192.168.1.102:20800,192.168.1.103:20800 --addr=192.168.1.202:10800 --addr-cli=192.168.1.202:6379 --zone=zone-2 --rack=rack-2 --data=/apps/deepfabric/data
Node: 192.168.1.203
cell --log-level=info --log-file=/apps/deepfabric/log/cell.log --pd=192.168.1.101:20800,192.168.1.102:20800,192.168.1.103:20800 --addr=192.168.1.203:10800 --addr-cli=192.168.1.203:6379 --zone=zone-3 --rack=rack-3 --data=/apps/deepfabric/data
Proxy
Node: 192.168.1.91
Create a json file in the folder /apps/deepfabric/cfg/cfg.json
as below:
{
"addr": "192.168.1.91:6379",
"addrNotify": "192.168.1.91:9998",
"watcherHeartbeatSec": 5,
"pdAddrs": [
"192.168.1.101:20800",
"192.168.1.102:20800",
"192.168.1.103:20800"
],
"maxRetries": 100,
"retryDuration": 2000,
"workerCount": 2,
"supportCMDs": [
"query",
"ping",
"set",
"get",
"mset",
"mget",
"incrby",
"decrby",
"getset",
"append",
"setnx",
"strLen",
"incr",
"decr",
"setrange",
"msetnx",
"hset",
"hget",
"hdel",
"hexists",
"hkeys",
"hvals",
"hgetall",
"hlen",
"hmget",
"hmset",
"hsetnx",
"hstrlen",
"hincrby",
"lindex",
"linsert",
"llen",
"lpop",
"lpush",
"lpushx",
"lrange",
"lrem",
"lset",
"ltrim",
"rpop",
"rpoplpush",
"rpush",
"rpushx",
"sadd",
"scard",
"srem",
"smembers",
"sismember",
"spop",
"zadd",
"zcard",
"zcount",
"zincrby",
"zlexcount",
"zrange",
"zrangebylex",
"zrangebyscore",
"zrank",
"zrem",
"zremrangebylex",
"zremrangebyrank",
"zremrangebyscore",
"zscore"
]
}
Run proxy:
./redis-proxy --log-level=info --log-file=/apps/deepfabric/log/proxy.log --cfg=/apps/deepfabric/cfg/cfg.json
Install from docker
docker pull deepfabric/pd
docker pull deepfabric/cell
docker pull deepfabric/proxy
Run PD
Node: 192.168.1.101
docker run -d --net=host -v /apps/deepfabric/data:/apps/deepfabric/data deepfabric/pd --log-level=info --log-file=/apps/deepfabric/log/pd.log --name=pd1 --data=/apps/deepfabric/data --addr-rpc=192.168.1.101:20800 --urls-client=http://192.168.1.101:2379 --urls-peer=http://192.168.1.101:2380 --initial-cluster=pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380
Node: 192.168.1.102
docker run -d --net=host -v /apps/deepfabric/data:/apps/deepfabric/data deepfabric/pd --log-level=info --log-file=/apps/deepfabric/log/pd.log --name=pd2 --data=/apps/deepfabric/data --addr-rpc=192.168.1.102:20800 --urls-client=http://192.168.1.102:2379 --urls-peer=http://192.168.1.102:2380 --initial-cluster=pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380
Node: 192.168.1.103
docker run -d --net=host -v /apps/deepfabric/data:/apps/deepfabric/data deepfabric/pd --log-level=info --log-file=/apps/deepfabric/log/pd.log --name=pd3 --data=/apps/deepfabric/data --addr-rpc=192.168.1.103:20800 --urls-client=http://192.168.1.103:2379 --urls-peer=http://192.168.1.103:2380 --initial-cluster=pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380
Run Cell
Node: 192.168.1.201
docker run -d --net=host -v /apps/deepfabric/data:/apps/deepfabric/data deepfabric/cell --log-level=info --log-file=/apps/deepfabric/log/cell.log --pd=192.168.1.101:20800,192.168.1.102:20800,192.168.1.103:20800 --addr=192.168.1.201:10800 --addr-cli=192.168.1.201:6379 --zone=zone-1 --rack=rack-1 --data=/apps/deepfabric/data
Node: 192.168.1.202
docker run -d --net=host -v /apps/deepfabric/data:/apps/deepfabric/data deepfabric/cell --log-level=info --log-file=/apps/deepfabric/log/cell.log --pd=192.168.1.101:20800,192.168.1.102:20800,192.168.1.103:20800 --addr=192.168.1.202:10800 --addr-cli=192.168.1.202:6379 --zone=zone-1 --rack=rack-1 --data=/apps/deepfabric/data
Node: 192.168.1.203
docker run -d --net=host -v /apps/deepfabric/data:/apps/deepfabric/data deepfabric/cell --log-level=info --log-file=/apps/deepfabric/log/cell.log --pd=192.168.1.101:20800,192.168.1.102:20800,192.168.1.103:20800 --addr=192.168.1.203:10800 --addr-cli=192.168.1.203:6379 --zone=zone-1 --rack=rack-1 --data=/apps/deepfabric/data
Run Proxy
Execute the following command on 192.168.1.91, the json configuration file is the same as the previous.
docker run -d --net=host -v /apps/deepfabric/cfg:/apps/deepfabric/cfg deepfabric/proxy --log-level=info --log-file=/apps/deepfabric/log/proxy.log --cfg=/apps/deepfabric/cfg/cfg.json
Install from source
Elasticell use RocksDB as storage engine, so need install some dependency package and some go package that wrapped RocksDB C-API. We highly recommended use docker to build Elasticell.
Pull Elasticell Image
docker pull deepfabric/elasticell-build
Create dist folder
/apps/deepfabric
Build PD
docker run -it --rm -v /apps/deepfabric/dist:/apps/deepfabric/dist -e ELASTICELL_BUILD_TARGET=pd -e ELASTICELL_BUILD_VERSION=master deepfabric/elasticell-build
Build Cell
docker run -it --rm -v /apps/deepfabric/dist:/apps/deepfabric/dist -e ELASTICELL_BUILD_TARGET=cell -e ELASTICELL_BUILD_VERSION=master deepfabric/elasticell-build
Build Proxy
docker run -it --rm -v /apps/deepfabric/dist:/apps/deepfabric/dist -e ELASTICELL_BUILD_TARGET=proxy -e ELASTICELL_BUILD_VERSION=master deepfabric/elasticell-build
Build all binary
docker run -it --rm -v /apps/deepfabric/dist:/apps/deepfabric/dist -e ELASTICELL_BUILD_TARGET=all -e ELASTICELL_BUILD_VERSION=master deepfabric/elasticell-build
Install some package on Cell node
apt-get update
apt-get -y install libsnappy-dev
apt-get -y install zlib1g-dev
apt-get -y install libbz2-dev
apt-get -y install libgtest-dev
apt-get -y install libjemalloc-dev