2、redis-trib.rb方式搭建redis三主三从集群模式

一、下载安装指定版本redis
$ cd /opt/web_app
$ wget http://download.redis.io/releases/redis-4.0.11.tar.gz  ##下载指定版本redis
$ tar -zxvf redis-4.0.11.tar.gz
$ ln -s redis-4.0.11 redis; ##建立软连接
$ cd ./redis/
$ make ##安装redis,安装完执行将在./redis/src目录下,新增redis-cli、redis-server、redis-sentinel等命令。
$ make install ##致使此版本命令添加到linux的环境变量,例如redis-cli 与 redis-server在任何目录均可执行。
注:环境变量只能配置一个版本的,其他redis版本不行,需要用本版本绝对路径执行相关命令。
二、创建配置文件

1、自定义redis.conf文件,字段释义参照https://www.cnblogs.com/pqchao/p/6558688.html

$ cd ./redis/
$ mkdir -p ./redis-cluster/7001
$ cd ./redis-cluster/7001
$ vi redis.conf; ##输下面的内容

##配置文件redis.conf
protected-mode no ##是否启动保护模式,如果yes,则bind必须指定当前服务器ip,不然无法连接。
timeout 300  ##根据需要填写响应的值
tcp-keepalive 300 ##单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞
daemonize yes ## redis作为守护进程,它会写一个 pid 到 /var/run/redis.pid 文件里面
pidfile "/opt/web_app/redis/redis-cluster/7001/redis.pid"
slowlog-max-len 2000
loglevel notice ##日志级别 debug(记录大量日志信息,适用于开发、测试阶段)
logfile "/opt/web_app/redis/redis-cluster/7001/redis.log"
databases 16 ##设置数据库的数目。默认的数据库是DB 0 ,可以在每个连接上使用select   命令选择一个不同的数据库
save 900 1
save 300 10
save 60 10000 ##存 DB 到磁盘:900 秒内如果至少有 1 个 key 的值变化,则保存。
rdbcompression yes ##对于存储到磁盘中的快照,可以设置是否进行压缩存储。
rdbchecksum yes ##  在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,
dbfilename dump.rdb
port 7001                                            
cluster-enabled yes ##开启集群
maxmemory-policy allkeys-lru ## 当内存使用达到最大值时,redis使用的清除策略
cluster-config-file nodes.conf ##集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。
requirepass password ##当前服务密码
masterauth password ##主节点密码  
dir "/opt/web_app/redis/redis-cluster/7001/"   

2、配置其他节点

##按照规划端口生成需要的配置目录
$ cd ./redis/redis-cluster/
$ cp -R 7001 7002
$ cp -R 7001 7003
$ cp -R 7001 7004
$ cp -R 7001 7005
$ cp -R 7001 7006
注:记得修改不同配置文件redis.conf里port字段值,与文件输出路径。
三、安装ruby、rubygems

1、安装ruby,生成redis-trib.rb到redis/src目录下

$ cd /opt/web_app/
$ mkdir ruby
$ cd ruby
$ wget https://cache.ruby-lang.org/pub/ruby/ruby-2.4.6.tar.gz
$ tar -zxvf ruby-2.4.6.tar.gz
$ cd ruby-2.4.6
$ ./configure
$ make && make install
$ source /etc/profile
$ ruby -v

2、离线安装rubygems

$ cd /opt/web_app/ruby/
$ wget https://rubygems.org/downloads/redis-3.3.0.gem
$ gem install -l redis-3.3.0.gem
$ gem list -- check redis gem
$ gem -v
四、启动所有节点
$ cp ./redis/src/redis-server ./redis/redis-cluster
$ cp ./redis/src/redis-cli ./redis/redis-cluster
$ cd ./redis/redis-cluster
$ ./redis-server ./7001/redis.conf
...
##验证是否启动成功
$ ps -ef|grep redis
五、创建redis集群
//设置ruby脚本中的密码
$ cp /usr/local/lib/ruby/gems/2.4.0/gems/redis-4.1.3/lib/redis/client.rb
/usr/local/lib/ruby/gems/2.4.0/gems/redis-4.1.3/lib/redis/client.rb.bak
$ vi client.rb 
require "redis/errors"
require "socket"
require "cgi"

class Redis
  class Client

    DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,   ##端口
      :path => nil,
      :timeout => 5.0,
      :password => "kcpt",  ##密码
      ...
创建redis集群,中途输入yes(执行一次)ip非127.0.0.1
$ ./redis/src/redis-trib.rb create --replicas 1 ip:7001 ip:7002 ip:7003 ip:7004 ip:7005 ip:7006 
六、集群状态检查

1、检查集群状态(每个槽是否都覆盖)

$ ./redis/src/redis-trib.rb check ip:7001

$ ./redis-trib.rb check 172.17.47.177:7001
/usr/local/lib/ruby/gems/2.4.0/gems/redis-3.3.0/lib/redis/client.rb
>>> Performing Cluster Check (using node 172.17.47.177:7001)
M: e9954d6b7aca2a75fb02dc3bc6776c0c3e5f31c3 172.17.47.177:7001
   slots:5461-10922 (5462 slots) master
...

2、数据操作检查,查看节点集群状态,以及执行set 、get等命令验证。

$ ./redis/src/redis-cli -p 7001

$ ./redis-cli -p 7001
127.0.0.1:7001> auth kcpt
OK
127.0.0.1:7001> cluster nodes
6259f27a4c598ee7885e81247d9a98f1c50761b0 172.17.47.178:7002@17002 slave e9954d6b7aca2a75fb02dc3bc6776c0c3e5f31c3 0 1607082475157 2 connected
f9df20de13831ae95e97fb2622769635e23b359c 172.17.47.176:7002@17002 slave 5dec2f66788e534ad32c8e8d3d010842ab9c885e 0 1607082476160 4 connected
e9954d6b7aca2a75fb02dc3bc6776c0c3e5f31c3 172.17.47.177:7001@17001 myself,master - 0 1607082471000 2 connected 5461-10922
b91b19e66a35089f85ac7336be5864ab7e3246a3 172.17.47.177:7002@17002 slave 6c79c550d46c95497bfc4a4e2adf05ad7b13d304 0 1607082474155 5 connected
5dec2f66788e534ad32c8e8d3d010842ab9c885e 172.17.47.178:7001@17001 master - 0 1607082474000 3 connected 10923-16383
6c79c550d46c95497bfc4a4e2adf05ad7b13d304 172.17.47.176:7001@17001 master - 0 1607082473000 1 connected 0-5460

说明:1、步骤1到步骤4需要在每台需要安装redis的服务器上执行,步骤5只需要在一台服务器执行。
2、像常用命令redis-cli 、reids-server、redis-trib.rb可以从.redis/src目录拷贝到单独目录,方便执行。

你可能感兴趣的:(2、redis-trib.rb方式搭建redis三主三从集群模式)