云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 7系统中搭建Redis集群

在CentOS 7系统中搭建Redis集群

2018-09-01 11:38:00作者:linux人稿源:时空路由器

以下为你整理Redis 集群的搭建过程,安装环境是CentOS 7系统、Ruby、Redis。建议先阅读Redis Sentinel集群部署一文。

 

Ruby

redis-trib 是 Redis 官方推出的管理 Redis 集群的工具,使用 Ruby 实现。如果是编译最新版的 Redis,需要相应版本的 Ruby 环境。

版本兼容的情况下,直接通过 yum 安装:

yum install ruby

版本不兼容的情况下,可通过 RVM 工具安装。

# 安装依赖

yum install gcc-c++ patch readline readline-devel zlib zlib-devel \

 libyaml-devel libffi-devel openssl-devel make \

 bzip2 autoconf automake libtool bison iconv-devel sqlite-devel \

# 导入 GPG

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

# 安装 RVM

curl -sSL https://get.rvm.io | bash -s stable

# 加载 RVM 环境

source /etc/profile.d/rvm.sh

rvm reload

# 验证依赖

rvm requirements run

# 安装 Ruby

rvm install 2.3.3

# 设置默认版本

rvm use 2.3.5 --default

# 验证当前版本

ruby --version

# ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux]

 

Redis

yum install redis redis-trib

 

Ruby 与 Redis 接口

gem install redis

 

搭建集群

1.创建集群的目录 redis-cluster,然后在其里面分别创建 6 个目录:

mkdir -p /data/redis-cluster/9001/

...

mkdir -p /data/redis-cluster/9006/

2.将 /etc/redis.conf 文件复制到每个新建的目录里面:

cp /etc/redis.conf /data/redis-cluster/9001/

...

cp /etc/redis.conf /data/redis-cluster/9006/

3.修改每一个复制的 redis.conf 配置里面的参数

# 后台运行

daemonize yes

# 端口 (900* 表示端口号一一对应)

port 900*

# 绑定 IP,只接受当前 IP,如果要接受全部 IP 则配置为 0.0.0.0

bind 192.168.1.83

# 指定数据文件存放位置,对应每一个新建的目录下

dir /data/redis-cluster/900*/

# 启动集群模式

cluster-enabled yes

# 集群配置文件,自动创建(900* 表示端口号一一对应)

cluster-config-file node-900*.conf

# 集群超时时间

cluster-node-timeout 5000

# 开启 aof 持久化模式

appendonly yes

# 每次有写操作的时候都同步

appendfsync always

4.启动 6 个 Redis 实例

redis-server /data/redis-cluster/9001/redis.conf

...

redis-server /data/redis-cluster/9006/redis.conf

5.将 6 个 Redis 实例加入到集群

redis-trib create --replicas 1 192.168.1.83:9001 192.168.1.83:9002 192.168.1.83:9003 192.168.1.83:9004 192.168.1.83:9005 192.168.1.83:9006

 

创建集群成功

>>> Creating cluster

>>> Performing hash slots allocation on 6 nodes...

Using 3 masters:

192.168.1.83:9001

192.168.1.83:9002

192.168.1.83:9003

Adding replica 192.168.1.83:9004 to 192.168.1.83:9001

Adding replica 192.168.1.83:9005 to 192.168.1.83:9002

Adding replica 192.168.1.83:9006 to 192.168.1.83:9003

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.1.83:9001)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

注:如果出现 ERR Slot 16011 is already busy 错误,则是由于上一次配置集群失败留下的配置信息导致的。只要删除每个节点目录里的 node-900*.conf 文件删除并重新启动 redis-server 即可。

 

连接任意一台客户端进行验证,并查看集群信息、节点信息

redis-cli -c -h 192.168.1.83 -p 9001

192.168.1.83:9001> CLUSTER INFO

cluster_state:ok

cluster_slots_assigned:16384

cluster_slots_ok:16384

cluster_slots_pfail:0

cluster_slots_fail:0

cluster_known_nodes:6

cluster_size:3

cluster_current_epoch:6

cluster_my_epoch:1

cluster_stats_messages_sent:17000

cluster_stats_messages_received:17000

192.168.1.83:9001> CLUSTER NODES

cf427dffcc0355bde3720ac7119cbff2eac45633 192.168.1.83:9002 master - 0 1528270078637 2 connected 5461-10922

31feb2be2955c12a29052232c8334c542581a30f 192.168.1.83:9003 master - 0 1528270079651 3 connected 10923-16383

c01c9dabfcbd39e8c760a258a2ccb39b322a1970 192.168.1.83:9001 myself,master - 0 0 1 connected 0-5460

08034c8a4d995b002ce559b275606ffffe896a0b 192.168.1.83:9004 slave c01c9dabfcbd39e8c760a258a2ccb39b322a1970 0 1528270079143 4 connected

c513bf1ca862a4bdaaa3ea8d95679950d6ae8e26 192.168.1.83:9006 slave 31feb2be2955c12a29052232c8334c542581a30f 0 1528270078233 6 connected

0cae84633230a7d033888c9adf0c8c4487f71938 192.168.1.83:9005 slave cf427dffcc0355bde3720ac7119cbff2eac45633 0 1528270078637 5 connected

 

相关主题

如何在Ubuntu 18.04上从源代码安装Redis

精选文章
热门文章