测试环境 两台centos7
1.下载解压redis,
两台机器 192.168.160.154 (简称154)和 192.168.160.135 (简称135)
在主机192.168.160.154上进行
cd /opt
mkdir redis
cd redis
tar xvf redis-4.0.9.tar.gz
cd redis-4.0.9/
make
此时redis已经准备完毕
2.单机多redis进程配置
由于redis-cluster属于master-slave模式,master至少3节点,slave至少3节点,最小的集群配置需要redis6个进程。
每台机器上起3个redis进程
进入135
cd /opt
mkdir redis
然后进入下载redis安装包的机器,这里是154服务器
进入154
cd /opt/redis/redis-4.0.9/src
mkdir 7000
mkdir 7001
mkdir 7002
cp ../redis.conf 7000/
cp ../redis.conf 7001/
cp ../redis.conf 7002/
分别将7000 7001和7002目录下的redis.conf按照如下方面更改:
1.绑定ip更改:bind 192.168.160.154
2.更改端口: port 7000 #(更改成文件夹对应的端口)
3.更改进程运行模式为后台模式:daemonize yes
4.进程id文件更改为:pidfile /var/run/redis_7000.pid #(redis_xxx.pid xxx为文件夹7000对应的数字)
5.日志文件更改:logfile "/opt/redis/redis-4.0.9/src/7000/7000.log" #(7000为对应的文件夹数字)
6.更改db文件:dbfilename dump7000.rdb #(7000为对应的文件夹数字)
7.工作目录更改:dir /opt/redis/redis-4.0.9/src/7000 #(7000为对应的文件夹数字)
8.更改AOF:appendfilename "appendonly7000.aof" #(7000为对应的文件夹数字)
9.打开集群模式:cluster-enabled yes
10.配置集群模式的配置文件:cluster-config-file nodes.conf
11.配置节点通信的超时时间:cluster-node-timeout 5000 #(5秒)
12.打开AOF:appendonly yes
将7001和7002下的redis.conf配置完成后可以将配置好的redis拷贝到135上
cd /opt/redis/
scp -r redis-4.0.9 root@192.168.160.135:/opt/redis/
输入密码
更改各个目录下的135机器上的 /opt/redis/redis-4.0.9/src下,7000、7001和7002中的配置文件,将绑定IP更改成192.168.160.135
此时两台机器上的redis运行环境是相同的。
在154和135两台机器都启动redis 7000 7001 7002
cd /opt/redis/redis-4.0.9/src
./redis-server 7000/redis.conf
./redis-server 7001/redis.conf
./redis-server 7002/redis.conf
通过如下命令检测是否启动
ps -ef|grep redis
返回如下为正常
root 7664 1 0 11:23 ? 00:00:22 ./redis-server 192.168.160.154:7000 [cluster]
root 7669 1 0 11:23 ? 00:00:22 ./redis-server 192.168.160.154:7001 [cluster]
root 7674 1 0 11:23 ? 00:00:24 ./redis-server 192.168.160.154:7002 [cluster]
root 10013 3819 0 14:28 pts/2 00:00:00 grep --color=auto redis
3.集群配置
以下操作在154(或135)上进行:
用过yum 安装ruby 和 ruby-gem
yum install ruby,rubygems -y
更改gem源:
gem sources --remove
https://rubygems.org/
gem sources -a
https://ruby.taobao.org/
安装 gem redis (4.0.9版本可能找不到,替代方案为--version 4.0.0 )
gem install redis --version 4.0.9
此时可能报错:redis requires Ruby version >= 2.2.2
解决方案:
gpg --keyserver
hkp://keys.gnupg.net--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
安装rvm
\curl -sSL
https://get.rvm.io| bash -s stable
安装完成后需要生效rvm命令
source ~/.bashrc
source ~/.bash_profile
source /etc/profile.d/rvm.sh
验证rvm 安装
rvm -v
返回如下为正常 rvm 1.29.3 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [
https://rvm.io]
rvm list known
返回如下: [ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.7]
[ruby-]2.3[.4]
[ruby-]2.4[.1]
ruby-head
安装新的ruby版本
rvm install 2.4.1 --disable-binary
开机使用2.4.1版本
rvm use 2.4.1 --default
gem install redis --version 4.0.0 (由于4.0.9没有找到,使用4.0.0替代)
执行redis集群配置
./redis-trib.rb create --replicas 1 192.168.160.154:7000 192.168.160.154:7001 192.168.160.154:7002 192.168.160.135:7000 192.168.160.135:7001 192.168.160.135:7002
返回如下为正常:
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.160.154:7000
192.168.160.135:7000
192.168.160.154:7001
Adding replica 192.168.160.135:7002 to 192.168.160.154:7000
Adding replica 192.168.160.154:7002 to 192.168.160.135:7000
Adding replica 192.168.160.135:7001 to 192.168.160.154:7001
M: 2de28fc36edcde201184854285623bf47899384b 192.168.160.154:7000
slots:0-5460 (5461 slots) master
M: d50d2d34b6578e27dc757dad988120f0e4b0ca65 192.168.160.154:7001
slots:10923-16383 (5461 slots) master
S: 5e53bd9cda64a60227f26c2a32538fbe9f6f8957 192.168.160.154:7002
replicates a8f54e8f000c09ddfdb0677fc8ad08d90351af5e
M: a8f54e8f000c09ddfdb0677fc8ad08d90351af5e 192.168.160.135:7000
slots:5461-10922 (5462 slots) master
S: e78d212d9e85e8e5212c93c26e47f867b198054b 192.168.160.135:7001
replicates d50d2d34b6578e27dc757dad988120f0e4b0ca65
S: 4a0d3f0e33b103bd92e0e7a7fdce97f76c3e0ebe 192.168.160.135:7002
replicates 2de28fc36edcde201184854285623bf47899384b
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.160.154:7000)
M: 2de28fc36edcde201184854285623bf47899384b 192.168.160.154:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: e78d212d9e85e8e5212c93c26e47f867b198054b 192.168.160.135:7001
slots: (0 slots) slave
replicates d50d2d34b6578e27dc757dad988120f0e4b0ca65
M: a8f54e8f000c09ddfdb0677fc8ad08d90351af5e 192.168.160.135:7000
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: 4a0d3f0e33b103bd92e0e7a7fdce97f76c3e0ebe 192.168.160.135:7002
slots: (0 slots) slave
replicates 2de28fc36edcde201184854285623bf47899384b
M: d50d2d34b6578e27dc757dad988120f0e4b0ca65 192.168.160.154:7001
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: 5e53bd9cda64a60227f26c2a32538fbe9f6f8957 192.168.160.154:7002
slots: (0 slots) slave
replicates a8f54e8f000c09ddfdb0677fc8ad08d90351af5e
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
至此集群配置完毕!