首先介绍安装环境与版本
用两台两台虚拟机,一台机器3个节点,创建出3 master、3 salve 环境。
redis 采用 redis-3.2.4 版本。
IP分别为:120.99.158.113 , 112.42.136.189
一、redis安装过程:
1.选择下载路径,下载并解压
cd /usr/local
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz
2.编译安装
cd redis-3.2.4
make && make install
3.编译完成后,将src下的 redis-trib.rb 复制到 /usr/local/bin 目录下
cd src
cp redis-trib.rb /usr/local/bin/
二、安装完成,创建 Redis 节点
1.首先在 120.99.158.113 机器上 /usr/local/redis-3.2.4 目录下创建 redis_cluster 目录:
cd /usr/local/redis-3.2.4
mkdir redis_cluster
2.在 redis_cluster 目录下,创建名为7000、7001、7002的目录,并将 redis.conf 拷贝到这三个目录中:
cd redis_cluster
mkdir 7000 7001 7002
cp /usr/local/redis-3.2.4/redis.conf /7000
cp /usr/local/redis-3.2.4/redis.conf /7001
cp /usr/local/redis-3.2.4/redis.conf /7002
3.在第一台机器上(112.42.136.189)分别修改这三个配置文件,修改如下内容:
port 7000 //端口7000,7001,7002
bind 本机ip //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群,此处改为120.99.158.113 或 112.42.136.189
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
然后在另外一台机器上(112.42.136.189)重复以上三步,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改即可;
4.启动各个节点
第一台机器(120.99.158.113)执行:
cd /usr/local/redis/src
./redis-server /usr/local/redis-3.2.4/redisredis_cluster/7000/redis.conf //更改端口7001,7002重复执行
另外一台机器上(112.42.136.189)执行:
cd /usr/local/redis/src
./redis-server /usr/local/redis-3.2.4/redisredis_cluster/7003/redis.conf //更改端口7004,7005重复执行
5.检查 redis 启动情况
第一台机器(120.99.158.113):ps -ef | grep redis
root 17682 1 0 Jul14 ? 00:01:44./redis-server 120.99.158.113:7002 [cluster]
root 17687 1 0 Jul14 ? 00:01:11./redis-server 120.99.158.113:7000 [cluster]
root 17691 1 0 Jul14 ? 00:01:44./redis-server 120.99.158.113:7001 [cluster]
netstat -tnlp | grep redis
tcp 0 0 120.99.158.113:17000 0.0.0.0:* LISTEN 17687/./redis-serve
tcp 0 0 120.99.158.113:17001 0.0.0.0:* LISTEN 17691/./redis-serve
tcp 0 0 120.99.158.113:17002 0.0.0.0:* LISTEN 17682/./redis-serve
tcp 0 0 120.99.158.113:7000 0.0.0.0:* LISTEN 17687/./redis-serve
tcp 0 0 120.99.158.113:7001 0.0.0.0:* LISTEN 17691/./redis-serve
tcp 0 0 120.99.158.113:7002 0.0.0.0:* LISTEN 17682/./redis-serve
另一台机器(112.42.136.189):ps -ef | grep redis
root 32225 1 0 Jul14 ? 00:02:23 ./redis-server 112.42.136.189:7003 [cluster]
root 32232 1 0 Jul14 ? 00:02:25 ./redis-server 112.42.136.189:7004 [cluster]
root 32236 1 0 Jul14 ? 00:01:12 ./redis-server 112.42.136.189:7005 [cluster]
tcp 0 0 112.42.136.189:7003 0.0.0.0:* LISTEN 32225/.redis-serve
tcp 0 0 112.42.136.189:7004 0.0.0.0:* LISTEN 32232/.redis-serve
tcp 0 0 112.42.136.189:7005 0.0.0.0:* LISTEN 32236/.redis-serve
tcp 0 0 112.42.136.189:17003 0.0.0.0:* LISTEN 32225/.redis-serve
tcp 0 0 112.42.136.189:17004 0.0.0.0:* LISTEN 32232/.redis-serve
tcp 0 0 112.42.136.189:17005 0.0.0.0:* LISTEN 32236/.redis-serve
三、创建集群
1.安装redis-trib.rb执行所需组件
首先执行redis-trib.rb需要安装ruby,rubygem,以及添加gem源,直接传送:
http://www.ithao123.cn/content-2544745.html
2.执行redis-trib.rb创建集群
cd /usr/local/bin
./redis-trib.rb create --replicas 1 112.42.136.189:7003 112.42.136.189:7004 112.42.136.189:7005 120.99.158.113:7000 120.99.158.113:7001 120.99.158.113:7002
##执行结果如下
>>> Creating cluster
Connecting to node 120.99.158.113:7000: OK
Connecting to node 120.99.158.113:7001: OK
Connecting to node 120.99.158.113:7002: OK
Connecting to node 112.42.136.189:7003: OK
Connecting to node 112.42.136.189:7004: OK
Connecting to node 112.42.136.189:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
120.99.158.113:7001
112.42.136.189:7004
120.99.158.113:7000
Adding replica 112.42.136.189:7003 to 120.99.158.113:7001
Adding replica 120.99.158.113:7002 to 112.42.136.189:7004
Adding replica 112.42.136.189:7005 to 120.99.158.113:7000
M: fc65c271d01fd2151da15f08d7af14e2be8c18c2 120.99.158.113:7000
slots:0-5460 (5461 slots) master
M: 5b487aa64fee6fd2322d16a3fd1633944bab58f2 112.42.136.189:7004
slots:5461-10921 (5461 slots) master
M: 2e9be1c7a4af976d678ef26a91dda37c1623d445 120.99.158.113:7000
slots:10922-16383 (5462 slots) master
S: a8cdcf9756b2e8334c28190d8de95375551c6a8a 112.42.136.189:7003
S: e4f044404413eb1dddef513500beca1e554e760a 120.99.158.113:7002
S: 5628c2985cb8612883b921e24982409bf87d17e0 112.42.136.189:7005
Can I set the above configuration? (type 'yes' to accept): yes
一个yes就好.
3.集群验证
在第一台机器上连接集群的7001端口的节点
cd /usr/local/redis/src
./redis-cli -h 120.99.158.113 -c -p 7001 //加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。
120.99.158.113:7001> set hello world
-> Redirected to slot [866] located at 112.42.136.189:7004
OK
再在另一台机器(112.42.136.189)上查看key为hello的值
cd /usr/local/redis/src
./redis-cli -h 112.42.136.189 -c -p 7005
112.42.136.189:7005> get hello
-> Redirected to slot [866] located at 112.42.136.189:7004
"world"
说明集群已经搭建成功,并运作正常!