Linux上搭建Redis集群

本文记录redis安装到集群搭建详细过程

环境

  • Centos7
  • 3主3从方式
  • redis-3.2.12.tar.gz

搭建

安装redis

需要gcc环境来编译c,故先安装gcc

安装gcc

yum install gcc-c++

下载redis源码包上传到linux系统

解压、编译、安装

个人习惯源码包放到/usr/local/src下,在此直接解压

  • 解压后进到解压目录编译
    make
  • 指定安装目录进行安装
    make install PREFIX=/usr/local/redis
    执行命令时如下:
[root@mini2 redis]# make install PREFIX=/usr/local/redis
cd src && make install
make[1]: Entering directory `/usr/local/src/redis/src'

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
make[1]: Leaving directory `/usr/local/src/redis/src'

它建议先make test,那就先test一下,执行make test,一切就绪后在次执行之前的安装命令

启动

把原解压目录下的redis.conf文件也可以复制到安装目录/usr/local/redis

先修改配置文件支持后台启动

daemonize yes
[root@mini2 bin]# pwd
/usr/local/redis/bin
[root@mini2 bin]# ./redis-server redis.conf
[root@mini2 bin]# ./redis-cli -p 6379
127.0.0.1:6379> 

集群的搭建

一般redis集群3主3从足够。故在此搭建一个伪分布式的集群,使用6个redis实例来模拟。 且redis的集群需要一个ruby程序来创建,故先安装ruby环境

安装ruby环境

yum install ruby
yum install rubygems

/usr/local/redis创建redis-cluster文件夹及配置6个实例

在该文件夹中创建6个redis实例,即6个conf配置文件,端口号从7001~7006

扫描二维码关注公众号,回复: 2857436 查看本文章

至少需要配置的信息如下:

bind 192.168.31.202
port 7001
daemonize yes
cluster-enabled yes
cluster-config-file nodes-7001.conf  # 此处每个节点不能一样

创建集群的ruby脚本redis-trib.rb

把创建集群的ruby脚本redis-trib.rb(在redis源码解压目录下)复制到redis-cluster文件夹下

安装redis管理工具

注意:下载在页面右下角相关连接一项中

  • redis-3.2.2.gem上传至服务器进行安装,这里放到redis-cluster中
  • 安装
[root@mini2 bin]# gem install redis-3.2.2.gem
Successfully installed redis-3.2.2
Parsing documentation for redis-3.2.2
Installing ri documentation for redis-3.2.2
1 gem installed

启动所有实例

  • 这里创建一个脚本来同时启动六个,本脚本放在redis-cluster文件夹中

startall.sh

#!/bin/bash
echo 'start to setup redis7001'
../bin/redis-server redis7001.conf
echo 'start to setup redis7002'
../bin/redis-server redis7002.conf
echo 'start to setup redis7003'
../bin/redis-server redis7003.conf
echo 'start to setup redis7004'
../bin/redis-server redis7004.conf
echo 'start to setup redis7005'
../bin/redis-server redis7005.conf
echo 'start to setup redis7006'
../bin/redis-server redis7006.conf
  • 给予执行权限
chmod +777 startall.sh
  • 启动
./startall.sh

利用工具创建集群

最后本次测试所有的文件结构如下:

[root@mini2 redis]# tree --charset ASCII
.
|-- bin
|   |-- redis-3.2.2.gem
|   |-- redis-benchmark
|   |-- redis-check-aof
|   |-- redis-check-dump
|   |-- redis-check-rdb
|   |-- redis-cli
|   |-- redis.conf
|   |-- redis-sentinel -> redis-server
|   |-- redis-server
|   `-- redis-trib.rb
`-- redis-cluster
    |-- redis7001.conf
    |-- redis7002.conf
    |-- redis7003.conf
    |-- redis7004.conf
    |-- redis7005.conf
    |-- redis7006.conf
    |-- redis.conf
    |-- redis-trib.rb
    `-- startall.sh

创建集群,如下执行命令

[root@mini2 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.31.202:7001 192.168.31.202:7002 192.168.31.202:7003 192.168.31.202:7004 192.168.31.202:7005 192.168.31.202:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.31.202:7001
192.168.31.202:7002
192.168.31.202:7003
Adding replica 192.168.31.202:7004 to 192.168.31.202:7001
Adding replica 192.168.31.202:7005 to 192.168.31.202:7002
Adding replica 192.168.31.202:7006 to 192.168.31.202:7003
M: ec45c72104fcb6e848ed914339b3b96cadf6ebcf 192.168.31.202:7001
   slots:0-5460 (5461 slots) master
M: 681175bb7d8600ffe4429b524887738091e14331 192.168.31.202:7002
   slots:5461-10922 (5462 slots) master
M: 301e825acb7bffeb1fe75f03090dcbe70fa7b519 192.168.31.202:7003
   slots:10923-16383 (5461 slots) master
S: 80329ad787686dd36cd7d8b884bcdccb1e84f5d0 192.168.31.202:7004
   replicates ec45c72104fcb6e848ed914339b3b96cadf6ebcf
S: 3dacc4d2384c587ef075f2a7e72b964e2d0c1513 192.168.31.202:7005
   replicates 681175bb7d8600ffe4429b524887738091e14331
S: b174fd7355a3288d96db154179f8ff5fe4db671c 192.168.31.202:7006
   replicates 301e825acb7bffeb1fe75f03090dcbe70fa7b519
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.31.202:7001)
M: ec45c72104fcb6e848ed914339b3b96cadf6ebcf 192.168.31.202:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: 681175bb7d8600ffe4429b524887738091e14331 192.168.31.202:7002
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 301e825acb7bffeb1fe75f03090dcbe70fa7b519 192.168.31.202:7003
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 80329ad787686dd36cd7d8b884bcdccb1e84f5d0 192.168.31.202:7004
   slots: (0 slots) slave
   replicates ec45c72104fcb6e848ed914339b3b96cadf6ebcf
S: b174fd7355a3288d96db154179f8ff5fe4db671c 192.168.31.202:7006
   slots: (0 slots) slave
   replicates 301e825acb7bffeb1fe75f03090dcbe70fa7b519
S: 3dacc4d2384c587ef075f2a7e72b964e2d0c1513 192.168.31.202:7005
   slots: (0 slots) slave
   replicates 681175bb7d8600ffe4429b524887738091e14331
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

测试集群

如下执行:注意加上-c表示连接集群,否则连不上

[root@mini2 redis-cluster]# ../bin/redis-cli -h 192.168.31.202 -p 7002 -c
192.168.31.202:7002> set a 123
-> Redirected to slot [15495] located at 192.168.31.202:7003
OK
192.168.31.202:7003> get a
"123"
192.168.31.202:7003> keys *
1) "a"

以上就是完整的linux上创建redis集群的过程,仅做记录,便于日后参考

猜你喜欢

转载自blog.csdn.net/maoyuanming0806/article/details/81639544