CentOS下Redis集群模式安装(3.0.4) 2016-01-21 22:30

安装

环境规划

集群模式安装。3个Redis主节点,3个Redis从节点。在3个物理节点上安装。每个节点上,启动两个Redis实例。由Redis集群自动仲裁决定哪三个实例为主节点,哪三个实例为从节点。

三台物理节点的hostname分别为:data01,data02,data03。

安装目录为: /opt/redis/

安装步骤(第一个物理节点)

首先在第一台物理节点上安装:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
cd /opt
mkdir redis
cd redis
wget http://download.redis.io/releases/redis-3.0.4.tar.gz
tar -xzvf redis-3.0.4.tar.gz
mv redis-3.0.4 redis-src-3.0.4
cd redis-src-3.0.4
make PREFIX=/opt/redis
make PREFIX=/opt/redis install
# 将集群工具复制到/opt/redis/bin下
cp /opt/redis/redis-src-3.0.4/src/redis-trib.rb /opt/redis/bin/
# 创建数据配置目录
mkdir -p /opt/redis/{conf,data,logs}
# 准备配置文件
# 实例1配置文件
cp /opt/redis/redis-src-3.0.4/redis.conf /opt/redis/conf/redis-6380.conf
# 实例2配置文件
cp /opt/redis/redis-src-3.0.4/redis.conf /opt/redis/conf/redis-6381.conf

准备配置文件(第一个物理节点)

两个实例的配置如下。第二个实例把所有的6380改为6381即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
daemonize  yes
pidfile /opt/redis/data/redis-6380.pid
port 6380
# 这里需要根据每个物理节点的IP地址做更改
bind data01
unixsocket /opt/redis/data/redis-6380.sock
unixsocketperm 700
timeout 300
loglevel verbose
logfile /opt/redis/logs/redis-6380.log
databases 16
dbfilename dump-6380.rdb
dir /opt/redis/data/

#aof持久化
appendonly yes
appendfilename appendonly-6380.aof
appendfsync everysec
no-appendfsync-on-rewrite yes  
auto-aof-rewrite-percentage 80-100
auto-aof-rewrite-min-size 64mb  
lua-time-limit 5000

#集群配置
cluster-enabled yes
cluster-config-file /opt/redis/data/nodes-6380.conf
cluster-node-timeout 5000

安装其他物理节点

按上述方法,在其他两个物理节点上安装、配置redis。

需要注意,配置文件中"bind"参数的值需要根据实际的IP地址更改

scp -r /opt/redis/ data02:/opt/
scp -r /opt/redis/ data03:/opt/
bind data02
bind data03

安装ruby

由于通过redis-trib.rb工具构建Redis Cluster,需要rudy环境. 三个物理节点都需要执行如下命令安装:

yum -y install zlib ruby rubygems
# 安装ruby的redis库
gem install redis

启动

在data01上启动两个实例:

/opt/redis/bin/redis-server /opt/redis/conf/redis-6380.conf
/opt/redis/bin/redis-server /opt/redis/conf/redis-6381.conf

在data02上启动两个实例:

/opt/redis/bin/redis-server /opt/redis/conf/redis-6380.conf
/opt/redis/bin/redis-server /opt/redis/conf/redis-6381.conf

在data03上启动两个实例:

/opt/redis/bin/redis-server /opt/redis/conf/redis-6380.conf
/opt/redis/bin/redis-server /opt/redis/conf/redis-6381.conf

各物理节点通过ps命令可以看到在运行的redis server进程:

[root@data03 ~]# ps -ef | grep redis | grep -v grep
root      4036     1  0 22:28 ?        00:00:00 /opt/redis/bin/redis-server data03:6381 [cluster]
root      4040     1  0 22:28 ?        00:00:00 /opt/redis/bin/redis-server data03:6380 [cluster]
[root@data03 ~]#

集群配置

/opt/redis/bin/redis-trib.rb create --replicas 1 192.168.1.11:6380 192.168.1.11:6381 192.168.1.12:6380 192.168.1.12:6381 192.168.1.13:6380 192.168.1.13:6381

注意:创建集群时,其中的参数不能使用主机名,而需要使用IP地址

注意:如果通过redis-trib.rb创建集群失败。在修复错误后,需要做如下操作,再重新创建,才能创建成功:删除所有物理节点的redis-**.conf中定义的cluster-config-file 所在的文件删除.再重新启动各个redis-server实例。

rm -rf /opt/redis/data/notes-6380.conf
rm -rf /opt/redis/data/notes-6381.conf

使用

使用客户端可通过连接任意一个实例来连接集群:

./redis-cli -c -h data01 -p 6380

在data01:6380实例上set一个key,在另一个实例上可以马上查看到结果:

./redis-cli -c -h data01 -p 6380
set myname cheyo
./redis-cli -c -h data02 -p 6381
get myname
cheyo

使用客户端连接任意一个实例,查看整个集群,各个节点的状态。

./redis-cli -c -h data01 -p 6380  cluster nodes
8f56c34e9eb6f46d3cb5250e9d703007c53e242b 192.168.1.11:6380 master - 0 1453388162923 1 connected 10923-16383
285f15ad9be71fee7e70e5bd170015a725326d7d 192.168.1.12:6381 slave 841ccf852afb043b248a5bbf176020e4ed0c4395 0 1453388163927 5 connected
09ce38042482e9232f5c934cbd8548f336f74c51 192.168.1.13:6381 slave a9ae809feb599000dfd1d170a701a9951a8ce47a 0 1453388162423 6 connected
841ccf852afb043b248a5bbf176020e4ed0c4395 192.168.1.13:6380 master - 0 1453388162923 5 connected 0-5460
a9ae809feb599000dfd1d170a701a9951a8ce47a 192.168.1.12:6380 master - 0 1453388163927 3 connected 5461-10922
13b549d857d787398eed0bfd6d24def23967ddc2 192.168.1.11:6381 myself,slave 8f56c34e9eb6f46d3cb5250e9d703007c53e242b 0 0 2 connected

日常维护

  • 启动集群

在data01、data02、data03上分别执行如下命令:

/opt/redis/bin/redis-server /opt/redis/conf/redis-6380.conf
/opt/redis/bin/redis-server /opt/redis/conf/redis-6381.conf
  • 停止集群

在data01、data02、data03上分别执行如下命令:

ps -ef | grep redis-server
然后杀掉各个redis-server进程

参考文档

>

  1. Redis 3.0集群搭建测试
Tags: #Redis    Post on Linux