docker-compose构建redis集群(3主3从)并配置密码

1.创建数据目录

[root@localhost redis]# pwd
/data/redis
[root@localhost redis]# mkdir 700{1..6}/data ##这个目录和下边yml文件的volumes对应
[root@localhost redis]# ls
7001 7002 7003 7004 7005 7006 docker-compose.yml

2.创建一个docker-compose.yml文件,内容如下:

version: '3'

services:
 redis1:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/7001/data:/data
  environment:
   - REDIS_PORT=7001

 redis2:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/7002/data:/data
  environment:
   - REDIS_PORT=7002

 redis3:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/7003/data:/data
  environment:
   - REDIS_PORT=7003

 redis4:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/7004/data:/data
  environment:
   - REDIS_PORT=7004

 redis5:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/7005/data:/data
  environment:
   - REDIS_PORT=7005

 redis6:
  image: publicisworldwide/redis-cluster
  network_mode: host
  restart: always
  volumes:
   - /data/redis/7006/data:/data
  environment:
   - REDIS_PORT=7006

官网建议用host模式,如果不想用也可以使用briage模式:docker-compose.yml内容如下:

---
redismaster1:
  image: 'publicisworldwide/redis-cluster'
  environment:
    REDIS_PORT: '7000'
  ports:
    - '7000:7000'
    - '17000:17000'

redismaster2:
  image: 'publicisworldwide/redis-cluster'
  environment:
    REDIS_PORT: '7001'
  ports:
    - '7001:7001'
    - '17001:17001'

redismaster3:
  image: 'publicisworldwide/redis-cluster'
  environment:
    REDIS_PORT: '7002'
  ports:
    - '7002:7002'
    - '17002:17002'

redisslave1:
  image: 'publicisworldwide/redis-cluster'
  environment:
    REDIS_PORT: '7003'
  ports:
    - '7003:7003'
    - '17003:17003'

redisslave2:
  image: 'publicisworldwide/redis-cluster'
  environment:
    REDIS_PORT: '7004'
  ports:
    - '7004:7004'
    - '17004:17004'

redisslave3:
  image: 'publicisworldwide/redis-cluster'
  environment:
    REDIS_PORT: '7005'
  ports:
    - '7005:7005'
    - '17005:17005'

3.创建文件之后,启动服务

[root@k8s-m2 redis]# docker-compose up -d
Creating redis_redis1_1 ... done
Creating redis_redis5_1 ... done
Creating redis_redis4_1 ... done
Creating redis_redis3_1 ... done
Creating redis_redis6_1 ... done
Creating redis_redis2_1 ... done
[root@k8s-m2 redis]# docker-compose ps
Name Command State Ports
---------------------------------------------------------------
redis_redis1_1 /usr/local/bin/entrypoint. ... Up
redis_redis2_1 /usr/local/bin/entrypoint. ... Up
redis_redis3_1 /usr/local/bin/entrypoint. ... Up
redis_redis4_1 /usr/local/bin/entrypoint. ... Up
redis_redis5_1 /usr/local/bin/entrypoint. ... Up
redis_redis6_1 /usr/local/bin/entrypoint. ... Up

状态都为Up,说明服务均正常启动,如果有状态不正常的容器,看看自己服务器的端口是不是被占用了。
4.redis-cluster集群配置
上述只是启动了6个redis容器,并没有设置集群,随便进入一个redis容器,执行下面的命令,IP替换成自己宿主机的IP

[root@k8s-m2 redis]# docker exec -ti d3a904cc0d5a bash
root@k8s-m2:/data# redis-cli --cluster create 192.168.1.100:7001 192.168.1.100:7002 192.168.1.100:7003 192.168.1.100:7004 192.168.1.100:7005 192.168.1.100:7006 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.1.100:7004 to 192.168.1.100:7001
Adding replica 192.168.1.100:7005 to 192.168.1.100:7002
Adding replica 192.168.1.100:7006 to 192.168.1.100:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 7237efa105ff4246c02da08c0e65c18246755f2f 192.168.1.100:7001
slots:[0-5460] (5461 slots) master
M: 241d6eb2abcd9a6d41db5231fcd80fac1d452bee 192.168.1.100:7002
slots:[5461-10922] (5462 slots) master
M: 493083f2733bc181295f5b9a9fa9bc6fdf821958 192.168.1.100:7003
slots:[10923-16383] (5461 slots) master
S: b60ef6cbea0ae06566d17db4a1b4452e56543419 192.168.1.100:7004
replicates 241d6eb2abcd9a6d41db5231fcd80fac1d452bee
S: b48e546e963f694eac91d49b285040bb2bec5513 192.168.1.100:7005
replicates 493083f2733bc181295f5b9a9fa9bc6fdf821958
S: 259de2d6be917e64cdc01604521da45cc1f8d842 192.168.1.100:7006
replicates 7237efa105ff4246c02da08c0e65c18246755f2f
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
....
>>> Performing Cluster Check (using node 192.168.1.100:7001)
M: 7237efa105ff4246c02da08c0e65c18246755f2f 192.168.1.100:7001
slots:[0-5460] (5461 slots) master
1 additional replica(s)
M: 241d6eb2abcd9a6d41db5231fcd80fac1d452bee 192.168.1.100:7002
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 493083f2733bc181295f5b9a9fa9bc6fdf821958 192.168.1.100:7003
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: b60ef6cbea0ae06566d17db4a1b4452e56543419 192.168.1.100:7004
slots: (0 slots) slave
replicates 241d6eb2abcd9a6d41db5231fcd80fac1d452bee
S: 259de2d6be917e64cdc01604521da45cc1f8d842 192.168.1.100:7006
slots: (0 slots) slave
replicates 7237efa105ff4246c02da08c0e65c18246755f2f
S: b48e546e963f694eac91d49b285040bb2bec5513 192.168.1.100:7005
slots: (0 slots) slave
replicates 493083f2733bc181295f5b9a9fa9bc6fdf821958
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

至此,基于docker部署的redis-cluster集群就已经完成。
下面设置密码,命令如下:
设置masterauth

config set masterauth 密码

设置requirepass

config set requirepass 密码

验证密码,以继续操作

auth LinShen

回写到文件,使其永久生效(如果这里出现Permission denied,则说明Dockerfile少了RUN chmod 777 /usr/local/etc/redis/redis.conf)

config rewrite

然后查看是否设置成功:

get masterauth
get requirepass
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用docker-compose部署Redis集群的步骤: 1.创建一个目录,例如redis-cluster,并在该目录中创建一个docker-compose.yaml文件。 2.在docker-compose.yaml文件中编写以下内容: ```yaml version: '3' services: redis-1: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6379" networks: - redis-cluster redis-2: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6380" networks: - redis-cluster redis-3: image: redis:6.0.9 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6381" networks: - redis-cluster networks: redis-cluster: driver: bridge ``` 3.在redis-cluster目录中创建一个redis.conf文件,并将以下内容复制到文件中: ```conf bind 0.0.0.0 port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes requirepass 1111 masterauth 1111 ``` 4.在终端中导航到redis-cluster目录,并运行以下命令启动Redis集群: ```shell docker-compose up -d ``` 5.使用以下命令进入redis-1容器: ```shell docker exec -it redis-cluster_redis-1_1 /bin/bash ``` 6.在redis-1容器中,使用以下命令创建Redis集群: ```shell redis-cli --cluster create 172.20.0.2:6379 172.20.0.3:6379 172.20.0.4:6379 --cluster-replicas 0 ``` 7.现在,您已经成功地使用docker-compose部署了Redis集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值