摘要
Docker CE Version:20.10.10
Centos Version:CentOS Linux release 7.9.2009 (Core)
# 一:安装Redis
具体可查看 安装Redis
# 二:挂载
新建文件夹与配置文件。
新建 data
和 conf
两个文件夹,位置随意。
for port in $(seq 6383 6388);
do
mkdir -p /root/docker/redis3/node-${port}/{data,conf}
touch /root/docker/redis3/node-${port}/conf/redis.conf
cat << EOF > /root/docker/redis3/node-${port}/conf/redis.conf
port ${port}
bind 0.0.0.0
requirepass qazwsx123edc
protected-mode no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.214.131
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
EOF
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
appendonly
:是否开启 AOF 持久化模式,默认 no;cluster-enabled
:是否开启集群模式,默认 no;cluster-config-file
:集群节点信息文件;cluster-node-timeout
:集群节点连接超时时间;cluster-announce-ip
:集群节点 IP;cluster-announce-port
:集群节点映射端口;cluster-announce-bus-port
:集群节点总线端口。
通过 tree
命令查看目录结构:(如果没有该命令先安装 yum install -y tree
)
每个 Redis Cluster 节点都需要打开两个 TCP 连接,用于服务客户端的普通 Redis TCP 端口,例如 6379,加上数据端口上 10000 得到的端口,如 16379。详情可查看 redis 官网 (opens new window)
第二个高端口用于集群总线,即使用二进制协议的节点到节点通信通道。节点使用集群总线进行故障检测、配置更新、故障转移授权等。客户端永远不要尝试与集群总线端口通信,而应始终与普通 Redis 命令端口通信,但确保在防火墙中打开这两个端口,否则 Redis 集群节点将无法通信。
命令端囗和集群总线端口偏移量是固定的,始终为 10000。
# 三:启动
# 3.1 创建并启动
for port in $(seq 6383 6388); \
do \
docker run --name redis-${port} \
-p ${port}:${port} -p 1${port}:1${port} \
-v /root/docker/redis3/node-${port}/data:/data \
-v /root/docker/redis3/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
--sysctl net.core.somaxconn=1024 \
-d redis redis-server /etc/redis/redis.conf
done
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
释义如下:
–name
:给容器起一个名-p
:端口映射 宿主机:容器-v
:挂载自定义配置 自定义配置:容器内部配置-d
:后台运行redis-server /etc/redis/redis.conf
:让 redis 按照此 redis.conf 的配置启动--sysctl
:设置系统参数,通过这些参数来调整系统性能
# 3.2 验证
通过 docker ps
查看启动状态是否成功
# 四:容器终端
执行
docker exec -it redis-6383 /bin/bash
命令,进入终端。创建集群
redis-cli -a qazwsx123edc --cluster create 192.168.214.131:6383 192.168.214.131:6384 192.168.214.131:6385 192.168.214.131:6386 192.168.214.131:6387 192.168.214.131:6388 --cluster-replicas 1
1
- 查看节点相关信息
> redis-cli -c -a qazwsx123edc -p 6383
> cluster info
> cluster nodes
1
2
3
2
3
主节点 myself 则是目前所在节点
# 五:附录
批量停止容器
for port in $(seq 6383 6388);
do
docker stop redis-${port}
done
1
2
3
4
2
3
4
批量删除容器
for port in $(seq 6383 6388);
do
docker rm redis-${port}
done
1
2
3
4
2
3
4
# 六:常见问题
具体可查看 常见问题