Redis集群搭建

文章目录
  1. 1. Redis主从复制
  2. 2. 三主三从三哨兵集群模式
    1. 2.1. 环境准备
    2. 2.2. 修改配置文件
    3. 2.3. 创建集群
    4. 2.4. 哨兵搭建

此文将对Redis的各种集群搭建方式稍作介绍

Redis主从复制

此处使用 4.0.2 的版本,搭建一主两从的Redis集群。

环境准备

此处下载redis-4.0.2.tar.gz,解压之后,编译源码进行安装。

1
2
3
4
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar -zxvf redis-4.0.2.tar.gz
$ cd redis-4.0.2
$ make && make install

在用户家目录下新建redis相关目录

1
2
3
4
5
$ cd ~
$ make redis
$ cd redis
$ mkdir master
# mkdir slave

然后拷贝redis-4.0.2目录中的redis.conf配置文件到master,修改为redis_master.conf,slave中拷贝两份,分别命名为redis_slave1.conf,redis_slave2.conf。

接下来修改配置文件内容(只贴出关键几个点,其他辅助内容请读者自行修改):redis_master.conf

1
2
port 7000
daemonize yes

redis_slave1.conf

1
2
3
port 7001
daemonize yes
slaveof localhost 7000

redis_slave2.conf

1
2
3
port 7002
daemonize yes
slaveof localhost 7000

分别启动三个节点:

1
2
3
$ ./redis-4.0.2/src/redis-server ./master/redis_master.conf
$ ./redis-4.0.2/src/redis-server ./slave/redis_slave1.conf
$ ./redis-4.0.2/src/redis-server ./slave/redis_slave2.conf

登录进master节点,查看主从模式是否正常启动(主节点上能显示出两个从节点即可)

1
2
$ ./redis-4.0.2/src/redis-cli
> info replication

三主三从三哨兵集群模式

redis编译安装和上面一样

环境准备

master

1
192.168.10.100:6380,192.168.10.100:6381,192.168.10.100:6382

slave

1
192.168.10.100:6383,192.168.10.100:6384,192.168.10.100:6385

sentinel

1
192.168.10.100:26380,192.168.10.100:26381,192.168.10.100:26382

修改配置文件

手动在服务器上新建6380,6381,6382,6383,6384,6385几个目录,将redis.conf配置文件每个目录拷贝一份(批量拷贝文件时,最好参考linux中xargs命令;当然,也可以cp多执行几次)。

redis.conf配置文件修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 端口分别为6380,6381,6382,6383,6384,6385
port 6380
# 默认端口为127.0.0.1,改为本机地址则为任意服务器都可以访问,若只指定服务器访问,则改为指定服务器ip即可,由于当前是一台服务器上的伪集群,所以配置本机ip地址。
bind 192.168.10.100
# Redis后台运行
daemonize yes
# pidfile文件对应存放目录(redis节点进程号)
pidfile /home/admin/redis/cluster/6380/redis.pid
# 操作日志
logfile "/home/admin/redis/cluster/6380/redis.log"
# 数据文件存放目录
dir /home/admin/redis/cluster/6380/
# 是否开启集群(重点)
cluster-enabled yes
# 集群节点配置,集群首次启动自动生成
cluster-config-file nodes.conf
# 集群节点连接超时时间
cluster-node-timeout 15000
# aof日志开启,可做为日志记录,也可借此恢复数据
appendonly yes

其他节点类似。

然后启动每一个节点

1
2
3
4
5
6
$ ./redis-4.0.2/src/redis-server ./cluster/7000/redis.conf
$ ./redis-4.0.2/src/redis-server ./cluster/7001/redis.conf
$ ./redis-4.0.2/src/redis-server ./cluster/7002/redis.conf
$ ./redis-4.0.2/src/redis-server ./cluster/7003/redis.conf
$ ./redis-4.0.2/src/redis-server ./cluster/7004/redis.conf
$ ./redis-4.0.2/src/redis-server ./cluster/7005/redis.conf

创建集群

这里创建集群借助于redis自己提供的一个集群创建工具redis-trib.rb(依赖于ruby环境),Redis 5.*的集群构建工具依赖于g++环境

1
$ ./redis-4.0.2/src/redis-trib.rb create --replicas 1 192.168.10.100:6380 192.168.10.100:6381 192.168.10.100:6382 192.168.10.100:6383 192.168.10.100:6384 192.168.10.100:6385

根据提示完成集群创建

接下来验证集群是否搭建成功,连接其中一个节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ ./redis-4.0.2/src/redis-cli -h 192.168.10.110 -p 6380
> cluster nodes
dcebbc47abd482363f221020dd1be714a498b841 192.168.10.110:6382 master - 0
1524568524063 3 connected 10923-16383
33eaf24ca33b4f5bcc37c2a7434bddaf5432f057 192.168.10.110:6380 myself,master - 0 0 1
connected 0-5460
51ed0849bf29de0221eb3b9b4ccbebfd341593ad 192.168.10.110:6384 slave
409b146c1fc86acfd6198c491cf77eaf8c8c7c04 0 1524568525066 5 connected
e29d4537e924f0e29f5155536a636b35a44a8c24 192.168.10.110:6383 slave
33eaf24ca33b4f5bcc37c2a7434bddaf5432f057 0 1524568523562 4 connected
dc4f070c42f9002e1c54bb6019ee4c34331570cc 192.168.10.110:6385 slave
dcebbc47abd482363f221020dd1be714a498b841 0 1524568523062 6 connected
409b146c1fc86acfd6198c491cf77eaf8c8c7c04 192.168.10.110:6381 master - 0
1524568524063 2 connected 5461-10922

输入info replication可查看节点信息。

哨兵搭建

新建sentinel/26380,26381,26382目录,将redis家目录下的sentinel.conf文件拷贝到每个目录中

sentinel.conf

1
2
3
4
5
6
7
8
9
bind 192.168.10.100
port 26380
daemonize yes
dir "/home/admin/redis/cluster/sentinel/26380"
# 故障转移配置
# 表示哨兵集群中,至少有两个节点认为Redis节点挂掉,则将节点从集群中剔除
sentinel monitor mymaster 192.168.10.100 6380 2
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0

其他的类似

启动哨兵

1
2
3
$ ./redis-4.0.2/src/redis-sentinel ./cluster/sentinel/26380/sentinel.conf
$ ./redis-4.0.2/src/redis-sentinel ./cluster/sentinel/26381/sentinel.conf
$ ./redis-4.0.2/src/redis-sentinel ./cluster/sentinel/26382/sentinel.conf

查看哨兵节点信息

1
2
3
4
5
6
7
8
$ ./redis-4.0.2/src/redis-cli -h 192.168.10.110 -p 26380
> info Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=cpicmaster,status=ok,address=192.168.10.110:6380,slaves=1,sentinels=3

如果文章对你有帮助,欢迎点击上方按钮打赏作者