Redis主从复制
此处使用 4.0.2 的版本,搭建一主两从的Redis集群。
环境准备
从此处下载redis-4.0.2.tar.gz,解压之后,编译源码进行安装。
$ 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相关目录
$ 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
port 7000
daemonize yes
redis_slave1.conf
port 7001
daemonize yes
slaveof localhost 7000
redis_slave2.conf
port 7002
daemonize yes
slaveof localhost 7000
分别启动三个节点:
$ ./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节点,查看主从模式是否正常启动(主节点上能显示出两个从节点即可)
$ ./redis-4.0.2/src/redis-cli
> info replication
三主三从三哨兵集群模式
redis编译安装和上面一样
环境准备
master
192.168.10.100:6380,192.168.10.100:6381,192.168.10.100:6382
slave
192.168.10.100:6383,192.168.10.100:6384,192.168.10.100:6385
sentinel
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配置文件修改
# 端口分别为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
其他节点类似。
然后启动每一个节点
$ ./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++环境
$ ./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
根据提示完成集群创建
接下来验证集群是否搭建成功,连接其中一个节点
$ ./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
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
其他的类似
启动哨兵
$ ./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
查看哨兵节点信息
$ ./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
网友评论