docker搭建Redis cluster集群,完全无坑笔记。
环境:Linux虚拟机Centos7.0
1. 安装docker
- 1.1 安装所需的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 1.2 设置稳定的存储库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 1.3 安装docker-ce(docker社区版-必须-版本会新一点)
# 如果下载速度太慢,ctrl+c退出安装,重新执行安装命令
yum install -y docker-ce
- 1.4 启动docker并设置为开机启动
systemctl start docker
systemctl enable docker
- 1.5 检查是否安装成功,查看docker版本
docker -v
- 1.5 开放需要的端口(此次安装用如下接口)
firewall-cmd --permanent --zone=public --add-port=7000-7005/tcp
firewall-cmd --permanent --zone=public --add-port=17000-17005/tcp
#重新加载配置
firewall-cmd --reload
#查看开放的端口
firewall-cmd --permanent --zone=public --list-ports
2. 安装redis
- 2.1 创建redis镜像
docker pull redis
- 2.2 查看redis镜像
docker images
- 2.3 创建redis cluster容器
2.3.1 创建redis容器集群文件夹
#路径可自定义,如果自定义路径,后面用到此路径的命令也需要修改
mkdir -p /home/redis-cluster
2.3.2 创建redis的配置文件redis.conf模板文件
vim redis-cluster.tmpl
插入如下内容,wq退出且保存
##节点端口
port ${PORT}
##开启集群模式
protected-mode no
##cluster集群模式
cluster-enabled yes
##集群配置名
cluster-config-file nodes.conf
##超时时间
cluster-node-timeout 5000
##集群的中各个容器的ip地址
cluster-announce-ip 192.168.31.57
##节点映射端口
cluster-announce-port ${PORT}
##节点总线端口
cluster-announce-bus-port 1${PORT}
##持久化模式
appendonly yes
cluster-announce-ip 参数设置为容器所在的物理机虚拟机的ip,我们是在一台虚拟机上搭建redis集群所以ip都一样
2.3.3 在/home/redis-cluster下生成redis的conf和dat目录,并生成redis.conf配置文件
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
创建完成如下图,每个文件下面都有data和conf目录
2.1.4 创建6个redis容器并启动
for port in `seq 7000 7005`; do \
docker run -d --net host --privileged=true \
-v $PWD/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v $PWD/${port}/data:/data \
--restart always --name redis-${port} \
redis redis-server /usr/local/etc/redis/redis.conf; \
done
2.1.5 查询看正在运行的6个redis容器
docker ps
- 3.1 创建redis cluster
3.1.1 随便进入一个redis容器
docker exec -it redis-7000 bash
3.1.2 创建cluster
#此处的ip对应每个容器的ip,本次这6个redis容器的ip都为物理主机ip
redis-cli --cluster create 192.168.31.57:7000 192.168.31.57:7001 192.168.31.57:7002 192.168.31.57:7003 192.168.31.57:7004 192.168.31.57:7005 --cluster-replicas 1
成功显示如下:
至此,redis cluster 集群已经创建好了。
如果要删除镜像,执行如下命令
for port in `seq 7000 7005`; do \
docker stop redis-${port};
docker rm redis-${port};
done
进入redis 命令控制台
# 根据CONTAINER ID/NAMES先进入容器
docker exec -it CONTAINER ID/NAMES bash
#再根据prot进入控制台
redis-cli -p port -c
查看redis实时日志
#根据CONTAINER ID/NAMES查看
docker logs -f -t --since="2017-05-31" --tail=10 CONTAINER ID/NAMES