Redis Cluster集群配置简述

环境:

CentOS 6.7

Redis 3.0.3

3台虚拟机,IP分别是server1:192.168.1.1    server2:192.168.1.2     server3:   192.168.1.3

(因redis机器最少要有3主3从,这里就用3台虚拟机来方便区分,实在没机器的可以在1台机上开6个节点)

拿到机器后,首先把环境弄好

yum groupinstall "Development tools" -y
yuminstallwget -y

首先安装redis

cd /usr/local/src/
wget http://download.redis.io/releases/redis-3.0.3.tar.gztar -zxvf redis-3.0.3.tar.gz

解压出来后要到目录里面编译安装

cd redis-3.0.3make  && makeinstall

在这里,可能会出现如下错误:(如没有,请略过)

make[1]: Entering directory `/redis/src’
CC adlist.o
In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error “Newer version of jemalloc required”
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/redis/src’
make: *** [all] Error 2

原因是没有安装jemalloc内存分配器,可以安装jemalloc 或 直接 输入make MALLOC=libc  && make install

安装好redis后就是要创建节点了,3主3从总共6个

以server1为例

首先创建redis集群的目录

cd /usr/local
mkdir redis
cd ./redis

然后把刚才已经编译好的redis包复制过来

cp  -r  /usr/local/src/redis-3.0.3 /usr/local/redis/ && mv /usr/local/redis/redis-3.0.37000   #这里以7000 7001 端口为例,为方便管理把文件夹以端口号命名cp  -r  /usr/local/src/redis-3.0.3 /usr/local/redis/ && mv /usr/local/redis/redis-3.0.37001

此步骤分别在其余的2台机子上重复一遍,那么redis6个节点就算简历完毕。

接下来要做的就是修改各个节点的配置文件

以7000节点为例:

cd /usr/local/redis/7000vi redis.conf     #主要修改一下这几个参数
daemonize    yes                       #后台运行redis
pidfile  /var/run/redis_7000.pid    #pidfile文件对应7000
port  7000                            #监听的端口号
cluster-enabled  yes         #开启集群,这个原本有的把注释#去掉就好了
cluster-config-file  nodes.conf  #集群的配置  配置文件首次启动自动生成
cluster-node-timeout  5000      #请求超时的时间
appendonly  yes       #aof日志开启,按需开启,每次写操作都会记录成1条日志
bind  192.168.1.1     #这里要改成server的IP,不改的话后续会报错

其他节点的配置只需把pidfile对应的文件和端口号改下就好了,一般建议7000 7001 7002 这样一直写上去

当所有的节点都配置好后,就启动redis了

cd /usr/local/redis/7000
redis-server ./redis.conf        
#这里是先进到7000节点的目录再开启,因为我发现如果直接输入 redis-server /usr/local/redis/7000/redis.conf的话,自动生成的appendonly.aof  nodes.conf文件会在当前目录下,而不是在对应节点的目录下。大家可以试验一下。
启动完成后,循例检查下。
ps aux |grep redis              netstat -an |grep 7000/7001

正常情况下是可以看到7000  7001  17000 17001端口的

7000,7001是用于客户端访问,17000,17001是用于集群内部节点之间的访问的

当所有的节点都配置并启动完之后,我们要做的就是利用这些节点来创建集群

官方提供了一个专门的工具   redis-trib.rb  

配合使用redis-trib.rb还要安装ruby

yum -y install ruby ruby-devel rubygems rpm-build

装好后再用gem命令来安装redis接口,至于这个gem的话我也不大了解,

gem install redis

在3台server上都安装好后,就可以开始创建集群了

/usr/local/redis/7000/src/redis-trib.rb

运行redis-trib.rb后就可以看到redis-trib.rb的具体用法,如下:

Usage: redis-trib <command><options><arguments ...>
  reshard        host:port
                  --to <arg>
                  --yes
                  --slots <arg>
                  --from <arg>
  check          host:port
  call            host:port command arg arg .. arg
  set-timeout    host:port milliseconds
  add-node        new_host:new_port existing_host:existing_port
                  --master-id <arg>
                  --slave
  del-node        host:port node_id
  fix            host:port
  import          host:port
                  --from <arg>
  help            (show this help)
  create          host1:port1 ... hostN:portN
                  --replicas <arg>
For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

那么我们这里用的是create 新建集群

/usr/local/redis/7000/src/redis-trib.rb  create  --replicas  1  192.168.1.1:7000  192.168.1.2:7000 192.168.1.3:7000  192.168.1.1:7001  192.168.1.2:7001  192.168.1.3:7001

这里讲一下,使用iptables或者其他防火墙的话一定要把端口开放出来,否则会创建失败。

命令一定要以IP:端口形式来输入,千万别用域名。

参数 –replicas 1   是自动为每台master配置1个slave   上面有6个节点 会按规则生成3个主节点(master)3个从节点(slave)

注意:前面3个IP redis会默认他为主节点。

输入完命令后会提示

Can I set the above configuration? (type ‘yes’ to accept): 

这里输入yes 就可以了

然后就会弹出如下信息:

>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 5ca195e70a7d6d3b2756f06bfd5bb62f133ad236 127.0.0.1:7000
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: a79ab5c1558f64d37efb6ad3e775bcd32bee70fc 192.168.20.186:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: ebbc18dca8215930cf6430c39671b7660ca1de0f 192.168.20.187:7001
   slots: (0 slots) slave
   replicates 5ca195e70a7d6d3b2756f06bfd5bb62f133ad236
S: c195573125f0d0a87b0f1076dd7de392aa90a5f3 192.168.20.186:7001
   slots: (0 slots) slave
   replicates 0e590350177d69f337dc88188545dfe3c4c75742
M: 0e590350177d69f337dc88188545dfe3c4c75742 192.168.20.184:7000
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: b29210a818e15b1097422933163e92722c624ad8 192.168.20.184:7001
   slots: (0 slots) slave
   replicates a79ab5c1558f64d37efb6ad3e775bcd32bee70fc
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

这样子就可以了。至于测试的话可以从其他文章里面找到

#redis 常见集群报错处理

1.配置完所有主节点后,报” ERR Invalid node address specified”

由于redis-trib.rb 对域名或主机名支持不好,故在创建集群的时候要使用ip:port的方式

redis-trib.rb create ip1:port1 ip2:port2 ip3:port3

2.创建集群时报某个err slot 0 is already busy (redis::commanderror)

这是由于之间创建集群没有成功,需要将nodes.conf和dir里面的文件全部删除(注意不要删除了redis.conf)

3.创建集群时一直处于”Waiting for the cluster to join………………………………”的状态

这个问题原因不知,但解决方法是在redis.conf文件中把bind 127.0.0.1本地环回口改为物理接口.

4.安装ruby redis时长时间没响应

这是由于大家知道的网络原因,解决办法是改ruby源(请自行baidu)或手动安装

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/218425.html<

(0)
运维的头像运维
上一篇2025-04-13 15:36
下一篇 2025-04-13 15:37

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注