Redis集群配置

1、集群规划

要让Redis4.0.1集群正常工作至少需要3个Master节点,每个 Master 节点要配备至少 1 个 Slave 节点。 根据以上特点和要求, 进行如下的集群实施规划:使用 6 台服务器(物理机或虚拟机) 部署 3 个 Master + 3 个 Slave;

IP 端口 集群端口(服务端口+10000)
192.168.199.249 6382 16382
192.168.199.249 6383 16383
192.168.199.249 6384 16384
192.168.199.126 6379 16379
192.168.199.126 6380 16380
192.168.199.126 6381 16381

2、开启端口

使用如下命令启用端口

firewall-cmd --zone=public --add-port={端口号}/tcp --permanent

重启防火墙

firewall-cmd --reload

3、安装Redis

在/data目录下创建redis目录,进入redis目录,使用wget命令下载Redis并解压

# mkdir /data/redis
# cd /data/redis
# wget http://download.redis.io/releases/redis-4.0.1.tar.gz
# tar -zxvf redis-4.0.1.tar.gz
# cd redis-4.0.1

安装(使用 PREFIX 指定安装目录)

# make PREFIX=/data/redis install  

安装完成后, 可以看到/data/redis 目录下有一个 bin 目录, bin 目录里就是 redis 的命令脚本:

redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server

4、创建集群目录

创建集群配置目录,因为我们分了两台机器,在249的机器上和126的机器上创建有点差别。

在两台机器上都新建集群目录(两台一样):

mkdir /data/redis/cluster

在126这台机器上,在cluster目录中建三个目录,并拷贝redis配置文件到对应目录并重新命名:

# cd /data/redis/cluster
# mkdir -p 6379
# cp /data/redis/redis-4.0.1/redis.conf /data/redis/cluster/6379/redis-6379.conf
# mkdir -p 6380
# cp /data/redis/redis-4.0.1/redis.conf /data/redis/cluster/6380/redis-6380.conf
# mkdir -p 6381
# cp /data/redis/redis-4.0.1/redis.conf /data/redis/cluster/6381/redis-6381.conf

在249这台机器上,在cluster目录中建三个目录,并拷贝redis配置文件到对应目录并重新命名:

# cd /data/redis/cluster
# mkdir -p 6382
# cp /data/redis/redis-4.0.1/redis.conf /data/redis/cluster/6382/redis-6382.conf
# mkdir -p 6383
# cp /data/redis/redis-4.0.1/redis.conf /data/redis/cluster/6383/redis-6383.conf
# mkdir -p 6384
# cp /data/redis/redis-4.0.1/redis.conf /data/redis/cluster/6384/redis-6384.conf

5、配置.conf

进入上面所创建的文件,分别修改配置文件中的下面选项:

6 个节点的 .conf 配置文件内容,注意修改下面加粗字体部分的内容即可(注意注释掉的要去掉注释),其他都相同:

配置选项 选项值 说明
daemonize yes 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。
pidfile /data/redis/cluster/6379/redis-6379.pid 当redis作为守护进程运行的时候,默认情况下它会写一个 pid 到 /var/run/redis.pid 文件里面
port 6379 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
database 1 设置数据库的数目。
cluster-enabled yes 启用或停用集群
cluster-config-file /data/redis/cluster/6379/nodes-6379.conf 集群配置文件,启动时自动生成
cluster-node-timeout 15000 节点互联超时时间,单位毫秒
cluster-migration-barrier 1 这个参数表示的是,一个主节点在拥有多少个好的从节点的时候就要割让一个从节点出来。
cluster-require-full-coverage yes 如果集群中某些key space没有被集群中任何节点覆盖,集群将停止接受写入
appendonly yes 启用aof持久化方式
dir /data/redis/cluster/6379/ 节点数据持久化存放目录

6、启动Redis实例

192.168.199.249机器:

# cd /data/redis/bin
# ./redis-server /data/redis/cluster/6382/redis-6382.conf
# ./redis-server /data/redis/cluster/6383/redis-6383.conf
# ./redis-server /data/redis/cluster/6384/redis-6384.conf

192.168.199.126机器:

# cd /data/redis/bin
# ./redis-server /data/redis/cluster/6379/redis-6379.conf
# ./redis-server /data/redis/cluster/6380/redis-6380.conf
# ./redis-server /data/redis/cluster/6381/redis-6381.conf

启动之后用 PS 命令查看实例启动情况:

root     13646     1  0 16:20 ?        00:00:10 ./redis-server 192.168.199.249:6382 [cluster]
root     13651     1  0 16:20 ?        00:00:10 ./redis-server 192.168.199.249:6383 [cluster]
root     13656     1  0 16:20 ?        00:00:10 ./redis-server 192.168.199.249:6384 [cluster]
root     16600     1  0 16:21 ?        00:00:10 ./redis-server 192.168.199.126:6379 [cluster]
root     16605     1  0 16:21 ?        00:00:10 ./redis-server 192.168.199.126:6380 [cluster]
root     16610     1  0 16:21 ?        00:00:10 ./redis-server 192.168.199.126:6381 [cluster]

注意: 启动完毕后, 6 个 Redis 实例尚未构成集群。

7、创建集群

接下来准备创建集群

安装 ruby 和 rubygems(注意:我们安装的是Ruby 2.4.2版本)

在/data目录下创建ruby目录,下载并安装ruby

# mkdir /data/ruby
# wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz
# tar -zxvf ruby-2.4.2.tar.gz
# cd ruby-2.4.2
# ./configure --prefix=/usr/local --disable-install-doc --with-opt-dir=/usr/local/lib
# make && make install

检查 ruby 版本:

# ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]

安装过程中可能会出一些问题,如果安装不成功,请参考(Redis集群配置-配置过程中出现的问题及解决方案)解决。

gem 安装 redis ruby 接口:

# gem install redis

Redis集群配置_第1张图片

安装成功。

安装过程中可能会出一些问题,如果安装不成功,请参考(Redis集群配置-配置过程中出现的问题及解决方案)解决。

执行 Redis 集群创建命令(只需要在其中一个节点上执行一次则可)

redis-trib create --replicas 1 192.168.199.249:6382 192.168.199.249:6383 192.168.199.249:6384 192.168.199.126:6379 192.168.199.126:6380 192.168.199.126:6381

结果为:

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.199.249:6382
192.168.199.126:6379
192.168.199.249:6383
Adding replica 192.168.199.126:6380 to 192.168.199.249:6382
Adding replica 192.168.199.249:6384 to 192.168.199.126:6379
Adding replica 192.168.199.126:6381 to 192.168.199.249:6383
M: b575ef6a2ffc2e7e2b977d1bcb3587f97f957828 192.168.199.249:6382
   slots:0-5460 (5461 slots) master
M: a0977842f5194d16f427419b401243e49fb2ba48 192.168.199.249:6383
   slots:10923-16383 (5461 slots) master
S: aa92a3c7a08d29019402a36a2b7fb3bc0c73cf79 192.168.199.249:6384
   replicates cf01b1a4aca0ba77f23707a52b20018b0f29dda9
M: cf01b1a4aca0ba77f23707a52b20018b0f29dda9 192.168.199.126:6379
   slots:5461-10922 (5462 slots) master
S: f1b2d5d22f76a75036e6dffad8a7ae416eeac22e 192.168.199.126:6380
   replicates b575ef6a2ffc2e7e2b977d1bcb3587f97f957828
S: c37f94975d579f438393c8882ec1341ec7bbc44b 192.168.199.126:6381
   replicates a0977842f5194d16f427419b401243e49fb2ba48
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 192.168.199.249:6382)
M: b575ef6a2ffc2e7e2b977d1bcb3587f97f957828 192.168.199.249:6382
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: c37f94975d579f438393c8882ec1341ec7bbc44b 192.168.199.126:6381
   slots: (0 slots) slave
   replicates a0977842f5194d16f427419b401243e49fb2ba48
S: aa92a3c7a08d29019402a36a2b7fb3bc0c73cf79 192.168.199.249:6384
   slots: (0 slots) slave
   replicates cf01b1a4aca0ba77f23707a52b20018b0f29dda9
M: a0977842f5194d16f427419b401243e49fb2ba48 192.168.199.249:6383
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: f1b2d5d22f76a75036e6dffad8a7ae416eeac22e 192.168.199.126:6380
   slots: (0 slots) slave
   replicates b575ef6a2ffc2e7e2b977d1bcb3587f97f957828
M: cf01b1a4aca0ba77f23707a52b20018b0f29dda9 192.168.199.126:6379
   slots:5461-10922 (5462 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.

最后一行信息表示集群中的 16384 个槽都有至少一个主节点在处理, 集群运作正常。

集群创建过程说明:

  1. 给定 redis-trib 程序的命令是 create , 这表示我们希望创建一个新的集群;
  2. 这里的 –replicas 1 表示每个主节点下有一个从节点;
  3. 之后跟着的其它参数则是实例的地址列表,程序使用这些地址所指示的实例来创建新集群;总的来说,以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。接着, redis-trib 会打印出一份预想中的配置给你看,如果你觉得没问题的话(注意核对主从关系是否是你想要的),就可以输入 yes , redis-trib 就会将这份配置应用到集群当中。

根据集群创建信息,其主从结构如下:

192.168.199.249:6382 192.168.199.126:6380
192.168.199.126:6379 192.168.199.249:6384
192.168.199.249:6383 192.168.199.126:6381

你可能感兴趣的:(分布式缓存,Redis)