docker安装redis集群

1.1镜像拉取

#拉取镜像
$ docker pull redis:5.0.3

#查看镜像是否拉取成功
$ docker images

1.2 新建本地目录

#进入到/data 目录
$ cd /data

#创建临时配置文件
vi redis-cluster.tmpl

#配置内容
# redis端口
port ${PORT}
# 关闭保护模式
protected-mode no
# 开启集群
cluster-enabled yes
# 集群节点配置
cluster-config-file nodes.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP
cluster-announce-ip 119.45.60.140
# 集群节点端口 7000 - 7005
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
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

#--cluster-replicas 1  表示为集群中的每一个主节点指定一个从节点,即一比一的复制

输出:

在这里插入图片描述

1.6 验证集群

#进入7001
$ redis-cli -c -p 7000

# 查看集群
redis-cli -p 7000 -c cluster nodes

#连接集群不管是写入数据还是读取数据都需要加入-c的参数。
#往集群里面写入一百条数据
$ 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 

猜你喜欢

转载自blog.csdn.net/jinian2016/article/details/108022663