redis三主三从集群部署

       1.redis集群原理

2.redis集群部署

2.1解决依赖,获取解压安装包

2.2 安装,并配置环境变量

2.4启动redis实例

3. 创建集群

3.1安装ruby

3.2创建Redis集群.

4.测试验证


1.redis集群原理

  Redis集群模式主要有2种:

  • 主从集群
  • 分布式集群。

Redis为了实现负载均衡,提供集群模式。以三个节点为例,集群模式相当于将1-15000片分片,分为1-5000、5000-10000、10000-15000。每个节点分一段数据片。这样的话,当一个节点宕机后,这个节点没有备份的话,此段分片将不再可以使用。所以,官方推荐,集群内的每个节点都应该配备一个从节点,作为冷备。

官网推荐的模式,是三主三从的集群部署方式。

2.redis集群部署

2.1解决依赖,获取解压安装包

 $ yum -y install gcc #如果没有gcc编译容器则需要安装
 $ wget http://download.redis.io/releases/redis-4.0.11.tar.gz
 $ tar -xf redis-4.0.11.tar.gz

2.2 安装,并配置环境变量

#编译,获取可行执行文件
$ cd redis-4.0.11
$ make
  
#在/opt下创建redis目录,将可执行文件,配置文件,日志文件都放在/opt/redis目录下
$ mkdir  -pv /opt/redis/conf /opt/redis/bin /opt/redis/log  /opt/redis/data/7000   /opt/redis/data/7001
 
#拷贝常用的二进制文件
$ cp /opt/software/redis-4.0.11/src/redis-* /opt/redis/bin
 
 
#删除.c,.o的文件
$ rm /opt/redis/bin/*.c  /opt/redis/bin/*.o

$ vim /etc/pofile  #添加以下内容

export REDIS_HOME=/opt/redis
export PATH=${REDIS_HOME}/bin:$PATH

#立即生效
$ source /etc/profile

在第一台机器上配置redis的主,从两个配置文件,下面是主实例的配置文件内容

$ vim /opt/redis/conf/redis7000.conf

bind ${ip1}         #填写第一台机器ip  
port 7000
cluster-enabled  yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
timeout 3600
daemonize yes
  
pidfile /opt/redis/pid/redis7000.pid
logfile "/opt/redis/log/redis7000.log"
dir "/opt/redis/data/7000"
  
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""

下面是从实例的配置文件内容,只是端口不一样,和目录位置结构不一样

#这里我们使用简单一点集群配置,从实例配置文件
$ vim /opt/redis/conf/redis7001.conf

bind ${ip1}
port 7001
cluster-enabled  yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
timeout 3600
daemonize yes
  
pidfile /opt/redis/pid/redis7001.pid
logfile "/opt/redis/log/redis7001.log"
dir "/opt/redis/data/7001"
  
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""

2.4启动redis实例

配置完后,我们scp到其他两个机器上,并三台机器都要重动,每台启动2个实例,一个主实例,一个从实例。我们以第一台机器为例,进行重启。

#拷贝到其他两台机器上
$ scp -r /opt/redis ${ip2}:/opt
$ scp -r /opt/redis ${ip3}:/opt
  
#启动redis实例,3台机器均要启动
$ redis-server conf/redis7000.conf
$ redis-server conf/redis7001.conf

我们可以看到两个进程存在,其他两台机器也要启动,启动方式是一样的。

$ ps -ef |grep redis
root       21882       1  0 Nov30 ?        00:09:05 redis-server ${ip1}:7000 [cluster]
root       21891       1  0 Nov30 ?        00:08:45 redis-server ${ip1}:7001 [cluster]

3. 创建集群

3.1安装ruby

 创建Redis集群需要借助安装包里的一个Ruby脚本,所以需要先安装ruby.

[[email protected] /opt]# yum -y install ruby rubygems
[[email protected] /opt]# gem install redis # 安装Redis客户端for Ruby

执行上述操作,可能会报下面的错误

ERROR:  Error installing redis:
    redis requires Ruby version >= 2.2.2.

解决方案:升级ruby的版本,按照网上安装ruby的方法,下载rvm,然后升级ruby,升级完后发现ctrl+c无法使用了。解决起来比较繁琐,所以这里我就把rvm安装好后,打了个包,将rvm包下载下来放到你要安装的位置,解压后里就有ruby2.4.4,配置一下环境变量就可以用了。比网站上教的安装方法简单一些。rvm.tar.gz包下载地址

redis三主三从集群部署

ruby升级完后,不要忘了执行

$ gem install redis # 安装Redis客户端for Ruby

3.2创建Redis集群.

安装完ruby2.4.4后我们就可以进行以下操作, 创建Redis集群.

[[email protected] /opt/redis/]# redis-trib.rb create --replicas 1 ${ip1}:7000 ${ip2}:7000 ${ip3}:7000 ${ip1}:7001 ${ip2}:7001 ${ip3}:7001
  
>>> Creating cluster
Can I set the above configuration? (type 'yes' to accept): yes       #输入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: d5a834d075fd93eefab877c6ebb86efff680650f ${ip1}:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: be2718476eba4e56f696e56b75e67df720b7fc24 ${ip2}:7000
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 13d0c397604a0b2644244c37b666fce83f29faa8 ${ip3}:7000
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 3d02f59b34047486faecc023685379de7b38076c ${ip1}:7001
   slots: (0 slots) slave
   replicates 13d0c397604a0b2644244c37b666fce83f29faa8
S: 99c07119a449a703583019f7699e15afa0e41952 ${ip2}:7001
   slots: (0 slots) slave
   replicates d5a834d075fd93eefab877c6ebb86efff680650f
S: dedf672f0a75faf37407ac4edd5da23bc4651e25 ${ip3}:7001
   slots: (0 slots) slave
   replicates be2718476eba4e56f696e56b75e67df720b7fc24
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
  
根据提示,输入yes,我们会看到集群创建成功。

4.测试验证

输入命令使用客户端redis-cli二进制访问某个实例,执行setget的进行测试,如下所示:

$ redis-cli -h ${ip1}  -p 7000 -c

输入命令进行测试,如下图:

redis三主三从集群部署

redis三主三从集群部署