Redis学习(一)Redis集群的安装

1、下载

下载redis。官网下载3.0.0版本,之前2.几的版本不支持集群模式

下载地址:https://github.com/antirez/redis/archive/3.0.0-rc2.tar.gz

2、上传服务器,解压,编译

[hadoop@hadoop02 ~]$ tar -zxvf redis-3.0.0-rc2.tar.gz -C apps/

进入

[hadoop@hadoop02 redis-3.0.0-rc2]$ pwd
/home/hadoop/apps/redis-3.0.0-rc2

执行这个命令:

[hadoop@hadoop02 redis-3.0.0-rc2]$ make
[hadoop@hadoop02 redis-3.0.0-rc2]$ make install 

3、创建集群需要的目录

[hadoop@hadoop02 apps]$ mkdir cluster

进入 cluster 文件夹:

[hadoop@hadoop02 cluster]$ mkdir 7000
[hadoop@hadoop02 cluster]$ mkdir 7001
[hadoop@hadoop02 cluster]$ mkdir 7002
[hadoop@hadoop02 cluster]$ mkdir 7003
[hadoop@hadoop02 cluster]$ mkdir 7004
[hadoop@hadoop02 cluster]$ mkdir 7005
[hadoop@hadoop02 cluster]$ ll
total 24
drwxrwxr-x. 2 hadoop hadoop 4096 May 10 18:45 7000
drwxrwxr-x. 2 hadoop hadoop 4096 May 10 18:45 7001
drwxrwxr-x. 2 hadoop hadoop 4096 May 10 18:45 7002
drwxrwxr-x. 2 hadoop hadoop 4096 May 10 18:45 7003
drwxrwxr-x. 2 hadoop hadoop 4096 May 10 18:46 7004
drwxrwxr-x. 2 hadoop hadoop 4096 May 10 18:46 7005

4、修改配置文件redis.conf

在这个目录下:(/home/hadoop/apps/redis-3.0.0-rc2/etc)

##修改配置文件中的下面选项
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes7000.conf
cluster-node-timeout 5000
appendonly yes
[hadoop@hadoop02 etc]$ cp redis.conf /home/hadoop/apps/cluster/7000
[hadoop@hadoop02 etc]$ cp redis.conf /home/hadoop/apps/cluster/7001
[hadoop@hadoop02 etc]$ cp redis.conf /home/hadoop/apps/cluster/7002
[hadoop@hadoop02 etc]$ cp redis.conf /home/hadoop/apps/cluster/7003
[hadoop@hadoop02 etc]$ cp redis.conf /home/hadoop/apps/cluster/7004
[hadoop@hadoop02 etc]$ cp redis.conf /home/hadoop/apps/cluster/7005
[hadoop@hadoop02 etc]$

##注意:拷贝完成之后要修改7001/7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称

5、分别启动这6个redis实例

在这个文件夹下(/home/hadoop/apps/cluster/)

[hadoop@hadoop02 7000]$ redis-server redis.conf
[hadoop@hadoop02 7001]$ redis-server redis.conf
[hadoop@hadoop02 7002]$ redis-server redis.conf
[hadoop@hadoop02 7003]$ redis-server redis.conf
[hadoop@hadoop02 7004]$ redis-server redis.conf
[hadoop@hadoop02 7005]$ redis-server redis.conf

##启动之后使用命令查看redis的启动情况:

[hadoop@hadoop02 7005]$ ps -ef|grep redis

如下图显示则说明启动成功

[hadoop@hadoop02 7005]$ ps -ef|grep redis
hadoop     5958      1  0 12:45 ?        00:00:25 ./redis-server *:6379                                          
hadoop     6601      1  0 19:26 ?        00:00:00 redis-server *:7000 [cluster]
hadoop     6605      1  0 19:26 ?        00:00:00 redis-server *:7001 [cluster]
hadoop     6628      1  0 19:30 ?        00:00:00 redis-server *:7002 [cluster]
hadoop     6636      1  0 19:32 ?        00:00:00 redis-server *:7003 [cluster]
hadoop     6640      1  0 19:33 ?        00:00:00 redis-server *:7004 [cluster]
hadoop     6646      1  0 19:33 ?        00:00:00 redis-server *:7005 [cluster]
hadoop     6650   2595  0 19:33 pts/1    00:00:00 grep redis
[hadoop@hadoop02 7005]$

6、执行redis的创建集群命令创建集群

进入这个目录:(/home/hadoop/apps/redis-3.0.0-rc2/src)

1)执行这个命令:
./redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
2)执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境
[hadoop@hadoop02 src]$ ./redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
/usr/bin/env: ruby: No such file or directory
[hadoop@hadoop02 src]$
3)需要安装ruby的环境,这里推荐使用 yum install ruby 安装
[hadoop@hadoop02 src]$ yum install ruby
Loaded plugins: fastestmirror, refresh-packagekit, security
You need to be root to perform this command.
[hadoop@hadoop02 src]$

需要在root用户下安装:

[hadoop@hadoop02 src]$ sudo yum install ruby

部分日志结果:

Total                                                                                            1.5 MB/s | 2.3 MB     00:01     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : compat-readline5-5.2-17.1.el6.x86_64                                                                          1/3 
  Installing : ruby-libs-1.8.7.374-5.el6.x86_64                                                                              2/3 
  Installing : ruby-1.8.7.374-5.el6.x86_64                                                                                   3/3 
  Verifying  : compat-readline5-5.2-17.1.el6.x86_64                                                                          1/3 
  Verifying  : ruby-1.8.7.374-5.el6.x86_64                                                                                   2/3 
  Verifying  : ruby-libs-1.8.7.374-5.el6.x86_64                                                                              3/3 

Installed:
  ruby.x86_64 0:1.8.7.374-5.el6                                                                                                  

Dependency Installed:
  compat-readline5.x86_64 0:5.2-17.1.el6                            ruby-libs.x86_64 0:1.8.7.374-5.el6                           

Complete!
4)然后再执行第1步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装
[hadoop@hadoop02 src]$ ./redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
        from ./redis-trib.rb:24
[hadoop@hadoop02 src]$

在root用户下安装:

[hadoop@hadoop02 src]$ sudo yum install rubygems

部分日志结果:

---------------------------------------------------------------------------------------------------------------------------------
Total                                                                                            1.2 MB/s | 905 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : ruby-irb-1.8.7.374-5.el6.x86_64                                                                               1/3 
  Installing : ruby-rdoc-1.8.7.374-5.el6.x86_64                                                                              2/3 
  Installing : rubygems-1.3.7-5.el6.noarch                                                                                   3/3 
  Verifying  : ruby-irb-1.8.7.374-5.el6.x86_64                                                                               1/3 
  Verifying  : rubygems-1.3.7-5.el6.noarch                                                                                   2/3 
  Verifying  : ruby-rdoc-1.8.7.374-5.el6.x86_64                                                                              3/3 

Installed:
  rubygems.noarch 0:1.3.7-5.el6                                                                                                  

Dependency Installed:
  ruby-irb.x86_64 0:1.8.7.374-5.el6                              ruby-rdoc.x86_64 0:1.8.7.374-5.el6                             

Complete!
5)再次执行第1步的命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装
[hadoop@hadoop02 src]$ ./redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from ./redis-trib.rb:25
[hadoop@hadoop02 src]$ 

在root的用户下下载:

[hadoop@hadoop02 src]$ sudo gem install redis 

输出这个错误:

[hadoop@hadoop02 src]$ sudo gem install redis                       
ERROR:  Error installing redis:
        redis requires Ruby version >= 2.2.2.

需要ruby版本在 2.2.2之上。修改ruby版本。

(1)安装curl:
[hadoop@hadoop02 src]$ sudo yum install curl

部分日志结果:

(1/2): curl-7.19.7-53.el6_9.x86_64.rpm                                                                    | 197 kB     00:00     
(2/2): libcurl-7.19.7-53.el6_9.x86_64.rpm                                                                 | 169 kB     00:00     
---------------------------------------------------------------------------------------------------------------------------------
Total                                                                                            848 kB/s | 367 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating   : libcurl-7.19.7-53.el6_9.x86_64                                                                                1/4 
  Updating   : curl-7.19.7-53.el6_9.x86_64                                                                                   2/4 
  Cleanup    : curl-7.19.7-46.el6.x86_64                                                                                     3/4 
  Cleanup    : libcurl-7.19.7-46.el6.x86_64                                                                                  4/4 
  Verifying  : libcurl-7.19.7-53.el6_9.x86_64                                                                                1/4 
  Verifying  : curl-7.19.7-53.el6_9.x86_64                                                                                   2/4 
  Verifying  : curl-7.19.7-46.el6.x86_64                                                                                     3/4 
  Verifying  : libcurl-7.19.7-46.el6.x86_64                                                                                  4/4 

Updated:
  curl.x86_64 0:7.19.7-53.el6_9                                                                                                  

Dependency Updated:
  libcurl.x86_64 0:7.19.7-53.el6_9                                                                                               

Complete!
[hadoop@hadoop02 src]$

(2)安装RVM(如果source不成功,多下载几次)
[hadoop@hadoop02 ~]$ curl -L get.rvm.io | bash -s stable 

日志结果:

[hadoop@hadoop02 scripts]$ curl -L get.rvm.io | bash -s stable 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 24361  100 24361    0     0  15562      0  0:00:01  0:00:01 --:--:--  161k
Downloading https://github.com/rvm/rvm/archive/1.29.3.tar.gz
curl: (35) SSL connect error

Could not download 'https://github.com/rvm/rvm/archive/1.29.3.tar.gz'.
  curl returned status '35'.

Downloading https://bitbucket.org/mpapis/rvm/get/1.29.3.tar.gz
Downloading https://bitbucket.org/mpapis/rvm/downloads/1.29.3.tar.gz.asc
curl: (7) couldn't connect to host


Could not download 'https://bitbucket.org/mpapis/rvm/downloads/1.29.3.tar.gz.asc'.
  curl returned status '7'.

Installing RVM to /home/hadoop/.rvm/scripts/
mkdir: cannot create directory `/home/hadoop/.rvm/scripts/gemsets': File exists
mkdir: cannot create directory `/home/hadoop/.rvm/scripts/gemsets': Not a directory
/home/hadoop/.rvm/scripts/src/rvm/scripts/functions/installer: line 660: /home/hadoop/.rvm/scripts/gemsets/jruby/global.gems: Not a directory
mkdir: cannot create directory `/home/hadoop/.rvm/scripts/gemsets': Not a directory
/home/hadoop/.rvm/scripts/src/rvm/scripts/functions/installer: line 660: /home/hadoop/.rvm/scripts/gemsets/ruby/1.8.6/global.gems: Not a directory
mkdir: cannot create directory `/home/hadoop/.rvm/scripts/gemsets': Not a directory
/home/hadoop/.rvm/scripts/src/rvm/scripts/functions/installer: line 660: /home/hadoop/.rvm/scripts/gemsets/ruby/1.8.7/global.gems: Not a directory
mkdir: cannot create directory `/home/hadoop/.rvm/scripts/gemsets': Not a directory
/home/hadoop/.rvm/scripts/src/rvm/scripts/functions/installer: line 660: /home/hadoop/.rvm/scripts/gemsets/ruby/1.8.5/global.gems: Not a directory
mkdir: cannot create directory `/home/hadoop/.rvm/scripts/gemsets': File exists
/home/hadoop/.rvm/scripts/src/rvm/scripts/functions/installer: line 660: /home/hadoop/.rvm/scripts/gemsets/default.gems: Not a directory
mkdir: cannot create directory `/home/hadoop/.rvm/scripts/gemsets': File exists
/home/hadoop/.rvm/scripts/src/rvm/scripts/functions/installer: line 660: /home/hadoop/.rvm/scripts/gemsets/global.gems: Not a directory
    Adding rvm PATH line to /home/hadoop/.profile /home/hadoop/.mkshrc /home/hadoop/.bashrc /home/hadoop/.zshrc.
    RVM sourcing line found in /home/hadoop/.profile /home/hadoop/.bash_profile /home/hadoop/.zlogin.
Installation of RVM in /home/hadoop/.rvm/scripts/ is almost complete:


  * To start using RVM you need to run `source /home/hadoop/.rvm/scripts/scripts/rvm`
    in all your open shell windows, in rare cases you need to reopen all shell windows.
[hadoop@hadoop02 scripts]$
(3)source一下:
[hadoop@hadoop02 ~]$source /home/hadoop/.rvm/scripts/rvm
(4)查看rvm库中已知的ruby版本
[hadoop@hadoop02 scripts]$ rvm list known

部分日志结果:

rbx-2.3[.0]
rbx-2.4[.1]
rbx-2[.5.8]
rbx-3[.84]
rbx-head

# Opal
opal

# Minimalistic ruby implementation - ISO 30170:2012
mruby-1.0.0
mruby-1.1.0
mruby-1.2.0
mruby-1[.3.0]
mruby[-head]

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2012.02]

# Topaz
topaz

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Or Newer
macruby-0.10
macruby-0.11
macruby[-0.12]
macruby-nightly
macruby-head

# IronRuby
ironruby[-1.1.3]
ironruby-head
[hadoop@hadoop02 scripts]$
(5)安装一个ruby版本
[hadoop@hadoop02 ~]$ rvm install 2.3.3

日志结果:

[hadoop@hadoop02 ~]$ rvm install 2.3.3
Searching for binary rubies, this might take some time.
Found remote file https://rvm_io.global.ssl.fastly.net/binaries/centos/6/x86_64/ruby-2.3.3.tar.bz2
Checking requirements for centos.
Installing requirements for centos.
Installing required packages: libffi-devel, libyaml-devel........
Requirements installation successful.
ruby-2.3.3 - #configure
ruby-2.3.3 - #download
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
 51 21.9M   51 11.4M    0     0  18340      0  0:20:55  0:10:51  0:10:04 12186
100 21.9M  100 21.9M    0     0  17742      0  0:21:37  0:21:37 --:--:-- 17673
No checksum for downloaded archive, recording checksum in user configuration.
ruby-2.3.3 - #validate archive
ruby-2.3.3 - #extract
ruby-2.3.3 - #validate binary
ruby-2.3.3 - #setup
ruby-2.3.3 - #gemset created /home/hadoop/.rvm/scripts/gems/ruby-2.3.3@global
******************************************************************************
* NOTICE                                                                     *
******************************************************************************
* RVM has encountered a new or modified after_use_maglev file in the         *
* current directory, environment variables from this file will be exported   *
* and therefore may influence your shell.                                    *
*                                                                            *
* Examine the contents of this file carefully to be sure the contents are    *
* safe before trusting it!                                                   *
* Do you wish to trust '/home/hadoop/.rvm/hooks/after_use_maglev'?           *
* Choose v[iew] below to view the contents                                   *
******************************************************************************
y[es], n[o], v[iew], c[ancel]> ruby-2.3.3 - #generating global wrappers........
ruby-2.3.3 - #gemset created /home/hadoop/.rvm/scripts/gems/ruby-2.3.3
ruby-2.3.3 - #generating default wrappers........
[hadoop@hadoop02 ~]$ 
(6)使用一个ruby版本
[hadoop@hadoop02 ~]$ rvm use 2.3.3
Using /home/hadoop/.rvm/scripts/gems/ruby-2.3.3
[hadoop@hadoop02 ~]$ 
(7)卸载一个已知版本
[hadoop@hadoop02 ~]$ rvm remove 2.0.0
ruby-2.0.0-p648 - #already gone
Using /home/hadoop/.rvm/scripts/gems/ruby-2.3.3
[hadoop@hadoop02 ~]$
(8)查看版本
[hadoop@hadoop02 ~]$ ruby --version
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
[hadoop@hadoop02 ~]$ 
6)再安装redis就可以了(如果在hadoop用户下不行,直接切换成root用户)
[hadoop@hadoop02 ~]$ su root
Password: 
[root@hadoop02 hadoop]# ruby --version
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
[root@hadoop02 hadoop]# gem install redis
Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 2 seconds
1 gem installed
[root@hadoop02 hadoop]# su hadoop
[hadoop@hadoop02 ~]$ 
7)使用redis-cli命令进入集群环境

先执行redis的创建集群命令创建集群:

[hadoop@hadoop02 src]$ redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

日志结果:

[hadoop@hadoop02 src]$ redis-trib.rb  create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
>>> Creating cluster
Connecting to node 127.0.0.1:7000: OK
Connecting to node 127.0.0.1:7001: OK
Connecting to node 127.0.0.1:7002: OK
Connecting to node 127.0.0.1:7003: OK
Connecting to node 127.0.0.1:7004: OK
Connecting to node 127.0.0.1:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: 5cafec316d2c15576a359c7d2b5a554373f7c52c 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 09acf45bda9efecfe5e3eab03f4e8f44d8d7d8b5 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: cfbea5e41aa274c681836e759756c58952e3901b 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
S: a641cf8c0333bf70f9dda45cda1baf84037cf51a 127.0.0.1:7003
   replicates 5cafec316d2c15576a359c7d2b5a554373f7c52c
S: 0b050d0ef5440c6b6caeaee3cdc581a631acf23b 127.0.0.1:7004
   replicates 09acf45bda9efecfe5e3eab03f4e8f44d8d7d8b5
S: c34da17de941ad73667b8da04dcccaecbf341b08 127.0.0.1:7005
   replicates cfbea5e41aa274c681836e759756c58952e3901b
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 127.0.0.1:7000)
M: 5cafec316d2c15576a359c7d2b5a554373f7c52c 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: 09acf45bda9efecfe5e3eab03f4e8f44d8d7d8b5 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: cfbea5e41aa274c681836e759756c58952e3901b 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
M: a641cf8c0333bf70f9dda45cda1baf84037cf51a 127.0.0.1:7003
   slots: (0 slots) master
   replicates 5cafec316d2c15576a359c7d2b5a554373f7c52c
M: 0b050d0ef5440c6b6caeaee3cdc581a631acf23b 127.0.0.1:7004
   slots: (0 slots) master
   replicates 09acf45bda9efecfe5e3eab03f4e8f44d8d7d8b5
M: c34da17de941ad73667b8da04dcccaecbf341b08 127.0.0.1:7005
   slots: (0 slots) master
   replicates cfbea5e41aa274c681836e759756c58952e3901b
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[hadoop@hadoop02 src]$

然后:使用redis-cli命令进入集群环境:

[hadoop@hadoop02 src]$ redis-cli -c -p 7000
127.0.0.1:7000> ping
PONG
127.0.0.1:7000> 


一、如果安装高可用的集群:

不能直接分发,需要在每个节点上面进行下载,redis.conf里面的bind需要改成该节点的ip地址;

二、多节点集群redis.conf配置

port 9001(每个节点的端口号)  
daemonize yes  
bind 192.168.119.131(绑定当前机器 IP)  
dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)  
pidfile /var/run/redis_9001.pid(pid 9001和port要对应)  
cluster-enabled yes(启动集群模式)  
cluster-config-file nodes9001.conf(9001和port要对应)  
cluster-node-timeout 15000  
appendonly yes 

其他与单节点一致

成功



三、常见问题

配置完所有主节点后,报" ERR Invalid node address specified"

由于redis-trib.rb 对域名或主机名支持不好,故在创建集群的时候要使用ip:port的方式

redis-trib.rb create ip1:port1 ip2:port2 ip3:port3   ××××××××××××××××××××××

redis-trib.rb create 192.123.123.122:2222 192.123.123.123:3333 √√√√√√√√√√√√√

创建集群时报某个err slot 0 is already busy (redis::commanderror)

这是由于之间创建集群没有成功,需要将nodes.conf和dir里面的文件全部删除(注意不要删除了redis.conf)

主要是指:appendonly.aof和nodes7000.conf

创建集群时一直处于"Waiting for the cluster to join...................................."的状态

这个问题原因不知,但解决方法是在redis.conf文件中把bind 127.0.0.1本地环回口改为物理接口.

四、安装ruby redis时长时间没响应

这是由于天朝网络,解决办法是改ruby源(请自行baidu)或手动安装

猜你喜欢

转载自blog.csdn.net/qq_41851454/article/details/80272090
今日推荐