# 创建一个 redis 网络
[root@gaoleiTest /]# docker network create redisnet --subnet 172.38.0.0/16
b4ff3d53de150c7a2fc4661f02947b2df637cffbb7e54635f226015ba63b09bc
[root@gaoleiTest /]# docker network ls
NETWORK ID NAME DRIVER SCOPE
d125776fd42f bridge bridge local
7c3704c16e1a host host local
690b3c75acb3 mynet bridge local
cfa665d6d0e1 none null local
b4ff3d53de15 redisnet bridge local
[root@gaoleiTest /]# docker network inspect redisnet
[
{
"Name": "redisnet",
"Id": "b4ff3d53de150c7a2fc4661f02947b2df637cffbb7e54635f226015ba63b09bc",
"Created": "2022-08-01T13:10:04.278975515+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.38.0.0/16"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
shell脚本:
# 通过脚本撞见6个redis配置,注意 复制过去的脚本每行后面不要加tab for port in $(seq 1 6); \ # for循环6次 do \ mkdir -p /mydata/redis/node-${port}/conf # 创建redis目录 touch /mydata/redis/node-${port}/conf/redis.conf #创建redis配置文件 cat << EOF >/mydata/redis/node-${port}/conf/redis.conf 配置文件内的内容 port 6379 # 集群的端口6379 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 172.38.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes EOF done
复制用(无注解,复制直接用)
for port in $(seq 1 6); \ do \ mkdir -p /mydata/redis/node-${port}/conf touch /mydata/redis/node-${port}/conf/redis.conf cat << EOF >/mydata/redis/node-${port}/conf/redis.conf port 6379 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 172.38.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes EOF done
# 1到6的遍历 for port in $(seq 1 6); \ do \ docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \ -v /mydata/redis/node-${port}/data:/data \ -v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \ -d --net redisnet --ip 172.38.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \ done # 一条一条增加 docker run -p 6371:6379 -p 16371:16379 --name redis-1 \ -v /mydata/redis/node-1/data:/data \ -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \ -d --net redisnet --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \ # 创建集群 redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
创建出来的集群:
# 进入redis-1 [root@gaoleiTest /]# docker exec -it redis-1 /bin/sh # 配置集群 /data # redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 17 2.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1 >>> Performing hash slots allocation on 6 nodes... Master[0] -> Slots 0 - 5460 #3个主 Master[1] -> Slots 5461 - 10922 Master[2] -> Slots 10923 - 16383 Adding replica 172.38.0.15:6379 to 172.38.0.11:6379 #三个从 Adding replica 172.38.0.16:6379 to 172.38.0.12:6379 Adding replica 172.38.0.14:6379 to 172.38.0.13:6379 M: 3ebbb85309856599897cfaa86ca8acb6e28d026a 172.38.0.11:6379 slots:[0-5460] (5461 slots) master M: dd171f47189bf52a218e68b1abf9ead8eb921ad4 172.38.0.12:6379 slots:[5461-10922] (5462 slots) master M: 60faa5fabedb875018a152467fbafb280b385f8e 172.38.0.13:6379 slots:[10923-16383] (5461 slots) master S: 4bdfb43cdceea9f822d0a8a456fdc84cd4859c98 172.38.0.14:6379 replicates 60faa5fabedb875018a152467fbafb280b385f8e S: 90c03d6b4777feaaaef9df69dc4e406bbd9445cf 172.38.0.15:6379 replicates 3ebbb85309856599897cfaa86ca8acb6e28d026a S: 14302e9c5dd97c32abc06f4fe483a1b82ec2f906 172.38.0.16:6379 replicates dd171f47189bf52a218e68b1abf9ead8eb921ad4 Can I set the above configuration? (type 'yes' to accept): yes #是否接受
配置完成后,查看: