Redis集群搭建

如有雷同,敬请告知

环境

192.168.0.11
192.168.0.12
192.168.0.13
每台服务器1主1从,共3主3从
相关安装包存储路径:/root/svr/

一、下载

wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar xvf redis-3.2.9.tar.gz
cd redis-3.2.9

二、安装(可参照redis笔记)

make install PREFIX=/root/svr/redis-3.2.9 安装

三、配置

此处有个配置文件

cd /usr/local/redis-3.2.9
创建集群配置文件夹:mkdir cluster-conf
cd cluster-conf
创建集群端口文件夹:mkdir 7001 7002(放两个文件夹,对应不同的redis)
复制配置文件:cp /root/svr/redis-3.2.9/redis.conf ./
Redis的log及持久化文件建议存储到磁盘空间较大的目录,本次存储路径:/root/svr/redis-cluster/
(尽量与redis-3.2.9分开,因为这是需要持久化的,防止误删)

修改配置文件:vi redis.conf

参数描述
port 7001#端口号
logfile “/root/svr/redis-3.2.9/cluster-conf/7001/redis.log”#指定了记录日志的文件。
dir /root/svr/redis-cluster/7001/ #事先创建好#数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
cluster-enabled yes#是否开启集群
cluster-config-file nodes.conf##集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
cluster-config-file nodes.conf##集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件并不需要手动配置,这个配置文件有Redis生成并更新,每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突
cluster-node-timeout 5000#节点互连超时的阀值。集群节点超时毫秒数
appendonly yes#默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
bind 0.0.0.0

复制redis.conf至7002并修改端口及存储路径

参数描述
port 7002
dir /root/svr/redis-cluster/7002/ #事先创建好

scp其他服务器(在redis-3.2.9父目录,将文件拷贝到其他服务器)
scp -r redis-3.2.9/ root@192.168.0.13:/root/svr/

四、启动

/root/svr/redis-3.2.9/bin/redis-server /root/svr/redis-3.2.9/cluster-conf/7001/redis.conf &
/root/svr/redis-3.2.9/bin/redis-server /root/svr/redis-3.2.9/cluster-conf/7002/redis.conf &

五、创建集群

./redis-trib.rb create --replicas 1 192.168.0.11:7001 192.168.0.12:7001 192.168.0.13:7001 192.168.0.11:7002 192.168.0.12:7002 192.168.0.13:7002
以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。
命令的意义如下:
1、给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。
2、选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点(百分比 选举master按先后顺序)。
3、之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。
成功:
在这里插入图片描述
在这里插入图片描述

含义如下:
节点ID
IP:端口
标志: master, slave, myself, fail
如果是个从节点, 这里是它的主节点的NODE ID
集群最近一次向节点发送 PING 命令之后, 过去了多长时间还没接到回复。.
节点最近一次返回 PONG 回复的时间。
本节点的网络连接情况
节点目前包含的槽:例如 127.0.0.1:7001 目前包含号码为 5960 至 10921 的哈希槽(master)。

redis-trib.rb 详解
redis-trib.rb是redis作者用ruby完成的是对redis cluster管理工具,集成在redis的源码src目录下。
(对于redis cluster的管理工具有不少,这个其实不太好用,用来练习还是可以的)

名称作用
call在集群全部节点上执行命令
set-timeout设置集群节点间心跳连接的超时时间
del-node从集群中删除节点
reshard在线迁移slot
check检查集群
import将外部redis数据导入集群
add-node将新节点加入集群
create创建集群
info查看集群信息
fix修复集群
rebalance平衡集群节点slot数量

增加节点:
./redis-trib.rb add-node ip:port ip:port
第一个参数是新节点的地址,第二个参数是任意一个已经存在的节点的IP和端口.

移除节点:
redis-trib del-node ip:port <node-id>
第一个参数是任意一个节点的地址,第二个节点是你想要移除的节点地址
改变一个从节点的主节点cluster replicate master-node-id

六、命令

在redis-3.2.9/src下
./redis-cli -c -p 7001 (进入7001的redis)
(安装过程不需要执行):
//增加
./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
//从节点(masterid 和被加的节点)
./redis-trib.rb add-node --slave masterid 192.168.0.11:7002

//移除
./redis-trib del-node 127.0.0.1:7000 <node-id>
关闭服务:./redis-cli -h 192.168.0.11 -p 7001 shutdown
删除:rm -rf /root/svr/redis-cluster/7001/*

问题:

一、在执行./redis-trib.rb create报
/usr/bin/env: ruby: No such file or directory

解决:yum install ruby

二、在执行./redis-trib.rb create报
./redis-trib.rb:24:in `require’: no such file to load – rubygems (LoadError)
from ./redis-trib.rb:24

解决:yum install rubygems

三、在执行./redis-trib.rb create报
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require': no such file to load -- redis (LoadError) from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:inrequire’

解决:gem install redis

四、在执行gem install redis报
在这里插入图片描述

centos默认支持ruby到2.0.0,可gem安装redis需要最低2.2.2
解决:先安装rvm,再把ruby版本提升至2.3.3
1、按照curl
sudo yum install curl
2、安装RVM
curl -L get.rvm.io | bash -s stable
在这里插入图片描述

在这里插入图片描述
需要再执行一下,不知道什么原因
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import
在这里插入图片描述
再执行
curl -L get.rvm.io | bash -s stable

3、source /usr/local/rvm/scripts/rvm

4、查看rvm库中已知的ruby版本
rvm list known
5、安装一个ruby版本
rvm install 2.3.3
6、使用一个ruby版本
rvm use 2.3.3
7、设置默认版本
rvm remove 2.0.0
8、卸载一个已知版本
ruby --version
9、再安装redis就可以了
gem install redis

三、如果telnet 192.168.0.xx 7001
如果telnet不通,但是ps -ef|grep redis可以看到服务或者本地客户端可以连接,远程客户端连接不了。这个时候就要修改redis.conf参数了
vim 7001(2)/redis.conf
注释bind或者改为bind 0.0.0.0
在这里插入图片描述
关掉受保护模式
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值