1.1镜像拉取
$ docker pull redis:5.0.3
$ docker images
1.2 新建本地目录
$ cd /data
vi redis-cluster.tmpl
port ${PORT}
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 119.45.60.140
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 5120mb
save ""
$ for port in `seq 7000 7005`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
1.3 批量启动容器
$ for port in `seq 7000 7005`; do \
docker run -d -ti \
-v /data/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /data/redis/${port}/data:/data \
--restart always --name redis-${port} --net host \
--sysctl net.core.somaxconn=1024 redis:5.0.3 redis-server /usr/local/etc/redis/redis.conf; \
done
1.4 随便进入一个容器
$ docker exec -it redis-7001 bash
1.5 所有节点加入集群
/usr/local/bin/redis-cli --cluster create \
119.45.60.140:7000 \
119.45.60.140:7001 \
119.45.60.140:7002 \
119.45.60.140:7003 \
119.45.60.140:7004 \
119.45.60.140:7005 \
--cluster-replicas 1
输出:
1.6 验证集群
$ redis-cli -c -p 7000
redis-cli -p 7000 -c cluster nodes
$ for line in {
1..100};do redis-cli -p 7001 -a 'admin' -c set ops_${line} ${line}; done。
$ for line in {
1..100};do redis-cli -p 7001 -a 'admin' -c get ops_${line}; done