我的编程空间,编程开发者的网络收藏夹
学习永远不晚

redis cluster单机伪分布式搭

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

redis cluster单机伪分布式搭

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

演示环境

[root@localhost ~]# 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/class="lazy" data-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)
  • 验证,查看进程
    [root@localhost 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}'`  
  • 再次查看进程
    [root@localhost 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各个实例中生成的文件即可再次按步骤启动集群

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

redis cluster单机伪分布式搭

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis cluster单机伪分布式搭

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

hadoop伪分布式如何搭建

要搭建Hadoop伪分布式,需要按照以下步骤进行操作:1. 安装Java开发工具:首先,确保已在计算机上安装了Java开发工具。Hadoop需要Java的支持,因此需要先安装Java并设置JAVA_HOME环境变量。2. 下载Hadoop安
2023-09-21

ubuntu怎么搭建伪分布式环境

今天小编给大家分享一下ubuntu怎么搭建伪分布式环境的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、准备工作安装包链接:
2023-06-27

hadoop cdh2.6.0-5.7.0伪分布式版本怎么搭建

本篇内容主要讲解“hadoop cdh2.6.0-5.7.0伪分布式版本怎么搭建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“hadoop cdh2.6.0-5.7.0伪分布式版本怎么搭建”吧!
2023-06-02

windows怎么搭建Redis分布式集群

要搭建Redis分布式集群,您可以按照以下步骤进行操作:1. 下载Redis的稳定版本,并解压到不同的目录,例如:redis1、redis2、redis3。2. 分别进入redis1、redis2、redis3目录,并分别编辑redis.c
2023-09-11

单机redis环境下,如何优雅地用Redis实现分布式锁

#Lua解锁操作if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("del",KEYS[1]) else return 0 end
单机redis环境下,如何优雅地用Redis实现分布式锁
2015-03-09

redis主从全分布集群(单机模拟)

全分布式redis集群搭建:单节点多实例   1. 准备:redis-3.0.4.tar.gz  redis-3.3.0.gem      2 redis-cluster目录下解压redis 3.0 :           #  tar xf redis.
redis主从全分布集群(单机模拟)
2021-04-24

Dubbo+zookeeper最简单的分布式怎么搭建

这篇文章主要介绍“Dubbo+zookeeper最简单的分布式怎么搭建”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Dubbo+zookeeper最简单的分布式怎么搭建”文章能帮助大家解决问题。Du
2023-06-29

三分钟快速搭建分布式高可用的Redis集群

Redis Cluster是Redis在3.0版本正式推出的专用集群方案,有效地解决了Redis分布式方面的需求,让我们一起快速搭建出分布式高可用的Redis集群吧! 这里的Redis集群指的是Redis Cluster,它是Redis在3.0版
三分钟快速搭建分布式高可用的Redis集群
2020-11-06

signalR+redis分布式聊天服务器是如何搭建

signalR+redis分布式聊天服务器是如何搭建,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最近在搞一个直播项目需要聊天服务器,之前是以小打小闹来做的,并没有想太多就只有
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录