资讯专栏INFORMATION COLUMN

Redis集群搭建

EdwardUp / 2887人阅读

摘要:集群搭建教程一概述之后的版本支持集群。启动所有的节点解释表示自动为每个节点分配一个节点防火墙一定要开放监听的端口,否则会创建失败在运行过程中会提示输入提示创建完毕之后会提示运行集群初步搭建成功

Redis集群搭建教程 一、概述

Redis3.0之后的版本支持集群。
1.1 Redis cluster现状

节点自动发现

slave->master选举,集群容错

Hot resharding:在线分片

集群管理,cluster xxx

给予配置(nodes-port.conf)的集群管理

ASK转向/MOVED转向机制

二、redis cluster安装

服务器:

192.168.200.140

192.168.200.141

192.168.200.117

1.下载安装包

- `wget http://download.redis.io/releases/redis-3.2.1.tar.gz`
- 或者是在官网下载tar包,然后上传
- `tar -zxvf /redis-3.2.1.tar.gz

2.因为redis是用c实现的,所有要进行编译

make && make install
相当于:
- make
- make install

创建节点

192.168.200.140

7001

7002

7003

192.168.200.141

7004

7005

7006

192.168.200.117

7007

7008

7009

这个节点就相当于端口号,其实这三台服务器上的节点都可以是7001,7002,7003或者其他,但是为了方便记忆,我就这样排序了。

创建节点(当前位置在redis-3.2.1)

mkdir redis-cluster
mkdir redis7001 redis7002 redis7003
然后将redis.conf拷贝到各个节点:
cp /redis.conf ../redis7001
cp /redis.conf ../redis7002
cp /redis.conf ../redis7003

文件结构是这样的:

之后的两台服务器也是相同的模式。

然后就是对节点的配置:

daemonize    yes                          //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7002,7003
port  7000                                //端口7000,7002,7003
cluster-enabled  yes                      //开启集群  把注释#去掉
cluster-config-file  nodes_7000.conf      //集群的配置  配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  5000                //请求超时  设置5秒够了
appendonly  yes                           //aof日志开启  有需要就开启,它会每次写操作都记录一条日志
bind 192.168.200.140 绑定ip

注意需要这里注意的是,bind需要绑定当前服务器的IP,否则的话在集群通信的时候会出现:[ERR] Sorry, can"t connect to node 192.168.200.140:7001

4、启动节点

注意:redis编译完成后主要的命令在src目录下

我们可以拷贝出来在redis主目录:

cp src/redis-server 
./redis-server ../redis7001/redis.conf
./redis-server ../redis7001/redis.conf
./redis-server ../redis7001/redis.conf

5、服务命令

./redis-server redis.conf  #启动redis节点
./redis-cli -h ip -p port shutdown #终止服务
ps -ef | grep redis   #查看是否启动成功
netstat -tnlp | grep redis #可以看到redis监听端口

我们可以写个脚本批量处理启动节点和关闭:

cd /redis-3.2.1
vim startall.sh #启动脚本
./redis-server ../redis7001/redis.conf
./redis-server ../redis7002/redis.conf
./redis-server ../redis7003/redis.conf
chmod +x startall.sh #变成可执行脚本
vim startall.sh  #关闭脚本
./redis-cli -h 192.168.200.140 -p 7001 shutdown
./redis-cli -h 192.168.200.140 -p 7002 shutdown
./redis-cli -h 192.168.200.140 -p 7003 shutdown
chmod +x shutdown.sh
 三、创建集群

之前redis节点已经准备好了,但是要将redis串联起来就得需要redis的一个工具:redis-trib.rb,这个工具也在src目录下。

所以我们需要安装ruby环境:

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

在用gem命令安装redis接口,gem是ruby的一个工具包

gem install redis 比较慢

安装完成之后运行一下redis-trib.rb命令:

/usr/local/redis-3.2.1/src/redis-trib.rb
   Usage: redis-trib   
   reshard        host:port
                  --to 
                  --yes
                  --slots 
                  --from 
  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 
                  --slave
  del-node        host:port node_id
  fix            host:port
  import          host:port
                  --from 
  help            (show this help)
  create          host1:port1 ... hostN:portN
                  --replicas 
For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.

出现这些数据就说明ruby环境是可靠的。

启动所有的节点

./redis-trib.rb  create  --replicas  1  192.168.200.140:7001 192.168.200.140:7002  192.168.200.140:7003 192.168.200.141:7004 192.168.200.141:7005 192.168.200.141:7006 192.168.200.117:7007 192.168.200.117:7008 192.168.200.117:7009 

解释:

--replicas 1 表示自动为每个master节点分配一个slave节点

防火墙一定要开放监听的端口,否则会创建失败

在运行过程中会提示:

Can I set the above configuration? (type "yes" to accept): yes    //输入yes

提示 Waiting for the cluster to join..........

创建完毕之后会提示:

[shopinlog@redhat6-140 redis-3.2.1]$ ./startall.sh 
[shopinlog@redhat6-140 redis-3.2.1]$ ./redis-trib.rb  create  --replicas  1  192.168.200.140:7001 192.168.200.140:7002  192.168.200.140:7003 192.168.200.141:7004 192.168.200.141:7005 192.168.200.141:7006 192.168.200.117:7007 192.168.200.117:7008 192.168.200.117:7009 
>>> Creating cluster
>>> Performing hash slots allocation on 9 nodes...
Using 4 masters:
192.168.200.140:7001
192.168.200.141:7004
192.168.200.117:7007
192.168.200.140:7002
Adding replica 192.168.200.141:7005 to 192.168.200.140:7001
Adding replica 192.168.200.117:7008 to 192.168.200.141:7004
Adding replica 192.168.200.140:7003 to 192.168.200.117:7007
Adding replica 192.168.200.141:7006 to 192.168.200.140:7002
Adding replica 192.168.200.117:7009 to 192.168.200.140:7001
M: d72e8fd938a3da231bd41b951c8077e98a112d20 192.168.200.140:7001
   slots:0-4095 (4096 slots) master
M: a2b4d9eb9cf78f6db188a4ae24894f86612a9686 192.168.200.140:7002
   slots:12288-16383 (4096 slots) master
S: c655c00c573012a66ff093fd709a68efda42a7ab 192.168.200.140:7003
   replicates f00562a53d0283b27a47d4eff5abfca26472ac85
M: c2b43c1643f7dc4a0d8decd936b2c97033719654 192.168.200.141:7004
   slots:4096-8191 (4096 slots) master
S: 34c6a1631b26a963a7980c657a4aedf9f5def54f 192.168.200.141:7005
   replicates d72e8fd938a3da231bd41b951c8077e98a112d20
S: 0910feef4580f7527198c8efc9dd2d6c5eda47e3 192.168.200.141:7006
   replicates a2b4d9eb9cf78f6db188a4ae24894f86612a9686
M: f00562a53d0283b27a47d4eff5abfca26472ac85 192.168.200.117:7007
   slots:8192-12287 (4096 slots) master
S: 79ffed0ef0685434aea6649acc4ffffdefc8418c08 192.168.200.117:7008
   replicates c2b43c1643f7dc4a0d8decd936b2c97033719654
S: 40e2ba3e5533d925d00d94c1ae8c4d84c24a17d6 192.168.200.117:7009
   replicates d72e8fd938a3da231bd41b951c8077e98a112d20
Can I set the above configuration? (type "yes" to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 192.168.200.140:7001)
M: d72e8fd938a3da231bd41b951c8077e98a112d20 192.168.200.140:7001
   slots:0-4095 (4096 slots) master
M: a2b4d9eb9cf78f6db188a4ae24894f86612a9686 192.168.200.140:7002
   slots:12288-16383 (4096 slots) master
M: c655c00c573012a66ff093fd709a68efda42a7ab 192.168.200.140:7003
   slots: (0 slots) master
   replicates f00562a53d0283b27a47d4eff5abfca26472ac85
M: c2b43c1643f7dc4a0d8decd936b2c97033719654 192.168.200.141:7004
   slots:4096-8191 (4096 slots) master
M: 34c6a1631b26a963a7980c657a4aedf9f5def54f 192.168.200.141:7005
   slots: (0 slots) master
   replicates d72e8fd938a3da231bd41b951c8077e98a112d20
M: 0910feef4580f7527198c8efc9dd2d6c5eda47e3 192.168.200.141:7006
   slots: (0 slots) master
   replicates a2b4d9eb9cf78f6db188a4ae24894f86612a9686
M: f00562a53d0283b27a47d4eff5abfca26472ac85 192.168.200.117:7007
   slots:8192-12287 (4096 slots) master
M: 79ffed0ef0685434aea6649acc4ffffdefc8418c08 192.168.200.117:7008
   slots: (0 slots) master
   replicates c2b43c1643f7dc4a0d8decd936b2c97033719654
M: 40e2ba3e5533d925d00d94c1ae8c4d84c24a17d6 192.168.200.117:7009
   slots: (0 slots) master
   replicates d72e8fd938a3da231bd41b951c8077e98a112d20
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

运行./redis-trib.rb check 192.168.200.140:7001

集群初步搭建成功

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/36244.html

相关文章

  • 搭建Redis集群

    摘要:我们在做网站时有些静态资源不应该进行持久化,因为将该类静态资源放在数据库在系统高并发时容易造成宕机事故的发生,所以我们考虑使用缓存机制将这些静态资源放置于缓存中,本次我将手把手带领大家搭建集群。集群至少需要台服务器。第三步使用脚本搭建集群。 我们在做网站时有些静态资源不应该进行持久化,因为将该类静态资源放在数据库在系统高并发时容易造成宕机事故的发生,所以我们考虑使用缓存机制将这些静态资...

    lanffy 评论0 收藏0
  • 搭建Redis集群

    摘要:我们在做网站时有些静态资源不应该进行持久化,因为将该类静态资源放在数据库在系统高并发时容易造成宕机事故的发生,所以我们考虑使用缓存机制将这些静态资源放置于缓存中,本次我将手把手带领大家搭建集群。集群至少需要台服务器。第三步使用脚本搭建集群。 我们在做网站时有些静态资源不应该进行持久化,因为将该类静态资源放在数据库在系统高并发时容易造成宕机事故的发生,所以我们考虑使用缓存机制将这些静态资...

    MSchumi 评论0 收藏0
  • Redis Cluster 集群搭建

    摘要:任何一条主从线下的服务全部故障,则导致集群不可用。没有分配哈希槽的话表示就没有存储数据的能力。错误帮助如果过程中出现槽错误分别登录和执行为添加从节点部署进入目录执行八移除集群节点删除从节点,因为没有分配哈希槽,所以直接删除。 【背景】 2年前在本地电脑上搭建过redis集群。但苦于创业公司服务器资源有限(穷),并没有应用到生产环境。近期换了个工作环境,有资源条件了准备开始搭建使用。虽然...

    levy9527 评论0 收藏0
  • redis学习-第三节-集群搭建

    摘要:查看版本升级最新版本安装接口,成功安装,成功集群搭建有了执行环境,可以开始将之前的个实例组建成集群了。表示为集群的节点创建个副本。默认分配了个,当我们一个时,会用算法来取模得到所属的,然后将这个分到哈希槽区间的节点上,具体算法就是。 redis-集群搭建 Time : 20181019,通过这篇文章掌握 centos7 下redis的集群搭建 通过一台服务器进行Redis集群搭建,方...

    cnio 评论0 收藏0
  • 一文轻松搞懂redis集群原理及搭建与使用

    摘要:使用操作输出内容欢迎关注微信公众号面试通关手册关闭连接,每次使用完毕后关闭连接。测试集群版创建一个对象。 今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助。笔主这里使用的是Centos7.如果你碰到任何问题都可以来问我,留言或者加我微信:bwcx9393. 关于Linux的一...

    jiekechoo 评论0 收藏0
  • 一文轻松搞懂redis集群原理及搭建与使用

    摘要:使用操作输出内容欢迎关注微信公众号面试通关手册关闭连接,每次使用完毕后关闭连接。测试集群版创建一个对象。 今天早上由于zookeeper和redis集群不在同一虚拟机导致出了点很小错误(人为),所以这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助。笔主这里使用的是Centos7.如果你碰到任何问题都可以来问我,留言或者加我微信:bwcx9393. 关于Linux的一...

    widuu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<