redis集群搭建(完整详细-避免踩坑)

一、安装环境

用两台虚拟机模拟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目录

扫描二维码关注公众号,回复: 5820024 查看本文章
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个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了

猜你喜欢

转载自blog.csdn.net/qq_42714869/article/details/88530231
今日推荐