redis cluster单机伪分布式搭建--- 3主3从3哨兵集群

redis cluster单机伪分布式搭建--- 3主3从3哨兵集群

最近公司引进微服务框架,之前的一台redis的预存60G已经无法满足现在的260G业务需要,经过一番考虑搭建了这套集群 . 为了方便我就用一台服务器演示,生产环境中不建议这么做(没啥用),只为记录一下过程,至于精细化的配置需要在生产中自行研究

演示环境

[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)  

redis服务部署过程

  • 我下载的是redis-4.0.14.tar.gz版本的包
  • 解压安装
    tar -zxvf redis-4.0.14.tar.gz
    make install
  • 启动服务
    ./redis-server
  • 验证,启动客户端测试
    ./redis-cli
    127.0.0.1:6379> set ab b
    OK
    127.0.0.1:6379> get ab
    "b"
    127.0.0.1:6379> keys *
    "ab"
    "foo"  
  • 关闭redis服务
    ./redis-cli shutdown
  • 设置redis后台启动,在/usr/local/bin目录下
    cp /usr/local/redis/redis-4.0.8/redis.conf ./
    修改redis.conf这个配置文件,找到 daemonize no 这一行,将 no 改成 yes 保存
    然后启动redis时携带配置文件,./redis-server redis.conf
  • 在/usr/local/bin目录下修改好redis.conf配置(主要是设置后台启动、bind、密码、保护模式等)后
    mkdir /etc/redis
    cp /usr/local/bin/redis.conf /etc/redis/6379.conf
  • 将redis自带的启动脚本复制到/etc/init.d目录下,命名为redisd(通常都以d结尾表示是后台自启动服务)
    cp /usr/local/redis/redis-4.0.8/utils/redis_init_script /etc/init.d/redisd
  • 设置为开机自启动 chkconfig redisd on
    如果报错redisd 不支持 chkconfig,在/etc/init.d/redisd中增加如下片段,即可再设置开机自启动
    #!/bin/sh
    #chkconfig:   2345 90 10
    #description:  Redis is a persistent key-value database
  • chkconfig redisd on 成功之后即可以使用启动脚本来启动redis

    伪分布式集群的搭建

    搭建一个最小的集群需要6台机器(由节点投票机制决定至少需要3台主节点,另外为了高可用每个主节点至少要备一个从节点,所以总共需要6个节点。这里6个节点全部设在一台机上,通过端口号来分别。实现伪分布式。)

  • 在/usr/local/目录下创建文件夹redisCluster,并在redisCluster目录下创建6个文件夹
    mkdir /usr/local/redisCluster
    mkdir /usr/local/redisCluster/redis0{1,2,3,4,5,6}
  • 复制单机单实例下可正常启动redis情况下的 /usr/local/bin 目录下的所有文件分别到上面创建的6个文件夹中
    cp /usr/local/bin/* /usr/local/redisCluster/redis01/
    cp /usr/local/bin/* /usr/local/redisCluster/redis02/
    cp /usr/local/bin/* /usr/local/redisCluster/redis03/
    cp /usr/local/bin/* /usr/local/redisCluster/redis04/
    cp /usr/local/bin/* /usr/local/redisCluster/redis05/
    cp /usr/local/bin/* /usr/local/redisCluster/redis06/
  • 再对每个实例里面的redis.conf进行修改(这里修改其中一份,然后其他5份进行复制之后修改下端口号即可)
    vi /usr/local/redisCluster/redis01/redis.conf
    第1处: port 6379              ????————> 值 改成 7001
    第2处: daemonize no           ????————> 值 改成 yes
    第3处: pidfile /var/run/redis_6379.pid    ????————> 值 改成 ./redis_7001.pid
    第4处: logfile ""                 ????————> 值 改成 "./logs/redis_7001.log"
    第5处: bind 127.0.0.1             ????————> 值 改成 本机IP(如我这里是192.168.25.129)
    第6处: protected-mode yes             ????————> 值 改成 no
    第7处: # cluster-enabled yes      ????————> 去掉注释
    第8处: # cluster-config-file nodes-6379.conf????————> 去掉注释,并把数字改成对应端口号,如这里是7001
    第9处: # cluster-node-timeout 15000   ????????????————> 去掉注释
    第10处:  appendonly no            ????————> 值 改成 yes
  • 将上面编辑号保存的/usr/local/redisCluster/redis01/目录下的redis.conf文件重命名为7001.conf,然后复制5份分别放到redis02、redis03、redis04、redis05、redis06文件夹下面(可删除掉原文件夹中的redis.conf文件),然后再对每个文件夹下的.conf文件重命名为对应端口号.conf,接着编辑里面的内容,将之前修改为7001的全部修改成对应端口号保存即可
  • 将ruby脚本拷贝到redisCluster目录下
    cp /usr/local/redis/redis-4.0.8/src/redis-trib.rb /usr/local/redisCluster/
  • 创建redis集群启动、停止的脚本以及ruby创建集群的脚本并授权
    touch /usr/local/redisCluster/startCluster.sh
    touch /usr/local/redisCluster/shutdownCluster.sh
    touch /usr/local/redisCluster/createCluster.sh
    chmod 777 /usr/local/redisCluster/*.sh

    startcluster.sh 内容如下:

    /usr/local/rediscluster/redis01/redis-server /usr/local/rediscluster/redis01/7001.conf
    /usr/local/rediscluster/redis02/redis-server /usr/local/rediscluster/redis02/7002.conf
    /usr/local/rediscluster/redis03/redis-server /usr/local/rediscluster/redis03/7003.conf
    /usr/local/rediscluster/redis04/redis-server /usr/local/rediscluster/redis04/7004.conf
    /usr/local/rediscluster/redis05/redis-server /usr/local/rediscluster/redis05/7005.conf
    /usr/local/rediscluster/redis06/redis-server /usr/local/rediscluster/redis06/7006.conf 

    shutdowncluster.sh 内容如下:

    /usr/local/rediscluster/redis01/redis-cli -c -h 10.11.1.103 -p 7001 shutdown
    /usr/local/rediscluster/redis02/redis-cli -c -h 10.11.1.103 -p 7002 shutdown
    /usr/local/rediscluster/redis03/redis-cli -c -h 10.11.1.103 -p 7003 shutdown
    /usr/local/rediscluster/redis04/redis-cli -c -h 10.11.1.103 -p 7004 shutdown
    /usr/local/rediscluster/redis05/redis-cli -c -h 10.11.1.103 -p 7005 shutdown
    /usr/local/rediscluster/redis06/redis-cli -c -h 10.11.1.103 -p 7006 shutdown 

    createcluster.sh 内容如下:
    ruby redis-trib.rb create --replicas 1 10.11.1.103:7001 10.11.1.103:7002 10.11.1.103:7003 10.11.1.103:7004 10.11.1.103:7005 10.11.1.103:7006

  • 用刚刚创建的脚本启动6个实例,再用ruby脚本创建集群
    cd /usr/local/redisCluster/
    ./startCluster.sh
    ./createcluster.sh(输入yes)
  • 验证,查看进程
    [[email protected] rediscluster]# ps -ef |  grep redis|grep -v grep
    root     23716     1  0 Aug08 ?        00:10:55 /usr/local/rediscluster/redis01/redis-server *:7001 [cluster]
    root     23721     1  0 Aug08 ?        00:10:53 /usr/local/rediscluster/redis02/redis-server *:7002 [cluster]
    root     23723     1  0 Aug08 ?        00:10:51 /usr/local/rediscluster/redis03/redis-server *:7003 [cluster]
    root     23731     1  0 Aug08 ?        00:13:37 /usr/local/rediscluster/redis04/redis-server *:7004 [cluster]
    root     23736     1  0 Aug08 ?        00:10:55 /usr/local/rediscluster/redis05/redis-server *:7005 [cluster]
    root     23741     1  0 Aug08 ?        00:08:59 /usr/local/rediscluster/redis06/redis-server *:7006 [cluster]  
  • 集群就搭建成功了。登录任意一个节点客户端验证(-c 表示以集群方式登录),也可以用redis客户端工具RedisDesktopManager来可视化地管理redis数据库。
    cd /usr/local/redisCluster/redis01/
    ./redis-cli -h 10.11.1.103 -p 7001 -c
    10.11.1.103:7001> set aaaa b
    OK
    10.11.1.103:7002> get aaaa
    -> Redirected to slot [1953] located at 10.11.1.103:7001
    "b"
    10.11.1.103:7001> cluster info
    cluster_state:ok
    cluster_slots_assigned:16384
    cluster_slots_ok:16384
    cluster_slots_pfail:0
    cluster_slots_fail:0
    cluster_known_nodes:6
    cluster_size:3
    cluster_current_epoch:6
    cluster_my_epoch:1
    cluster_stats_messages_ping_sent:367555
    cluster_stats_messages_pong_sent:342015
    cluster_stats_messages_publish_sent:903835
    cluster_stats_messages_sent:1613405
    cluster_stats_messages_ping_received:342015
    cluster_stats_messages_pong_received:367550
    cluster_stats_messages_publish_received:1084495
    cluster_stats_messages_received:1794060
    10.11.1.103:7001>  
  • 在redis01 02 03 里配置哨兵,这里只配置了redis01的剩余的按照这个自行配置即可,需要注意的是监视的名称不可重复(已标出)
    sentinel.conf 配置如下:
    protected-mode no
    port 27001
    sentinel deny-scripts-reconfig yes
    sentinel monitor **mymaster1** 10.11.1.103 7001 2
    sentinel down-after-milliseconds **mymaster1** 10000
    logfile "/var/log/sentinel1.log"
    dir "/usr/local/rediscluster/redis01"
    sentinel failover-timeout **mymaster1** 15000
    sentinel config-epoch **mymaster1** 0
    sentinel leader-epoch **mymaster1** 0
    sentinel known-slave **mymaster1 10.11.1.103 7004**
    sentinel current-epoch 0  
  • 在rediscluster目录下面创建哨兵启动和关闭的脚本
    startsentinel.sh 的内容如下
    /usr/local/rediscluster/redis01/redis-sentinel /usr/local/rediscluster/redis01/sentinel.conf &
    /usr/local/rediscluster/redis02/redis-sentinel /usr/local/rediscluster/redis02/sentinel.conf &
    /usr/local/rediscluster/redis03/redis-sentinel /usr/local/rediscluster/redis03/sentinel.conf &  

    stopsentinel.sh 脚本的内容如下:

    kill -9 `ps -ef |  grep sentinel| grep -v grep|awk ‘{print $2}‘`  
  • 再次查看进程
    [[email protected] rediscluster]# ps -ef |  grep redis|grep -v grep
    root     23716     1  0 Aug08 ?        00:10:55 /usr/local/rediscluster/redis01/redis-server *:7001 [cluster]
    root     23721     1  0 Aug08 ?        00:10:53 /usr/local/rediscluster/redis02/redis-server *:7002 [cluster]
    root     23723     1  0 Aug08 ?        00:10:51 /usr/local/rediscluster/redis03/redis-server *:7003 [cluster]
    root     23731     1  0 Aug08 ?        00:13:37 /usr/local/rediscluster/redis04/redis-server *:7004 [cluster]
    root     23736     1  0 Aug08 ?        00:10:55 /usr/local/rediscluster/redis05/redis-server *:7005 [cluster]
    root     23741     1  0 Aug08 ?        00:08:59 /usr/local/rediscluster/redis06/redis-server *:7006 [cluster]
    root     23924     1  0 Aug08 ?        00:09:55 /usr/local/rediscluster/redis01/redis-sentinel *:27001 [sentinel]
    root     23925     1  0 Aug08 ?        00:09:38 /usr/local/rediscluster/redis02/redis-sentinel *:27002 [sentinel]
    root     23926     1  0 Aug08 ?        00:10:22 /usr/local/rediscluster/redis03/redis-sentinel *:27003 [sentinel] 
  • 这样就完成搭建,以下是需要联网安装的软件
    yum -y install gcc ???????????????????## make install 命令需要此环境
    yum -y intall ruby????????????????????## 安装ruby(此时安装的可能使低版本的)
    curl -L get.rvm.io | bash -s stable   ## 安装rvm
    source /usr/local/rvm/scripts/rvm     ## 使安装的rvm立即生效
    rvm install 2.4.1                 ## 通过rvm来安装ruby高级版本
    gem install redis                     ## 通过ruby的工具包gem来安装redis接口  
  • 需要注意的是,在关闭redis集群之后,再次重复步骤启动集群时会报错,此时只需要删除redis各个实例中生成的文件即可再次按步骤启动集群

原文地址:https://blog.51cto.com/13805636/2428946

时间: 2024-08-14 22:25:46

redis cluster单机伪分布式搭建--- 3主3从3哨兵集群的相关文章

hadoop2.2.0伪分布式搭建

一.准备linux环境 1.更改VMware适配器设置 由于是在单机环境下进行学习的,因此选择适配器模式是host-only模式,如果想要联网,可以选择桥接模式,配置的方式差不多. 点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.85.0 子网掩码:255.255.255.0 -> apply -> ok 回到windows --> 打开网络

转载:Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

原文 http://www.powerxing.com/install-hadoop/ 当开始着手实践 Hadoop 时,安装 Hadoop 往往会成为新手的一道门槛.尽管安装其实很简单,书上有写到,官方网站也有 Hadoop 安装配置教程,但由于对 Linux 环境不熟悉,书上跟官网上简略的安装步骤新手往往 Hold 不住.加上网上不少教程也甚是坑,导致新手折腾老几天愣是没装好,很是打击学习热情. 本教程适合于原生 Hadoop 2,包括 Hadoop 2.6.0, Hadoop 2.7.1

Dockerfile完成Hadoop2.6的伪分布式搭建

在 <Docker中搭建Hadoop-2.6单机伪分布式集群>中在容器中操作来搭建伪分布式的Hadoop集群,这一节中将主要通过Dokcerfile 来完成这项工作. 1 获取一个简单的Docker系统镜像,并建立一个容器. 1.1 这里我选择下载CentOS镜像 docker pull centos 1.2 通过docker tag命令将下载的CentOS镜像名称换成centos,并删除老标签 docker tag docker.io/centos centosdocker rmr dock

Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

参见:http://www.powerxing.com/install-hadoop/ 完全拷贝至上面网址 环境 本教程使用 Ubuntu 14.04 64位 作为系统环境(Ubuntu 12.04 也行,32位.64位均可),请自行安装系统. 如果用的是 RedHat/CentOS 系统,请查看相应的CentOS安装Hadoop教程_单机伪分布式配置. 本教程基于原生 Hadoop 2,在 Hadoop 2.6.0 (stable) 版本下验证通过,可适合任何 Hadoop 2.x.y 版本,

Hadoop:Hadoop单机伪分布式的安装和配置

http://blog.csdn.net/pipisorry/article/details/51623195 因为lz的linux系统已经安装好了很多开发环境,可能下面的步骤有遗漏. 之前是在docker中配置的hadoop单机伪分布式[Hadoop:Hadoop单机伪分布式的安装和配置 ],并且在docker只有root用户,所有没有权限问题存在. 这里直接在linux下配置,主要是为了能用netbeans ide调试hadoop程序,并且使用的用户就是开机时登录的用户pika. 本教程配置

Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0

Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0 环境 本教程使用 CentOS 6.4 32位 作为系统环境,请自行安装系统.如果用的是 Ubuntu 系统,请查看相应的 Ubuntu安装Hadoop教程. 本教程基于原生 Hadoop 2,在 Hadoop 2.6.0 (stable) 版本下验证通过,可适合任何 Hadoop 2.x.y 版本,例如 Hadoop 2.7.1, Hadoop 2.4.1等. Hadoop版本 Hadoop 有两个主要版本,

windows下hadoop的单机伪分布式部署(3)

下面介绍myeclipse与hadoop的集成. 我用的myeclipse版本是8.5. 1.安装hadoop开发插件 在hadoop1.2.1版本的安装包contrib/目录下,已经不再提供hadoop-eclipse-pligin-1.2.1.jar; 而是提供了源代码文件,需要我们自行重新编译成jar包文件:这里方便,大家可以从这里下载: hadoop-eclipse-plugin-1.2.1.jar.pdf 由于博客上传文件的类型限制,故添加了pdf后缀,下载之后重命名,去掉".pdf&

windows下hadoop的单机伪分布式部署(1)

hadoop的运行环境应该是在linux环境.如果想在windows环境下安装和运行hadoop,一般有两种方式:一种是VM的方式linux操作系统,这样可以实现全linux环境的hadoop运行:另一种方式安装cygwin模拟linux环境,该方法相对比较简单方便. 本文采取cywin的方式.下面将介绍下cygwin的安装与配置: (1)cygwin的安装 下载cygwin安装文件:http://cygwin.com; 我用的是64位版:操作系统为win7: 下载的setup文件实际上只是一个

Hadoop YARN 安装-单机伪分布式环境

本文是根据Hadoop官网安装教程写的Hadoop YARN在单机伪分布式环境下的安装报告,仅供参考. 1. 安装环境如下: 操作系统:Ubuntu14.04 Hadoop版本:hadoop-2.5.0 Java版本:openjdk-1.7.0_55 2. 下载Hadoop-2.5.0,下载地址 http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.5.0/hadoop-2.5.0.tar.gz 本文的$HADOOP_HOME为:/home/