一、环境概况
操作系统:centos 7.2
redis版本:4.0.8
服务器配置:
单核、1g
共三台、每台运行三个实例
二、安装redis
1:安装gcc依赖
[root@localhost ~]# yum install gcc
2:下载redis
[root@localhost lib]# wget http://download.redis.io/releases/redis-4.0.8.tar.gz
3:解压
[root@localhost lib]# tar zxvf redis-4.0.8.tar.gz
4:编译安装
[root@localhost redis-4.0.8]# make && make isntall
三、创建实例并配置redis.conf文件,
1:创建实例目录结构
[root@localhost lib]# mkdir -p /evchar/data/redis/{6380,6381,6382}/{conf,db,log}
2:拷贝redis.conf至实例目录下的conf目录
[root@localhost redis-4.0.8]# cp redis.conf /evchar/data/redis/6380/conf/
[root@localhost redis-4.0.8]# cp redis.conf /evchar/data/redis/6381/conf/
[root@localhost redis-4.0.8]# cp redis.conf /evchar/data/redis/6382/conf/
3:修改配置文件redis.conf以下配置项
daemonize yes <== daemon进程运行
pidfile /evchar/data/redis/6380/redis_6380.pid <== 进程id存放文件
port 6380 <== 端口
logfile /data/redis/6380/log/redis.log <== 日志目录
dir /data/redis/6380/db/ <== db目录
bind 本机ip地址
cluster-enabled yes 开启集群
cluster-config-file nodes-6380.conf 集群节点配置文件
cluster-node-timeout 15000 节点超时时间
4:修改其他节点如上信息
5:启动节点
修改环境变量
echo 'PATH=${PATH}:/evchar/var/lib/redis-4.0.8/src' >> /etc/profile
source /etc/profile
启动节点
[root@echar redis-4.0.8]# redis-server /evchar/data/redis/6380/conf/redis.conf
四、安装ruby(只用在主节点安装)
1:安装zlib
[root@localhost redis-4.0.8]# yum install zlib zlib-devel
2:安装ruby
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
[root@localhost lib]# tar zxvf ruby-2.5.0.tar.gz
[root@localhost lib]# cd ruby-2.5.0
[root@localhost ruby-2.5.0]# ./configure --prefix=/evchar/var/lib/ruby-2.5
[root@localhost ruby-2.5.0]# make && make install
3:增加软连
[root@localhost ruby-2.5.0]# ln -s /evchar/var/lib/ruby-2.5/bin/ruby /usr/bin/ruby
[root@localhost ruby-2.5.0]# ln -s /evchar/var/lib/ruby-2.5/bin/gem /usr/bin/gem
[root@localhost ruby-2.5.0]# ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
4:安装rubygem redis依赖
[root@localhost lib]# wget http://rubygems.org/downloads/redis-3.3.0.gem
[root@localhost lib]# gem install -l redis-3.3.0.gem
Successfully installed redis-3.3.0
Parsing documentation for redis-3.3.0
Installing ri documentation for redis-3.3.0
Done installing documentation for redis after 0 seconds
1 gem installed
五、开启防火墙
[root@localhost lib]# firewall-cmd --permanent --add-port=6380/tcp
[root@localhost lib]# firewall-cmd --permanent --add-port=16380/tcp
[root@localhost lib]# firewall-cmd --permanent --add-port=16381/tcp
[root@localhost lib]# firewall-cmd --permanent --add-port=6381/tcp
[root@localhost lib]# firewall-cmd --permanent --add-port=6382/tcp
[root@localhost lib]# firewall-cmd --permanent --add-port=16382/tcp
[root@localhost lib]# firewall-cmd --reload
注意开启端口号+1000端口,该端口为集群回环端口
六、创建集群
[root@localhost lib]# redis-trib.rb create --replicas 2 192.168.0.15:6380 192.168.0.15:6381 192.168.0.15:6382 192.168.0.17:6380 192.168.0.17:6381 192.168.0.17:6382 192.168.0.18:6380 192.168.0.18:6381 192.168.0.18:6382
>>> Creating cluster
/evchar/var/lib/ruby-2.5/lib/ruby/gems/2.5.0/gems/redis-3.3.0/lib/redis/client.rb:459: warning: constant ::Fixnum is deprecated
>>> Performing hash slots allocation on 9 nodes...
Using 3 masters:
192.168.0.15:6380
192.168.0.17:6380
192.168.0.18:6380
Adding replica 192.168.0.17:6381 to 192.168.0.15:6380
Adding replica 192.168.0.18:6381 to 192.168.0.15:6380
Adding replica 192.168.0.15:6382 to 192.168.0.17:6380
Adding replica 192.168.0.18:6382 to 192.168.0.17:6380
Adding replica 192.168.0.17:6382 to 192.168.0.18:6380
Adding replica 192.168.0.15:6381 to 192.168.0.18:6380
M: a6460959d2b40ed4d53b06846b1b6d5a780cac32 192.168.0.15:6380
slots:0-5460 (5461 slots) master
S: d0df54ced472fcd4c3f28d24845b7761043e9a00 192.168.0.15:6381
replicates a65d242536f74e34e406e6b256435d1707ece5ce
S: 89734eac4eed4735adbd07ee53ec03fc6e6d18e1 192.168.0.15:6382
replicates f224cce5a2f36b1b9c86f80921216998b5781cae
M: f224cce5a2f36b1b9c86f80921216998b5781cae 192.168.0.17:6380
slots:5461-10922 (5462 slots) master
S: fe6a67f7ef2e6e542a55486627ec7a997ad80075 192.168.0.17:6381
replicates a6460959d2b40ed4d53b06846b1b6d5a780cac32
S: 7afc55e21a3d1c2d986c4866aae7acd2c872d712 192.168.0.17:6382
replicates a65d242536f74e34e406e6b256435d1707ece5ce
M: a65d242536f74e34e406e6b256435d1707ece5ce 192.168.0.18:6380
slots:10923-16383 (5461 slots) master
S: ac894efe7e66c08a9ab06839b23486b8c25a3aa3 192.168.0.18:6381
replicates a6460959d2b40ed4d53b06846b1b6d5a780cac32
S: c59077d603b427cefa6ebd55af83fac94f66ef02 192.168.0.18:6382
replicates f224cce5a2f36b1b9c86f80921216998b5781cae
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.0.15:6380)
M: a6460959d2b40ed4d53b06846b1b6d5a780cac32 192.168.0.15:6380
slots:0-5460 (5461 slots) master
2 additional replica(s)
M: a65d242536f74e34e406e6b256435d1707ece5ce 192.168.0.18:6380
slots:10923-16383 (5461 slots) master
2 additional replica(s)
S: ac894efe7e66c08a9ab06839b23486b8c25a3aa3 192.168.0.18:6381
slots: (0 slots) slave
replicates a6460959d2b40ed4d53b06846b1b6d5a780cac32
S: 7afc55e21a3d1c2d986c4866aae7acd2c872d712 192.168.0.17:6382
slots: (0 slots) slave
replicates a65d242536f74e34e406e6b256435d1707ece5ce
M: f224cce5a2f36b1b9c86f80921216998b5781cae 192.168.0.17:6380
slots:5461-10922 (5462 slots) master
2 additional replica(s)
S: c59077d603b427cefa6ebd55af83fac94f66ef02 192.168.0.18:6382
slots: (0 slots) slave
replicates f224cce5a2f36b1b9c86f80921216998b5781cae
S: fe6a67f7ef2e6e542a55486627ec7a997ad80075 192.168.0.17:6381
slots: (0 slots) slave
replicates a6460959d2b40ed4d53b06846b1b6d5a780cac32
S: 89734eac4eed4735adbd07ee53ec03fc6e6d18e1 192.168.0.15:6382
slots: (0 slots) slave
replicates f224cce5a2f36b1b9c86f80921216998b5781cae
S: d0df54ced472fcd4c3f28d24845b7761043e9a00 192.168.0.15:6381
slots: (0 slots) slave
replicates a65d242536f74e34e406e6b256435d1707ece5ce
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
至此,集群创建完成,