docker-compose安装redis集群

本文档详细介绍了如何使用docker-compose在Linux环境下部署redis集群,包括创建配置文件、启动master-slave节点、配置sentinel哨兵以及设置集群密码,确保数据安全。在搭建过程中,强调了关键配置项的解释和注意事项,如自定义集群名称、IP地址的正确设定以及哨兵的密码保护。

前言

在现如今数据量越来越大的时代,一台redis进行数据缓存是远远不够的,这时候就需要使用到了集群技术。来帮助master解决读的压力,让读的操作去slave进行。这样可以保证redis不会宕机。下面进行实践操作。搭建集群是根据这位博主的操作来的

一:创建一个文件夹,用于适用docker-compose.yml文件

cd /usr/local        #进入usr/local 目录

sudo mkdir -p docker/redis docker/sentinel   #创建docker文件夹并在其下创建redis和sentinel文件夹

二:进入redis和sentinel文件夹,并创建如下docker-compose.yml文件

cd docker/redis #进入redis文件夹

sudo vi docker-compose.yml #在redis文件夹下编写docker-compose.yml

cd docker/sentinel #进入redis文件夹

sudo vi docker-compose.yml #在redis文件夹下编写docker-compose.yml
这是redis文件夹下的docker-compose.yml文件
version: '3'
services:
  master:
    image: redis
    container_name: redis-master
    ports:
      - 6379:6379

  slave1:
    image: redis
    container_name: redis-slave-1
    ports:
      - 6380:6379
    command: redis-server --slaveof redis-master 6379

  slave2:
    image: redis
    container_name: redis-slave-2
    ports:
      - 6381:6379
    command: redis-server --slaveof redis-master 6379
这是sentinel文件夹下的docker-compose.yml文件
version: '3'
services:
  sentinel1:
    image: redis
    container_name: redis-sentinel-1
    ports:
      - 26379:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf

  sentinel2:
    image: redis
    container_name: redis-sentinel-2
    ports:
      - 26380:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf

  sentinel3:
    image: redis
    container_name: redis-sentinel-3
    ports:
      - 26381:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf 
    volumes:
      - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf 

创建哨兵文件,并将如下内容复制进去,保存并退出

sudo vi sentinel.conf
port 26379
dir /tmp
sentinel monitor redis-slave 192.168.213.130 6379 2 #redis-slave这里是集群名字,你随意,后面是ip和端口号请配置好
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

注意:
1.第三行中 redis-slave是可以自定义集群的名字,如果使用其他语言连接集群,需要写上该名字。

2.192.168.223.129是我虚拟机的ip,请换成自己的ip,不要127.0.0.1 否则会链接到你的应用程序去,写IP就可以。

3.那个2呢,是因为我有3台哨兵,2个投票超过50%了,所以设置2即可,如果是更多,设置超过50%概率就好,自己喜欢。

将文件copy3份,并改下名字
sudo cp sentinel.conf sentinel1.conf

sudo cp sentinel.conf sentinel2.conf

sudo cp sentinel.conf sentinel3.conf

启动集群,先启动master-slave,在启动sentinel。

cd /usr/local/docker/redis

sudo docker-compose up -d              #-d表示后台运行,就是守护态运行
cd /usr/local/docker/sentinel/

sudo docker-compose up -d                 #-d表示后台运行,就是守护态运行

查看集群启动情况

docker ps 

查看集群
进入redis去操作一下
redis操作图
在这里插入图片描述

补充说明

前面的集群已经搭建完毕,可是却出现一个问题,谁都可以连接你的redis集群,这是非常不安全的。为此,这里将补充为集群添加密码,加强安全。

version: '3'
services:
master:
  image: redis
  container_name: redis-master
  command: redis-server --requirepass 123456
  ports:
    - 6379:6379

slave1:
  image: redis
  container_name: redis-slave-1
  ports:
    - 6380:6379
  command: redis-server --slaveof redis-master 6379 --requirepass 123456 --masterauth 123456

slave2:
  image: redis
  container_name: redis-slave-2
  ports:
    - 6381:6379
  command: redis-server --slaveof redis-master 6379  --requirepass 123456 --masterauth 123456

上面标红色的地方,就是添加的密码校验,123456是我们可以自己修改的密码,这一步做完基本搞定一半了,接下来我们要去修改哨兵的文件。
哨兵下的sentinel3.conf,sentinel2.conf,sentinel1.conf都需要去添加,添加在sentinel monitor redis-slave 192.168.213.130 6379 2下面就可以了

sentinel auth-pass mymaster 123456

保存退出,按照上面的步骤重新启动整个容器即可。

进入redis操作一下

报错
这个错误就是你之前设置了密码,此时你进入需要输入密码就可以

auth 123456

在这里插入图片描述
我在写入时有报错了,这个错误提示说这个副本只能读不能写操作
在这里插入图片描述

config get slave-read-only #查看你当前的文档是否是可读的

config set slave-read-only no #设置你操作为no就可以进行写操作了

config get slave-read-only #查看你当前的文档是否是可读的

在这里插入图片描述

再次写入
在这里插入图片描述
在这里插入图片描述
这就说明你的集群搭建好了,上面使用docker-compose搭建redis集群是查看的这位博主的.后续出现的问题都是自己解决的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值