一、安装redis
安装集群需要Ruby命令,因此我们需要安装下Ruby,在集群机器中随便找一台执行即可
- yum install ruby //安装ruby
- yum install rubygems //安装rubygems,最新版本会自动安装
- gem install redis
执行完成之后会发现报错了
,
redis需要的Ruby版本最低是2.2.2,但是CentOS7 yum库中ruby的版本支持到 2.0.0,
查看Ruby版本命令:ruby --version
可gem 安装redis需要最低是2.2.2,采用rvm来更新ruby:
- 安装RVM
- curl -L get.rvm.io | bash -s stable
- find / -name rvm -print(此时可能出现问题)
- 如果没有出现上面的信息,执行如下图提示的命令执行的命令如上图提示的command
- 上面命令执行完毕后,继续执行 find / -name rvm -print,就可以看到上面的正确的截图了
- 使刚安装的rvm立即生效
- source /usr/local/rvm/scripts/rvm
- 查看rvm库中ruby版本
- rvm list known
- 安装一个ruby版本
-
rvm install 2.4.1
-
- 使用一个ruby版本
-
rvm use 2.4.1
-
- 设置默认版本
-
rvm use 2.4.1 --default
-
- 卸载一个已知版本
-
rvm remove 版本号 比如原来的ruby版本如下:
那么删除命令为:rvm remove 2.0.0p648
-
- 查看ruby版本
-
ruby --version
-
- 到此为止ruby的新版本就安装完毕了,下面让我继续执行安装redis 执行命令
gem install redis
2、下载redis源码包并解压
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz
cd redis-3.2.4
3、安装redis
make
make install PREFIX=/usr/local/redis
cp redis.conf /usr/local/redis/bin/redis.conf
chmod 777 /usr/local/redis/bin/redis.conf
4、启动redis(此为单机测试,只为搭建集群可跳过)
./redis-server redis.conf
5、验证(此为单机测试,只为搭建集群可跳过)
[root@host-172-16-80-177 bin]# ./redis-cli -p 6379
127.0.0.1:6379> get
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> set aa hzb
OK
127.0.0.1:6379> get aa
"hzb"
二、搭建redis集群(集群模式)
1、在/usr/local/下面创建redis-cluster目录
mkdir -p /usr/local/redis-cluster
2、复制/usr/local/redis/bin目录到redis-cluster里面并重命名为redis1
cd /usr/local
cp -r redis/bin redis-cluster/redis1
3、将redis1在同目录复制3份分别起名redis2,redis3,redis4,redis5,redis6(必须6个节点以上才能创建集群)
cd /usr/local/redis-cluster
[root@host-172-16-80-177 redis-cluster]# pwd
/usr/local/redis-cluster
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis2
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis3
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis4
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis5
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis6
分别修改为redis-7001.conf,redis-7002.conf 后面依次到redis-7006.conf(最好下载到本地后修改后再上传)
以redis-7001为例:
daemonize yes
bind 192.168.65.130 #(外部可访问IP)
Port 7001
logfile "./redis-7001.log"
databases 1
protected-mode no
pidfile /var/run/redis_7001.pid
cluster-enabled yes
4、将redis-trib.rb复到制redis-cluster目录里面
首先找到redis-trib.rb的位置,知道位置可以省去这一步
[root@bslsvrnexusp1 bin]# find / -name redis-trib.rb
/usr/local/Redis/redis-3.2.4/src/redis-trib.rb
然后进入redis-cluster文件夹,将redis-trib.rb复制到当前目录中
[root@host-172-16-80-177 redis-cluster]# cp /usr/local/Redis/redis-3.2.4/src/redis-trib.rb .
[root@host-172-16-80-177 redis-cluster]# ll
total 76
drwxr-xr-x 2 root root 4096 Oct 19 22:37 redis1
drwxr-xr-x 2 root root 4096 Oct 19 22:48 redis2
drwxr-xr-x 2 root root 4096 Oct 19 22:49 redis3
drwxr-xr-x 2 root root 4096 Oct 19 22:49 redis4
drwxr-xr-x 2 root root 4096 Oct 19 22:49 redis5
drwxr-xr-x 2 root root 4096 Oct 19 22:49 redis6
-rwxr-xr-x 1 root root 60852 Oct 19 22:52 redis-trib.rb
5、分别进入redis1,redis2,redis3,redis4,redis5,redis6里面执行(一定要遵循:分别进入)
./redis-server redis-7001.conf
......
将6个节点启动
[root@host-172-16-80-177 redis4]# ps -ef|grep redis
root 3167 1 0 02:49 ? 00:00:00 ./redis-server 127.0.0.1:7001 [cluster]
root 3176 1 0 02:50 ? 00:00:00 ./redis-server 127.0.0.1:7002 [cluster]
root 3187 1 0 02:51 ? 00:00:00 ./redis-server 127.0.0.1:7003 [cluster]
root 3191 1 0 02:52 ? 00:00:00 ./redis-server 127.0.0.1:7004 [cluster]
root 3191 1 0 02:52 ? 00:00:00 ./redis-server 127.0.0.1:7005 [cluster]
root 3191 1 0 02:52 ? 00:00:00 ./redis-server 127.0.0.1:7006 [cluster]
root 3195 1852 0 02:52 pts/0 00:00:00 grep redis
6、用redis-trib.rb构建集群
cd /usr/local/redis-cluster/
[root@host-172-16-80-177 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.65.130:7001 192.168.65.130:7002 192.168.65.130:7003 192.168.65.130:7004 192.168.65.130:7005 192.168.65.130:7006
7、验证集群是否成功
[root@host-172-16-80-177 redis2]# ./redis-cli -h 192.168.65.130 -c -p 7002
192.168.65.130:7002> set hello helloword
-> Redirected to slot [866] located at 172.16.80.177:7001
OK
172.16.80.177:7006> get hello
-> Redirected to slot [866] located at 172.16.80.177:7001
"helloword"
备注:
密码设置:修改所有Redis集群中的redis-700X.conf文件加入:
在:【port 700X】下一行加入下面两行
masterauth passwd123
requirepass passwd123
设置密码之后如果需要使用redis-trib.rb的各种命令
如:./redis-trib.rb check 127.0.0.1:7000,则会报错ERR] Sorry, can’t connect to node 127.0.0.1:7000
解决办法:vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然后修改passord
class Client
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => "passwd123",
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:inherit_socket => false
}