(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

1、虚拟机环境

使用的Linux环境已经版本:

Centos 7   64位系统

 

主机ip:

172.16.0.9 

172.16.0.10

172.16.0.11

每台服务器是1主1从,实验3台服务器课成为3主3从。,3个主的不挂,3个从的挂了没事,但是如果一个主的挂了他会切换至该服务器的其它从的,如果该从的也挂了那么集群就不能获取数据了

Redis安装的项目目录、日志、配置文件等都存放在/data/redis/目录下。

2、下载相关的安装包以及解压

首先在172.16.0.9 机器操作:

1

2

3

cd /data/soft

wget http://download.redis.io/releases/redis-3.2.12.tar.gz

tar -zxvf redis-3.2.12.tar.gz

 3、安装

在/data/soft/redis-3.2.12/目录下执行:

1

make install PREFIX=/data/soft/redis-3.2.12

 4、配置信息

创建集群配置、log日志、数据所在的文件夹:

1

2

cd /data/soft/redis-3.2.12/

mkdir cluster-conf

 创建集群端口文件夹:

1

2

3

cd cluster-conf

mkdir 6379

mkdir 6380

 复制配置文件到/data/soft/redis-3.2.12/cluster-conf/6379目录下:

1

cp /data/soft/redis-3.2.12/redis.conf  /data/soft/redis-3.2.12/cluster-conf/6379

修改6379目录下redis.conf配置文件(以下标红的在原配置中注释,添加以下内网至头部):

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

#注释掉ip或者设置0.0.0.0都是局域网访问
bind 0.0.0.0
##端口号
port 6379

#指定了记录日志的文件
 logfile "/data/soft/redis-3.2.12/cluster-conf/6379/redis.log"

#该目录要事先创建好,数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
  dir /data/soft/redis-3.2.12/cluster-conf/6379/
#是否开启集群
   cluster-enabled yes

#集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息,
#这个文件并不需要手动配置,这个配置文件有Redis生成并更新,
#每个Redis集群节点需要一个单独的配置文件,请确保与实例运行的系统中配置文件名称不冲突。
   cluster-config-file nodes-6379.conf

#节点互连超时的阀值。集群节点超时毫秒数
    cluster-node-timeout 5000

#默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了,
#但是redis如果中途宕机,会导致可能有几分钟的数据丢失,
#根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性,
#Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,
#每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
  appendonly yes

 复制6379目录下redis.conf至6380并修改端口及存储路径:

[[email protected] 6379]# cp /data/soft/redis-3.2.12/cluster-conf/6379/redis.conf /data/soft/redis-3.2.12/cluster-conf/6380/

[[email protected] 6380]# vim /data/soft/redis-3.2.12/cluster-conf/6380/redis.conf 

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

 5、使用scp复制安装和配置好的redis复制到其他服务器上

已经在172.16.0.9机器配置好,复制到 172.16.0.10 和 172.16.0.11 机器

在两台新机器上创建文件夹

mkdir /data/soft

 复制:

1

2

sscp -r /data/soft/redis-3.2.12 [email protected]:/data/soft/

#输入10机器密码即可传输数据。

1

2

scp -r /data/soft/redis-3.2.12 [email protected]:/data/soft/

#输入11机器密码即可传输数据。

 

6、启动3台机器的redis

3台机器执行启动方式:

[[email protected]-ea1bnx05 6380]# ps -ef|grep redis

root     12500  6029  0 15:43 pts/0    00:00:00 grep --color=auto redis

[[email protected] /]# /data/soft/redis-3.2.12/bin/redis-server /data/soft/redis-3.2.12/cluster-conf/6379/redis.conf &

[1] 12666

[[email protected] /]# /data/soft/redis-3.2.12/bin/redis-server /data/soft/redis-3.2.12/cluster-conf/6380/redis.conf &   

[2] 12678

[[email protected] /]# ps -ef|grep redis

root     12666  6029  0 15:45 pts/0    00:00:00 /data/soft/redis-3.2.12/bin/redis-server 0.0.0.0:6379 [cluster]

root     12678  6029  0 15:45 pts/0    00:00:00 /data/soft/redis-3.2.12/bin/redis-server 0.0.0.0:6380 [cluster]

root     12682  6029  0 15:45 pts/0    00:00:00 grep --color=auto redis

[[email protected] 6379]#  netstat -tunlp|grep redis

tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      12666/redis-server  

tcp        0      0 0.0.0.0:6380            0.0.0.0:*               LISTEN      12678/redis-server  

tcp        0      0 0.0.0.0:16379           0.0.0.0:*               LISTEN      12666/redis-server  

tcp        0      0 0.0.0.0:16380           0.0.0.0:*               LISTEN      12678/redis-server  

[[email protected] 6379]# 

7、创建集群

部署环境

yum install ruby -y

yum install rubygems -y

gem install redis

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

报错,提示ruby版本需要大于2.2.2版本。CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2

需要安装个高版本的ruby

1

2

3

4

5

6

#安装curl

yum install curl -y

#安装rvm

#gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

#curl -L get.rvm.io | bash -s stable

#source /usr/local/rvm/scripts/rvm

 

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

查看rvm库中已知的ruby版本

[[email protected] 6379]# rvm list known
[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[.7]
[ruby-]2.4[.4]
[ruby-]2.5[.1]
[ruby-]2.6[.0-preview2]

查看现在的版本

[[email protected] 6379]# ruby --version
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]

使用一个ruby新版本

[[email protected] 6379]# rvm install 2.4.4 

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

使用ruby新版本

rvm use  2.4.4

卸载一个旧版本

rvm remove 2.0.0 

 查看现在版本

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

在重新安装ruby相关的redis就可以了

[[email protected] 6379]# gem install redis
Fetching: redis-4.0.2.gem (100%)
Successfully installed redis-4.0.2
Parsing documentation for redis-4.0.2
Installing ri documentation for redis-4.0.2
Done installing documentation for redis after 1 seconds
1 gem installed

开启集群

[[email protected] 6379]# /data/soft/redis-3.2.12/src/redis-trib.rb create --replicas 1 172.16.0.9:6379 172.16.0.9:6380 172.16.0.10:6379 172.16.0.10:6380 172.16.0.11:6379 172.16.0.11:6380
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
172.16.0.9:6379
172.16.0.10:6379
172.16.0.11:6379
Adding replica 172.16.0.10:6380 to 172.16.0.9:6379
Adding replica 172.16.0.9:6380 to 172.16.0.10:6379
Adding replica 172.16.0.11:6380 to 172.16.0.11:6379
M: b4f27f6441fc4e5dbf049268236bab7c0a62d4ef 172.16.0.9:6379
   slots:0-5460 (5461 slots) master
S: 81e21ecba318e62a13c196c3ce64b75ac02b08ad 172.16.0.9:6380
   replicates de36ff808165790059cbc67b82fdc8b10c05b67d
M: de36ff808165790059cbc67b82fdc8b10c05b67d 172.16.0.10:6379
   slots:5461-10922 (5462 slots) master
S: 5e03f8867ae368f3a79fd4dd6c49eb46750fa8e7 172.16.0.10:6380
   replicates b4f27f6441fc4e5dbf049268236bab7c0a62d4ef
M: 6b9dba0f0e9939b6020a1e20a8918a0f6a80fb68 172.16.0.11:6379
   slots:10923-16383 (5461 slots) master
S: d34f949cd71e296d8b65c5c9420dfcdddae2b09e 172.16.0.11:6380
   replicates 6b9dba0f0e9939b6020a1e20a8918a0f6a80fb68
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 172.16.0.9:6379)
M: b4f27f6441fc4e5dbf049268236bab7c0a62d4ef 172.16.0.9:6379
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 5e03f8867ae368f3a79fd4dd6c49eb46750fa8e7 172.16.0.10:6380
   slots: (0 slots) slave
   replicates b4f27f6441fc4e5dbf049268236bab7c0a62d4ef
M: de36ff808165790059cbc67b82fdc8b10c05b67d 172.16.0.10:6379
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
M: 6b9dba0f0e9939b6020a1e20a8918a0f6a80fb68 172.16.0.11:6379
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: d34f949cd71e296d8b65c5c9420dfcdddae2b09e 172.16.0.11:6380
   slots: (0 slots) slave
   replicates 6b9dba0f0e9939b6020a1e20a8918a0f6a80fb68
S: 81e21ecba318e62a13c196c3ce

 slots: (0 slots) slave
   replicates de36ff808165790059cbc67b82fdc8b10c05b67d
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

完成安装

 

进服务器测试

[[email protected] bin]# /data/soft/redis-3.2.12/bin/redis-cli -c -h 172.16.0.9 -p 6379

172.16.0.9:6379> set aaa bbb

172.16.0.9:6379> keys *
1) "bbb"
172.16.0.9:6379> get aaa
-> Redirected to slot [10439] located at 172.16.0.10:6379
"bbb"
172.16.0.10:6379> exit

 

如果需要关闭redis集群

[[email protected] bin]# netstat -tunlp|grep redis
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      14546/redis-server  
tcp        0      0 0.0.0.0:6380            0.0.0.0:*               LISTEN      9626/redis-server 0 
tcp        0      0 0.0.0.0:16379           0.0.0.0:*               LISTEN      14546/redis-server  
tcp        0      0 0.0.0.0:16380           0.0.0.0:*               LISTEN      9626/redis-server 0 

[[email protected] 6379]# kill 9626
[[email protected] 6379]# kill 14546

其它两台也是

 

如果设置密码

则修改配置文件redis.conf

vim /data/soft/redis-3.2.12/cluster-conf/6379/redis.conf

vim /data/soft/redis-3.2.12/cluster-conf/6380/redis.conf

增加一列

requirepass “111111”

 

或者在线修改,上面的没试通,下面的ok,登录这6个节点,全部执行一次,

masterauth为从节点访问主节点的密码requirepass为客户端程序访问redis时候的连接密码

[[email protected] bin]# redis-cli -c -p 6379

config set masterauth wuwei111

config set requirepass wuwei111

再登录6个节点,执行config rewrite,就会把配置写入启动文件redis.conf中

[[email protected] bin]# redis-cli -c -p 6379 -a wuwei111

config rewrite

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

(Redis系列二)Centos7 搭redis3.2.12集群-3主3从的6个节点服

重启动服务启动操作:

1、启动了6个节点的redis

/data/soft/redis-3.2.12/bin/redis-server /data/soft/redis-3.2.12/cluster-conf/6379/redis.conf &
/data/soft/redis-3.2.12/bin/redis-server /data/soft/redis-3.2.12/cluster-conf/6380/redis.conf &
2、启动集群

/data/soft/redis-3.2.12/src/redis-trib.rb create --replicas 1 172.16.0.9:6379 172.16.0.9:6380 172.16.0.10:6379 172.16.0.10:6380 172.16.0.11:6379 172.16.0.11:6380