docker实验--redis集群搭建

dswang 2019-10-25 原文

docker实验–redis集群搭建

背景介绍:

  我经常在做一些小项目的时候,采用了Redis来做缓存,但是都是基于单节点的,一旦redis挂了,整个项目就挂了。于是乎,想到了多节点集群的方式来使用,就开始折腾着怎么去搭建这个集群。在网上参考了一些大佬的做法以后,发现使用的ruby脚本已经过时了,所以就基于他们的方法做了一定的更新,如果有误,欢迎批评指正。

 

环境准备:

centOS7,Docker,redis-cli

 

要点:

a.Redis集群至少需要3个节点(笔者认为最好是部署奇数个节点),因为投票容错机制要求超过一半的节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。具体宕机机制参考https://www.cnblogs.com/dadonggg/p/8628735.html

 

b.要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。在本次实验中,笔者将使用docker来启动多个redis实例。

 

具体步骤:

1.安装docker。

yum update -y && yum install docker

2.启动docker服务。

service docker start

3.拉取redis镜像。

docker pull redis

4.创建redis-cluster目录

cd /home 
mkdir redis-cluster

5.下载并安装redis-cli(此过程如果报错,请检查是不是和ruby有关,尝试安装ruby。yum install ruby -y)

1 cd redis-cluster
2 curl -O http://download.redis.io/redis-stable.tar.gz
3 tar xvzf redis-stable.tar.gz
4 cd redis-stable
5 make
6 cp src/redis-cli /usr/bin/

6.创建并启动redis容器(因为存在大量重复的操作,采取脚本创建)。

a.创建模板文件redis-cluster.tmpl,把以下内容粘贴到里面 把ip地址换成你自己主机的ip

touch redis-cluster.tmpl
1 port ${PORT}
2 protected-mode no
3 cluster-enabled yes
4 cluster-config-file nodes.conf
5 cluster-node-timeout 5000
6 cluster-announce-ip 主机IP地址
7 cluster-announce-port ${PORT}
8 cluster-announce-bus-port 1${PORT}
9 appendonly yes

 b.批量脚本ex01.sh,ex02.sh(方便后续重复搭建,也可以直接运行)。(第二个脚本里,如果是阿里云,要添加安全组,除了7000-7005端口,还要开放17000-17005端口,我使用的是腾讯云,于是就没开)。

touch ex01.sh
for port in 7000 7001 7002 7003 7004 7005
do
  echo "port=$port"
  mkdir -p ./$port/conf
  PORT=$port envsubst < ./redis-cluster.tmpl > ./$port/conf/redis.conf
  mkdir -p ./$port/data;
done
touch ex02.sh
1 do
2   docker run -d -ti -p ${port}:${port} -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf  -v /home/redis-cluster/${port}/data:/data  --restart always --name redis-${port} --net redis-net --sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf
3 done

7.所有事情准备完毕。

sh ex01.sh

 

 

 

sh ex02.sh
docker ps -a

保持所有容器都在running状态。

8.使用redis客户端把集群转起来。把ip换成自己主机真实ip.

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

 

 使用如下命令进行验证:

redis-cli –cluster  info 节点ip:端口

 

 发现slaves节点是7000 7002 7003

  至此集群搭建成功。

 

发表于
2019-10-25 12:02 阿尔AI艾尔 阅读() 评论() 编辑 收藏

 

版权声明:本文为dswang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dswang/p/11737307.html

docker实验--redis集群搭建的更多相关文章

随机推荐

  1. 阿里图标库引用简介—20200608更新

    一、阿里字体离线应用步骤:   码云demo路径:https://gitee.com/ilaozhao/usu […]...

  2. Android Studio列表用法之一:ListView图文列表显示(实例)

    前言:         ListView这个列表控件在Android中是最常用的控件之一,几乎在所有的应用程序 […]...

  3. 网站推广优化教程100条(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字) – Austin Liu\’s Fashion

    网站推广优化教程100条(完整版)下面介绍新手建站推广完美教程,各位根据自己的实际情况酌情选用: 1、准备个好 […]...

  4. 判断一个对象是不是数组的方法

    (1) typeof 无法判断 只能判断原始类型的值和函数     (2)isPrototypeOf 判断父及 […]...

  5. CF1491C Pekora and Trampoline 题解

    题目链接 ​ 比赛时只想到了 \(\mathcal O(n^3)\) 的暴力做法,官方题解是 \(\mathc […]...

  6. 白话TCP为什么需要进行三次握手

    阅读本文大概需要 2.3 分钟。 作者:雨林 https://www.cnblogs.com/yuilin 首 […]...

  7. 实现虚拟机VMware上Linux与Windows互相复制与粘贴~!

    转自: https://www.cnblogs.com/ExMan/p/9662295.html 系统环境: […]...

  8. Android高手进阶教程(七)之—-Android 中Preferences的使用!

    大家好,我们这一节讲的是Android Preferences 的学习,Preferences 在Androi […]...

展开目录

目录导航