redis-5.0.0基于Redis官方工具的集群搭建(排坑指南,从安装Redis开始)

一、前言

搭建Redis集群的教程很多,介绍的也很全面,但是大多数 还是使用Ruby脚本的版本,安装Ruby本身也不是一件简单的事情,redis-5.0.0之后已经将 redis-trib.rb 脚本的功能全部集成到 redis-cli之中了,本章基于redis-cli 的 --cluster 来搭建集群,然后还会指出一些细节问题(坑),提醒大家注意,希望可以有所帮助。

二、Ubuntu下的Redis安装

mkdir  redis # 创建一个目录
cd redis #进入创建的目录
wget http://download.redis.io/releases/redis-5.0.0.tar.gz #下载新版本Redis
tar -zxvf redis-5.0.0.tar.gz  #解压之
cd redis-5.0.0 #进入解压之后的目录
make && make install  #编译安装

注意:make && make install 此处经常报错 大概由于 gcc和make工具的版本问题等等,笔者有一个编译安装完成之后的版本,解决不了的话可以留言邮箱,笔者看到后会发送压缩包,直接拷贝到linux下 解压就可以直接使用了。

百度网盘地址:链接:https://pan.baidu.com/s/1-hxqjSb8Zj9lx852EQVHSw 密码:clzt

三、准备配置文件,创建多个 Redis节点

Redis要求 一主一从的搭配至少要 六个节点,形成三对主从,我们需要修改配置文件,然后分别用不同的Redis配置文件启动Redis即可。

mkdir  cluster  # 用于存放 redis.conf .rdb .aof nodes-xxxx.conf
cd cluster  
mkdir 7000  #端口为 7000的配置文件目录 后续还会有 7001等
cp  redis.conf 7000  #伪命令 将 redis根目录下的配置文件 拷贝一份到 新建的 7000目录下
nano  redis.conf  #开始修改配置文件

配置文件主要修改以下部分

daemonize    yes  # redis后台运行
pidfile  /var/run/redis_7000.pid  #需要修改为 reids_{port}.pid 的形式
port  7000  #端口
cluster-enabled  yes #开启集群
cluster-config-file  nodes_7000.conf #集群的配置文件 nodes_{port}.conf的形式
cluster-node-timeout  5000 #超时时间 5s够了
appendonly  yes #开启AOF日志

注意:还需要修改如下基目录 将各个Redis节点的 .rdb .aof nodes-xxxx.conf 文件分开存放,不然大家都默认目录会造成错乱

dir ./  #默认当前根目录
dir ./cluster/7000 #将基目录修改为 具体的子目录

注意:多个Redis节点应该位于同一个局域网之中,需要修改 IP绑定

bind 127.0.0.1  #默认绑定本地地址,导致其它地方不可远程访问 
bind 172.17.10.89  #修改为局域网中的IP地址,其他节点可通过局域网IP访问

同上,依次创建 7001-7005,将 7000的地方修改掉

四、启动各个Redis节点

在 redis-5.0.0目录下执行命令

redis-server cluster/7000/redis.conf 

依次启动各个Redis节点

使用如下命令查看是否启动

ps -ef | grep redis

root     23973     1  0 10:04 ?        00:00:06 redis-server 172.17.10.89:7001 [cluster]
root     23988     1  0 10:04 ?        00:00:06 redis-server 172.17.10.89:7002 [cluster]
root     24007     1  0 10:04 ?        00:00:07 redis-server 172.17.10.89:7003 [cluster]
root     24024     1  0 10:04 ?        00:00:07 redis-server 172.17.10.89:7004 [cluster]
root     24037     1  0 10:04 ?        00:00:07 redis-server 172.17.10.89:7005 [cluster]
root     24062     1  0 10:04 ?        00:00:07 redis-server 172.17.10.89:7006 [cluster]
root     25030     1  0 10:08 ?        00:00:06 redis-server 172.17.10.89:7007 [cluster]

五、使用 reids-cli 搭建 Redis集群

redis-cli --cluster create 172.17.10.89:7000 172.17.10.89:7001 172.17.10.89:7002 172.17.10.89:7003 172.17.10.89:7004  172.17.10.89:7005  --cluster-replicas 1

redis-cli --cluster help #查看操作集群的命令帮助

--cluster-replicas 1  命令的意思: 一主一从配置,六个节点就是 三主三从

使用如下命令创建集群的状态:

redis-cli --cluster check 172.17.10.89:7000  #填写任意节点即可 会带出所有的

六、新增节点

按照 三 中同样的方式新增一个 Redis节点 使用如下命令将其加入集群

redis-cli --cluster add-node  {新节点IP}:{新节点端口} {任意集群节点IP}:{对应端口} #添加为主节点
--cluster-slave  --cluster-master-id {对应的主节点ID} # 在上一条命令后面加上此行命令将新节点添加为 对应主节点的从节点

若是添加 从节点则立即可用了,添加的是 主节点的话,还需要 reshard 分配 slots

redis-cli --cluster check 172.17.10.89:7000 # 此命令查看 node id
输出:
S: 0762bce8fcb066a56719372456ca9cc253580c49 172.17.10.89:7000
   slots: (0 slots) slave
   replicates b6052ed88ff21523b6b054ef089d599b730cbc54
S: 55a5f8631302f36ca5ec2434b44e9d7f9185444e 172.17.10.89:7006
   slots: (0 slots) slave
   replicates bb19633369c2545aa3afec59564b04cef8c8c47b
S: 08d868857a5d1a22bdbd86d29b1b5f7867b3accd 172.17.10.89:7004
   slots: (0 slots) slave
   replicates b6052ed88ff21523b6b054ef089d599b730cbc54
S: 55e9beb850e4bb56a2238419788479373d22a87d 172.17.10.89:7003
   slots: (0 slots) slave
   replicates cd45a9b31de0606d968d3a6f66f43da2fae874f2
M: b6052ed88ff21523b6b054ef089d599b730cbc54 172.17.10.89:7005
   slots:[0-5460] (5461 slots) master
   2 additional replica(s)
M: bb19633369c2545aa3afec59564b04cef8c8c47b 172.17.10.89:7002
   slots:[10923-16383] (5461 slots) master
   2 additional replica(s)
S: 9b4bc41c00b89f38e25374165aa34b8b0f778697 172.17.10.89:7007
   slots: (0 slots) slave
   replicates bb19633369c2545aa3afec59564b04cef8c8c47b
M: cd45a9b31de0606d968d3a6f66f43da2fae874f2 172.17.10.89:7001
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.


0762bce8fcb066a56719372456ca9cc253580c49  # node id

下面reshard
redis-cli --cluster reshard {新主节点IP}:{新主节点PORT}
之后按照提示操作即可

七、测试集群

redis-cli -c -h {IP} -p {PORT}  # -c 表示连接集群节点

进行 读写操作时会根据 key计算出的slot,重新定位到 拥有该slot的节点,执行对应的命令。

只有 Master节点拥有 slot,读写都在 Master 节点进行

redis-cli -c -h 172.17.10.89 -p 7000
172.17.10.89:7000> set hi reids
-> Redirected to slot [16140] located at 172.17.10.89:7002
OK
172.17.10.89:7002> get hi
"reids"

 

你可能感兴趣的:(redis-pool)