一、安装环境
用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境
redis 采用 redis-3.2.4 版本
两台虚拟机都是CentOS ,CentOS7(IP:192.168.1.221),CentOS7(IP:192.168.1.186)
二、安装过程
1、下载并解压
cd /usr/local/laoxu_zh/redis_down/
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、将 redis-trib.rb 复制到 /usr/local/bin 目录下
cd src
cp redis-trib.rb /usr/local/bin/
4、创建 Redis 节点
首先在 192.168.1.221 机器上 /usr/local/laoxu_zh/redis_down/redis-3.2.4 目录下创建 redis_cluster 目录,
在 redis_cluster 目录下创建7000、7001、7002目录
mkdir redis_cluster
mkdir redis_cluster/7000
mkdir redis_cluster/7001
mkdir redis_cluster/7002
使用命令创建 redis.conf 配置文件,注意 vi
vi redis_cluster/7000/redis.conf
添加如下内容,保存退出
#端口 7000,7001,7002
port 7000
#默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
bind 192.168.1.221
#redis后台运行
daemonize yes
#pidfile文件对应 7000,7001,7002
pidfile /var/run/redis_7000.pid
#开启集群 把注释#去掉
cluster-enabled yes
#集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-config-file nodes_7000.conf
#请求超时 默认15秒,可自行设置
cluster-node-timeout 15000
#aof日志开启 有需要就开启,它会每次写操作都记录一条日志
appendonly yes
192.168.1.221 机器上,其他端口配置文件设置,按上面方法,依次修改
另外一台机器(192.168.1.186),重复以上三步,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改即可
5、启动各个节点,注意执行启动命令需要在redis目录下,我的位置是/usr/local/laoxu_zh/redis_down/redis-3.2.4
第一台机器上执行
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
另外一台机器上执行
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
6、检查 redis 启动情况
[root@localhost redis-3.2.4]# ps -ef | grep redis
root 42449 1 0 11:18 ? 00:00:05 redis-server 127.0.0.1:7000 [cluster]
root 42453 1 0 11:18 ? 00:00:05 redis-server 127.0.0.1:7001 [cluster]
root 69543 1 0 14:31 ? 00:00:00 redis-server 127.0.0.1:7002 [cluster]
root 69556 28187 0 14:31 pts/0 00:00:00 grep --color=auto redis
[root@localhost redis-3.2.4]# netstat -tnlp | grep redis
tcp 0 0 127.0.0.1:17000 0.0.0.0:* LISTEN 42449/redis-server
tcp 0 0 127.0.0.1:17001 0.0.0.0:* LISTEN 42453/redis-server
tcp 0 0 127.0.0.1:17002 0.0.0.0:* LISTEN 69543/redis-server
tcp 0 0 127.0.0.1:7000 0.0.0.0:* LISTEN 42449/redis-server
tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN 42453/redis-server
tcp 0 0 127.0.0.1:7002 0.0.0.0:* LISTEN 69543/redis-server
另外一台机器,不再展示
7、redis集群搭建,需要redis-trib.rb工具,这个工具依赖ruby,所以需要先安装ruby,安装命令如下
yum -y install ruby ruby-devel rubygems rpm-build
gem install redis
如果执行 gem install redis 报错 Error installing redis: redis requires Ruby version >= 2.2.2
是因为Centos7安装redis需要ruby的最低版本是2.2.2,安装2.2.2以上版本的ruby,需要安装rvm
(1)、安装rvm,执行如下命令
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable
\curl -sSL https://get.rvm.io | bash -s stable --rails
(2)、查看是否安装成功,出现如下内容,表示安装成功
[root@localhost ~]# find / -name rvm -print
/usr/local/rvm
/usr/local/rvm/src/rvm
/usr/local/rvm/src/rvm/bin/rvm
/usr/local/rvm/src/rvm/lib/rvm
/usr/local/rvm/src/rvm/scripts/rvm
/usr/local/rvm/bin/rvm
/usr/local/rvm/lib/rvm
/usr/local/rvm/scripts/rvm
(3)、加载 rvm
[root@localhost ~]# source /usr/local/rvm/scripts/rvm
(4)、查看rvm库中已知的ruby版本
[root@localhost redis_down]# rvm list known
# MRI Rubies
[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[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.5]
[ruby-]2.5[.3]
[ruby-]2.6[.0]
ruby-head
(5)、根据列出的可安装ruby 版本,我选择ruby-2.3.8
[root@localhost redis_down]# rvm install "ruby-2.3.8"
(6)、使用ruby版本
[root@localhost redis_down]# rvm use 2.3.8
(7)、查看ruby版本
[root@localhost redis_down]# ruby --version
8、创建集群
Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了
使用下面这个命令完成集群安装,3主3从 --replicas 1,6主 --replicas 0 ,此处一定要注意
redis-trib.rb create --replicas 1 192.168.1.221:7000 192.168.1.221:7001 192.168.1.221:7002 192.168.1.186:7003 192.168.1.186:7004 192.168.1.186:7005
集群安装报错如下
/usr/local/rvm/rubies/ruby-2.3.8/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- redis
(LoadError) from /usr/local/rvm/rubies/ruby-2.3.8/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /usr/local/bin/redis-trib.rb:25:in `<main>'
原因是缺少redis库,解决如下
[root@localhost redis_down]# gem install redis
再次执行集群安装命令,如下结果表示集群搭建成功,下面的截图是我执行创建 3 master 集群
9、集群验证
[root@localhost ~]# redis-cli -h 192.168.1.221 -c -p 7000
192.168.1.221:7000> set mykey hello
-> Redirected to slot [14687] located at 192.168.1.221:7002
OK
192.168.1.221:7002> get mykey
"hello"
192.168.1.221:7002> set otherkey world
-> Redirected to slot [9962] located at 192.168.1.221:7001
OK
192.168.1.221:7001> get otherkey
"world"
192.168.1.221:7001> quit
[root@localhost ~]#
在redis 7000节点设置mykey值为hello,在redis 7002节点获取到mykey的值,说明集群运作正常,搭建完成。
需要注意的是:必须要3个或以上
的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了