docker配置redis6.2.6集群方案
docker 安装教程
redis集群安装过程
-
创建 docker 网络
-
编写 redis 集群配置文件
-
启动 redis 集群
创建 docker 网络
docker network create redis --subnet 172.38.0.0/16
编写 redis 集群配置文件
- 文件配置
大致思路:
根据思路编写脚本:
for port in $(seq 6379 6384);
do
my_ip=`expr $port - 6377`
mkdir -p /root/redis_config/redis-cluster/node-${port}/conf
mkdir -p /root/redis_config/redis-cluster/node-${port}/data
touch /root/redis_config/redis-cluster/node-${port}/conf/redis.conf
cat << EOF>/root/redis_config/redis-cluster/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.${my_ip}
cluster-announce-port 6379
cluster-announce-bus-port 16379
EOF
done
for ((port = 6379; port < 6379 + 6; port++)); do
my_ip=`expr $port - 6377`
docker run -p ${port}:6379 \
-p 1${port}:16379 \
-v /root/redis_config/redis-cluster/node-${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /root/redis_config/redis-cluster/node-${port}/data:/data \
--restart always \
--privileged=true \
--net=redis \
--ip=172.38.0."${my_ip}" \
--name redis${port} -d my_redis:6.2.6 redis-server /usr/local/etc/redis/redis.conf
done
创建 redis 集群
redis-cli --cluster create 172.38.0.2:6379 172.38.0.3:6379 172.38.0.4:6379 172.38.0.5:6379 172.38.0.6:6379 172.38.0.7:6379 --cluster-replicas 1
测试是否能够连接
- 连接的 6379 节点
redis-cli -c -h redis6379 -p 6379
redis6379:6379> cluster nodes
d7c03e9b9b8dd787ccffaabcba85915281c0db57 172.38.0.7:6379@16379 slave 3f90db0d932b2bfbf843bf0290b14228b2c946a1 0 1646317621000 2 connected
3f90db0d932b2bfbf843bf0290b14228b2c946a1 172.38.0.3:6379@16379 master - 0 1646317621485 2 connected 5461-10922
6ba628d2354657c31e15caac5f62bdacfb426225 172.38.0.5:6379@16379 slave 0dd642d142727068e2c3ac5f5fa18b6b18f30260 0 1646317620475 3 connected
0dd642d142727068e2c3ac5f5fa18b6b18f30260 172.38.0.4:6379@16379 master - 0 1646317622494 3 connected 10923-16383
f0e27fefc1e6d9c2726941d79a30e508aa595a9c 172.38.0.6:6379@16379 slave cd1f20f58b3f864ca1a7ed5afa2c502dc0c7ee1a 0 1646317622091 1 connected
cd1f20f58b3f864ca1a7ed5afa2c502dc0c7ee1a 172.38.0.2:6379@16379 myself,master - 0 1646317620000 1 connected 0-5460
- 连接
6380节点 并设置值
redis-cli -c -h redis6380 -p 6379
设置 set a abc
- 切换到
6379节点, 读取值
172.38.0.4:6379> get a
"abc"
探索 集群 cluster-announce-ip
cluster-announce-ip填入主机ip试试能不能用
设置主机IP方式大致思路:
#!/bin/bash
for port in $(seq 6379 6384);
do
mkdir -p /root/redis_config/redis-cluster/node-${port}/conf
mkdir -p /root/redis_config/redis-cluster/node-${port}/data
touch /root/redis_config/redis-cluster/node-${port}/conf/redis.conf
cat << EOF>/root/redis_config/redis-cluster/node-${port}/conf/redis.conf
port ${port}
bind 0.0.0.0
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.0.155
cluster-announce-port ${port}
cluster-announce-bus-port 1${port}
EOF
done
for ((port = 6379; port < 6379 + 6; port++)); do
my_ip=`expr $port - 6377`
docker run -p ${port}:${port} \
-p 1${port}:1${port} \
-P \
-v /root/redis_config/redis-cluster/node-${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /root/redis_config/redis-cluster/node-${port}/data:/data \
--restart always \
--privileged=true \
--net=redis \
--ip=172.38.0."${my_ip}" \
--name redis${port} -d my_redis:6.2.6 redis-server /usr/local/etc/redis/redis.conf
done
而创建集群的方式需要修改成:
redis-cli --cluster create 172.38.0.2:6379 172.38.0.3:6380 172.38.0.4:6381 172.38.0.5:6382 172.38.0.6:6383 172.38.0.7:6384 --cluster-replicas 1
上面这两种思路的方式, 主要是
① 多个IP(虚拟机) 一对一到 多个端口(主机)
② 多个端口(虚拟机) 一对一到 多个端口(主机)