docker redis5.0 cluster集群搭建的实现

系统环境:ubuntu16.04LTS

本文是使用 6 个 docker 容器搭建单机集群测试,实际环境如果是多台,可对应修改容器数量、端口号和集群 ip 地址,每台机器都按下面步骤同样操作即可。

拉取redis官方镜像

docker pull redis:5.0

创建配置文件和数据目录

创建目录

mkdir ~/redis_cluster
cd ~/redis_cluster

新建一个模板文件sudo vim redis_cluster.tmpl,填入如下内容:

# redis端口
port ${PORT}

# 关闭保护模式
protected-mode no

# 开启集群
cluster-enabled yes

# 集群节点配置
cluster-config-file nodes.conf

# 超时
cluster-node-timeout 5000

# 集群节点IP host模式为宿主机IP
cluster-announce-ip 10.10.100.197

# 集群节点端口 7000 - 7005
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}

# 开启 appendonly 备份模式
appendonly yes

# 每秒钟备份
appendfsync everysec

# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no

# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100

# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 5120mb

# 关闭快照备份
save ""

批量创建配置文件和数据目录,终端运行以下命令:

for port in `seq 7000 7005`; do \
 mkdir -p ./${port}/conf \
 && PORT=${port} envsubst < ./redis_cluster.tmpl > ./${port}/conf/redis.conf \
 && mkdir -p ./${port}/data; \
done

批量启动 redis 容器

容器的 ip 地址采用 host 模式:

for port in `seq 7000 7005`; do \
 docker run -d -it --memory=1G \
 -v ~/redis_cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
 -v ~/redis_cluster/${port}/data:/data \
 --restart always --name redis-${port} --net host \
 --sysctl net.core.somaxconn=1024 redis:5.0 redis-server /usr/local/etc/redis/redis.conf; \
done

这里的--memeory=1G是限制单个 docker 容器占用内存大小为 1G,超过会被进程杀死。运行时可能会出现...Memory limited without swap...这个警告,可以忽略。如不需要限制内存,可以去掉--memeory参数。

创建集群

随便进入其中一个容器:

docker exec -it redis-7000 bash

进入后执行如下命令创建集群:

redis-cli --cluster create 10.10.100.197:7000 10.10.100.197:7001 10.10.100.197:7002 10.10.100.197:7003 10.10.100.197:7004 10.10.100.197:7005 --cluster-replicas 1

安装redis-cli命令(如已有可跳过此步):

sudo apt install redis-tools

输入yes后,集群创建完毕,exit退出 docker,接着登录其中一个节点,验证集群可用性:

redis-cli -c -p 7000

输入cluster nodes查看集群状态

127.0.0.1:7000> cluster nodes
06851aa134d50096d82a434eced9194233b5204e 10.10.100.197:7003@17003 slave 8b33f273386c9504ef8bd10b005e24825b3b9596 0 1567671901000 4 connected
a42297b65f7101fc9e4941ef8a0e65080d1b6338 10.10.100.197:7005@17005 slave 0aa20378d14e3ef0859815196cbafa67e1001d0e 0 1567671901581 6 connected
e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 10.10.100.197:7002@17002 master - 0 1567671902582 3 connected 10923-16383
0aa20378d14e3ef0859815196cbafa67e1001d0e 10.10.100.197:7000@17000 myself,master - 0 1567671901000 1 connected 0-5460
8b33f273386c9504ef8bd10b005e24825b3b9596 10.10.100.197:7001@17001 master - 0 1567671902383 2 connected 5461-10922
fe355eed99100197f43d1216d1de82643dd496a5 10.10.100.197:7004@17004 slave e7b6a35b1e92f94c225c507ea19f7f0318f0d1c3 0 1567671901380 5 connected

设置集群密码

设置密码为什么不在上面的步骤,利用模板文件批量创建配置文件的时候就写进去?

无论是在 redis5.x 版本,还是以前的 redis 版本利用 ruby 创建集群的方式,在redis-cli --cluster create创建集群的环节没有密码参数配置,所以我们需要创建完集群再设置密码。

我们用config set方式分别为每一个节点设置相同的密码(不需要重启 redis,且重启后依然有效),在此之前先给所有 redis 配置文件加w权限,不然密码无法保存到文件。

注意当前路径依然是在~/redis_cluster/:

for port in `seq 7000 7005`; do \
 chmod a+w ./${port}/conf/redis.conf; \
done

下面用一台做示例:

登录一个节点:

redis-cli -c -p 7000

设置密码:

127.0.0.1:7000> config set masterauth 123456
OK
127.0.0.1:7000> config set requirepass 123456
OK
127.0.0.1:7000> auth 123456
OK
127.0.0.1:7000> config rewrite
OK

后面几台执行同样的操作即可。

集群写入数据简单测试

随便登录一个集群节点:

redis-cli -c -p 7003 -a 123456

写入数据:

127.0.0.1:7003> set va 1
-> Redirected to slot [7800] located at 10.10.100.197:7001
OK
10.10.100.197:7001> get va
"1"
10.10.100.197:7001> del va
(integer) 1

可以看到,集群中任意节点写入数据,在其他任意节点都能读到。

至此,redis 集群搭建完成。

其他注意事项

  • 外网访问 redis,可能需要防火墙开放相应端口;
  • 如果需要删除容器,可批量操作:
for port in `seq 7000 7005`; do \
 docker stop redis-${port};
 docker rm redis-${port};
done

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 如何用docker部署redis cluster的方法

    前言 由于本人是个docker控,不喜欢安装各种环境,而且安装redis-trib也有点繁琐,索性用docker来做redis cluster. 本文用的是伪集群,真正的集群放到不同的机器即可.端口是7001-7006. 工作目录: /data/redis 创建文件夹 首先创建一堆对应端口的文件夹,下面是脚本 create.sh for i in `seq 7001 7006` do mkdir -p ${i}/data done 添加执行权限并执行 chmod 777 create.sh ./

  • docker redis5.0 cluster集群搭建的实现

    系统环境:ubuntu16.04LTS 本文是使用 6 个 docker 容器搭建单机集群测试,实际环境如果是多台,可对应修改容器数量.端口号和集群 ip 地址,每台机器都按下面步骤同样操作即可. 拉取redis官方镜像 docker pull redis:5.0 创建配置文件和数据目录 创建目录 mkdir ~/redis_cluster cd ~/redis_cluster 新建一个模板文件sudo vim redis_cluster.tmpl,填入如下内容: # redis端口 port

  • Docker上实现Redis集群搭建

    环境:Docker + ( Redis:5.0.5 * 3 ) 1.拉取镜像 docker pull redis:5.0.5 2.创建Redis容器 创建三个 redis 容器: redis-node1:6379 redis-node2:6380 redis-node3:6381 docker create --name redis-node1 -v /data/redis-data/node1:/data -p 6379:6379 redis:5.0.5 --cluster-enabled y

  • Redis的Cluster集群搭建的实现步骤

    目录 一.引言 二.Redis的Cluster模式介绍 1.Redis群集101 2.Redis群集TCP端口 3.Redis集群和Docker 4.Redis集群数据分片 5.Redis集群之主从模型 6.Redis集群一致性保证 7.Redis群集配置参数 三.创建和使用Redis群集 四.使用创建群集脚本创建Redis群集 五.测试故障转移 六.手动故障转移 七.总结 一.引言 本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的所涉及到的概念做深入的探讨.本文只是针

  • Redis Cluster 集群搭建你会吗

    三台机器 201.202.203,每台机器装两个 redis 实例,构建 redis cluster 集群. 1. 安装 添加 redis-cluster 目录,将 redis 压缩包拷贝到该目录下,解压压缩包. 解压完后,将文件夹 redis-5.0.3 重命名为 redis1. [root@test201 redis-cluster]# mv redis-5.0.3 redis1 需要在 redis1 目录下使用 make 命令进行编译. [root@test201 redis-cluste

  • 分布式Redis Cluster集群搭建与Redis基本用法

    目录 Redis集群搭建 Redis是啥 集群(Cluster) RedisCluster说明 RedisCluster节点 RedisCluster集群模式 不能保证一致性 创建和使用Redis集群 部署三个主节点 非docker docker安装 创建集群 Redis入门 Redis中的数据类型 字符串(string) 哈希(Hash) 列表(Lists) 集合(Set) 有序集合(sortedset) Redis 集群搭建 Redis 是啥 Redis(全称 REmote DIctiona

  • Redis5之后版本的高可用集群搭建的实现

    一.安装redis 1.安装gcc yum install gcc 2.下载redis-5.0.8.tar.gz 3.把下载好的redis-5.0.8.tar.gz放在/gyu/software文件夹下,并解压 > tar xzf redis-5.0.8.tar.gz > cd redis-5.0.8 4.进入到解压好的redis-5.0.8目录下,进行编译与安装 > make & make install 5.启动并指定配置文件 > src/redis-server re

  • Docker微服务的ETCD集群搭建教程详解

    目录 etcd的特性 Etcd构建自身高可用集群主要有三种形式 本次搭建的基础环境 1.将服务器挨个添加进集群 2.将服务器统一添加进集群 etcd api接口 服务注册与发现 etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现.etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性.Raft是一个来自Stanford的新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的

  • linux服务器中搭建redis6.0.7集群

    目录 一.安装redis 源码安装: 二.编译安装 三.启动Redis 四.配置主从 五.redis-sentinel---哨兵模式 六.redis cluster集群搭建 环境准备 安装redis 并配置redis-cluster 七.redis cluster 向客户端扩展 一.安装redis 源码安装: 1.下载源码包: wget http://download.redis.io/releases/redis-6.0.7.tar.gz 2.解压到指定目录下: tar xf redis-6.

  • Linux(Centos7)下redis5集群搭建和使用说明详解

    1.简要说明 2018年十月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为 使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低.关于集群的更新可以在 Redis5 的版本说明中看到,如下: The cluster manager was ported from Ruby (redis-trib.rb) to C code inside redis-cli. check `redis-cli --cluster h

  • docker实现redis集群搭建的方法步骤

    目录 一.创建redis docker基础镜像 二.制作redis节点镜像 三.运行redis集群 引用: 摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Redis的分布式解决方案,它解决了redis单机中心化的问题,分布式数据库--首要解决把整个数据集按照分区规则映射到多个节点的问题. 这边就需要知道分区规则--哈希分区规则.Redis Clus

随机推荐