【dcoker网络】10.redis集群

# 创建一个 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   #是否接受

配置完成后,查看:

在redis中set a b,把主机的redis容器停掉后,依然可以获得 a的值(从机中获取的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值