Redis集群搭建与简单使用

Linux piniu 1292浏览 0评论

# 安装环境与版本介绍

1.将redis安装在两台机器上,共6个节点,每台机器3个节点,创建出3 master、3 salve 环境。
2.redis 采用 redis-3.2.9 版本。
3.服务器采用都是 CentOS ,一台 CentOS6.5 (IP:192.168.31.245),一台 CentOS7(IP:192.168.31.210)。

1.下载redis并解压

[root@gj_css_db2 ~]# cd /root
[root@gj_css_db2 ~]# wget http://219.238.7.66/files/502600000A29C8D5/download.redis.io/releases/redis-3.2.9.tar.gz
[root@gj_css_db2 ~]# tar zxvf redis-3.2.9.tar.gz

2.编译安装

[root@gj_css_db2 ~]# mv redis-3.2.9 /usr/local/
[root@gj_css_db2 ~]# cd /usr/local/redis-3.2.9
[root@gj_css_db2 ~]# make && make install

3.将 redis-trib.rb 复制到 /usr/local/bin 目录下

[root@gj_css_db2 ~]# cp src/redis-trib.rb /usr/local/bin/

4.创建 Redis 节点

首先在 192.168.31.245 机器上 /usr/local/redis-3.2.9 目录下创建 redis-cluster 目录;

[root@gj_css_db2 ~]# mkdir redis-cluster

在 redis-cluster 目录下,创建名为7001、7002、7003的目录,并将 redis.conf 拷贝到这三个目录中

[root@gj_css_db2 ~]# mkdir redis-cluster/7001
[root@gj_css_db2 ~]# mkdir redis-cluster/7002
[root@gj_css_db2 ~]# mkdir redis-cluster/7003

[root@gj_css_db2 ~]# cp redis.conf redis-cluster/7001
[root@gj_css_db2 ~]# cp redis.conf redis-cluster/7002
[root@gj_css_db2 ~]# cp redis.conf redis-cluster/7003

分别修改这三个配置文件,修改如下内容:

[root@gj_css_db2 ~]# vim redis-cluster/7001/redis.conf
port  7001                                   //端口7001,7002,7003        
bind 本机ip                                  //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                             //redis后台运行
pidfile  /var/run/redis_7001.pid             //pidfile文件对应7001,7002,7003
cluster-enabled  yes                        //开启集群  把注释#去掉
cluster-config-file  nodes_7001.conf   	//集群的配置  配置文件首次启动自动生成 7001,7002,7003
cluster-node-timeout  15000                	//请求超时  默认15秒,可自行设置
appendonly  yes                           	//aof日志开启  有需要就开启,它会每次写操作都记录一条日志 
# masterauth 123456 			//设置密码(注;集群中的所有节点,密码必须一致,暂时不设置,因为phpredis扩展,暂时不支持使用密码) 
# requirepass 123456			//设置密码(注;集群中的所有节点,密码必须一致,暂时不设置,因为phpredis扩展,暂时不支持使用密码)

接着在另外一台机器上(192.168.31.210),的操作重复以上三步,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改即可

5.启动各个节点

#第一台机器上执行
[root@gj_css_db2 ~]# redis-server redis-cluster/7001/redis.conf
[root@gj_css_db2 ~]# redis-server redis-cluster/7002/redis.conf
[root@gj_css_db2 ~]# redis-server redis-cluster/7003/redis.conf

 
#另外一台机器上执行
[root@gj_css_db2 ~]# redis-server redis-cluster/7004/redis.conf
[root@gj_css_db2 ~]# redis-server redis-cluster/7005/redis.conf
[root@gj_css_db2 ~]# redis-server redis-cluster/7006/redis.conf 

6.检查 redis 启动情况

第一台机器:

[root@gj_css_db2 ~]# ps -ef | grep redis
root      61020      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7001 [cluster]    
root      61024      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7002 [cluster]    
root      61029      1  0 02:14 ?        00:00:01 redis-server 127.0.0.1:7003 [cluster]    

[root@gj_css_db2 ~]# netstat -tnlp | grep redis
tcp        0      0 127.0.0.1:17001             0.0.0.0:*                   LISTEN      61020/redis-server 
tcp        0      0 127.0.0.1:17002             0.0.0.0:*                   LISTEN      61024/redis-server 
tcp        0      0 127.0.0.1:17003             0.0.0.0:*                   LISTEN      61029/redis-server 
tcp        0      0 127.0.0.1:7001              0.0.0.0:*                   LISTEN      61020/redis-server 
tcp        0      0 127.0.0.1:7002              0.0.0.0:*                   LISTEN      61024/redis-server 
tcp        0      0 127.0.0.1:7003              0.0.0.0:*                   LISTEN      61029/redis-server

第二台机器:

[root@gj_css_db2 ~]# ps -ef | grep redis
root       9957      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7004 [cluster]
root       9964      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7005 [cluster]
root       9971      1  0 02:32 ?        00:00:01 redis-server 127.0.0.1:7006 [cluster]
root      10065   4744  0 02:38 pts/0    00:00:00 grep --color=auto redis

[root@gj_css_db2 ~]# netstat -tlnp | grep redis
tcp        0      0 127.0.0.1:17004         0.0.0.0:*               LISTEN      9957/redis-server 1
tcp        0      0 127.0.0.1:17005         0.0.0.0:*               LISTEN      9964/redis-server 1
tcp        0      0 127.0.0.1:17006         0.0.0.0:*               LISTEN      9971/redis-server 1
tcp        0      0 127.0.0.1:7004          0.0.0.0:*               LISTEN      9957/redis-server 1
tcp        0      0 127.0.0.1:7005          0.0.0.0:*               LISTEN      9964/redis-server 1
tcp        0      0 127.0.0.1:7006          0.0.0.0:*               LISTEN      9971/redis-server 1 

7.创建集群

[root@gj_css_db2 ~]# yum -y install ruby ruby-devel rubygems rpm-build
[root@gj_css_db2 ~]# gem install redis

通过指令找到安装的redis在ruby环境中的配置client.rb
find / -name “client.rb”
编辑: /usr/local/ruby/lib/ruby/gems/2.4.0/gems/redis-4.1.3/lib/redis/client.rb
把该文件中的 password 修改为:redis集群节点的密码 (暂时不设置密码。因为phpredis扩展暂不支持使用密码)

Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。
使用下面这个命令即可完成安装。

[root@gj_css_db2 ~]# redis-trib.rb  create  --replicas  1  192.168.31.245:7001 192.168.31.245:7002  192.168.31.245:7003 192.168.31.210:7004  192.168.31.210:7005  192.168.31.210:7006

当出现: Can I set the above configuration (type ‘yes’ to accept): yes // 输入 yes 即可,然后出现如下内容,说明安装成功。

其中,前三个 ip:port 为第一台机器的节点,剩下三个ip:port 为第二台机器。

8.集群验证

在第一台机器上连接集群的7002端口的节点,在另外一台连接7005节点,连接方式为 redis-cli -h 192.168.31.245 -c -p 7002 ,加参数 -C 可连接到集群,
因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。

在7005节点执行命令 set hello world ,执行结果如下:

[root@gj_css_db2 ~]# redis-cli -h 192.168.31.210 -c -p 7005
192.168.31.210:7005> set hello world
OK
192.168.31.210:7005> keys *
1) "hello"

然后在另外一台7002端口,查看 key 为 hello 的内容, get hello ,执行结果如下:

[root@gj_css_db2 ~]# redis-cli -h 192.168.31.245 -c -p 7002
192.168.31.245:7002> get hello
-> Redirected to slot [866] located at 192.168.31.210:7005
"world"

说明集群运作正常。

### 检查 redis 集群状态

[root@gj_css_db2 redis-3.2.9]# redis-trib.rb check 192.168.31.245:7001

出现如下结果

>>> Performing Cluster Check (using node 192.168.31.245:7001)
S: 061db99e7485ac1ecc682734fdf07fce51e055f5 192.168.31.245:7001
   slots: (0 slots) slave
   replicates 91f53935dd7dce58161a479caead9bf3a5f045fe
M: b75185df028c9b60468db8869584e61f496e436d 192.168.31.245:7003
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 119b45cec22663a2d5c8934ae7e1b178fa77860a 192.168.31.245:7002
   slots: (0 slots) slave
   replicates 62f2a723b74537b78408f6b2829018c018fb114a
M: 62f2a723b74537b78408f6b2829018c018fb114a 192.168.31.210:7006
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 421ce8d82768fd1144e55598807eab5089ee94f9 192.168.31.210:7004
   slots: (0 slots) slave
   replicates b75185df028c9b60468db8869584e61f496e436d
M: 91f53935dd7dce58161a479caead9bf3a5f045fe 192.168.31.210:7005
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

### centos 7 下 需要安装 ruby 2.3 以上版本

wget http://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.gz 
 tar zxvf  ruby-2.4.0.tar.gz
 cd ruby-2.4.0
 ./configure  --prefix=/usr/local/ruby
 make && make install
 ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby
 ln -s /usr/local/ruby/bin/gem /usr/bin/gem
 ruby -v    //查看一下

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: