# 安装环境与版本介绍
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 //查看一下