【胖鱼头】基于Sentinel的Redis主从分片集群搭建
2016-03-11 16:24
966 查看
Redis架构
如上图,每组Redis实例采用1主2从实现高可用,通过3组集群做分片实现负载均衡,部署3个Sentinel实例对每个Redis节点做监控。
Redis部署方案
使用三台服务器(开发环境为192.168.192.1, 192.168.192.2, 192.168.192.3),每台服务器部署3个Redis实例(端口为6380,6381,6382),同时每台机器部署一个Sentinel监控(端口为26380)。应用程序通过Jedis在客户端做hash实现分片。如下图:Redis安装
安装redis需安装GCC编译器,若系统已安装则跳过此步骤yum install -y gcc g++ gcc-c++ make
安装redis,在3台机器上分别安装
wget http://download.redis.io/releases/redis-3.0.7.tar.gz tar -xzvf redis-3.0.7.tar.gz cd redis-3.0.7 make MALLOC=libc #3.0.5版本不需要增加MALLOC=libc参数 make install #此命令可以不执行,执行此命令将Redis命令安装到/usr/local/bin/目录
在192.168.192.1服务器上配置redis实例
cd /usr/local/ mkdir redis cd redis mkdir redis-6380 mkdir redis-6381 mkdir redis-6382 mkdir sentinel-26380
创建并编辑redis-6380/redis.conf文件: vi redis-6380/redis.conf
daemonize yes appendonly yes port 6380 requirepass football masterauth football pidfile /usr/local/redis/redis-6380/redis.pid logfile /usr/local/redis/redis-6380/redis-6380.log dir /usr/local/redis/redis-6380 dbfilename dump-6380.rdb appendfilename appendonly-6380.aof
创建并编辑redis-6381/redis.conf文件: vi redis-6381/redis.conf
daemonize yes appendonly yes port 6381 requirepass football masterauth football pidfile /usr/local/redis/redis-6381/redis.pid logfile /usr/local/redis/redis-6381/redis-6381.log dir /usr/local/redis/redis-6381 dbfilename dump-6381.rdb appendfilename appendonly-6381.aof slaveof 192.168.192.2 6381
创建并编辑redis-6382/redis.conf文件: vi redis-6382/redis.conf
daemonize yes appendonly yes port 6382 requirepass football masterauth football pidfile /usr/local/redis/redis-6382/redis.pid logfile /usr/local/redis/redis-6382/redis-6382.log dir /usr/local/redis/redis-6382 dbfilename dump-6382.rdb appendfilename appendonly-6382.aof slaveof 192.168.192.3 6382创建并编辑sentinel-26380/sentinel.conf文件: vi sentinel-26380/sentinel.conf
port 26380 dir /usr/local/redis/sentinel-26380 sentinel monitor master-6380 192.168.192.1 6380 2 sentinel monitor master-6381 192.168.192.2 6381 2 sentinel monitor master-6382 192.168.192.3 6382 2 sentinel down-after-milliseconds master-6380 30000 sentinel down-after-milliseconds master-6381 30000 sentinel down-after-milliseconds master-6382 30000 sentinel parallel-syncs master-6380 1 sentinel parallel-syncs master-6381 1 sentinel parallel-syncs master-6382 1 sentinel failover-timeout master-6380 180000 sentinel failover-timeout master-6381 180000 sentinel failover-timeout master-6382 180000Redis目录结构:
redis
redis-6380
redis.conf
redis-6381
redis.conf
redis-6382
redis.conf
sentinel-26380
sentinel.conf将redis目录复制到192.168.192.2及192.168.192.3上
scp -r /usr/local/redis root@192.168.192.2:/usr/local/
scp -r /usr/local/redis root@192.168.192.3:/usr/local/修改192.168.192.2配置文件
redis-6380/redis.conf:
daemonize yes appendonly yes port 6380 requirepass football masterauth football pidfile /usr/local/redis/redis-6380/redis.pid logfile /usr/local/redis/redis-6380/redis-6380.log dir /usr/local/redis/redis-6380 dbfilename dump-6380.rdb appendfilename appendonly-6380.aofslaveof 192.168.192.1 6380redis-6381/redis.conf:
daemonize yes
appendonly yes
port 6381
requirepass football
masterauth football
pidfile /usr/local/redis/redis-6381/redis.pid
logfile /usr/local/redis/redis-6381/redis-6381.log
dir /usr/local/redis/redis-6381
dbfilename dump-6381.rdb
appendfilename appendonly-6381.aofredis-6382/redis.conf:
daemonize yes
appendonly yes
port 6382
requirepass football
masterauth football
pidfile /usr/local/redis/redis-6382/redis.pid
logfile /usr/local/redis/redis-6382/redis-6382.log
dir /usr/local/redis/redis-6382
dbfilename dump-6382.rdb
appendfilename appendonly-6382.aof
slaveof 192.168.192.3 6382修改192.168.192.3配置文件
redis-6380/redis.conf
daemonize yes appendonly yes port 6380 requirepass football masterauth football pidfile /usr/local/redis/redis-6380/redis.pid logfile /usr/local/redis/redis-6380/redis-6380.log dir /usr/local/redis/redis-6380 dbfilename dump-6380.rdb appendfilename appendonly-6380.aofslaveof 192.168.192.1 6380redis-6381/redis.conf
daemonize yes appendonly yes port 6381 requirepass football masterauth football pidfile /usr/local/redis/redis-6381/redis.pid logfile /usr/local/redis/redis-6381/redis-6381.log dir /usr/local/redis/redis-6381 dbfilename dump-6381.rdb appendfilename appendonly-6381.aof slaveof 192.168.192.2 6381redis-6382/redis.conf
daemonize yes
appendonly yes
port 6382
requirepass football
masterauth football
pidfile /usr/local/redis/redis-6382/redis.pid
logfile /usr/local/redis/redis-6382/redis-6382.log
dir /usr/local/redis/redis-6382
dbfilename dump-6382.rdb
appendfilename appendonly-6382.aof在3台服务器上逐个启动redis实例
redis-server ./redis-6380/redis.conf redis-server ./redis-6381/redis.conf redis-server ./redis-6382/redis.conf在3台服务器上启动sentinel实例
nohup redis-sentinel ./sentinel-26380/sentinel.conf > ./sentinel-26380/sentinel.log 2>&1 &
相关文章推荐
- redis安装问题小结
- 使用 Redis 和 Python 构建一个共享单车的应用程序
- Redis偶发连接失败案例实战记录
- Redis中实现查找某个值的范围
- redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- Redis sort 排序命令详解
- 用Redis实现微博关注关系
- redis中修改配置文件中的端口号 密码方法
- 在Ruby on Rails上使用Redis Store的方法
- Redis和Memcache的区别总结
- 在Node.js应用中使用Redis的方法简介
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 从MySQL到Redis的简单数据库迁移方法
- 为啥懒 Redis 是更好的 Redis
- 利用Redis实现SQL伸缩的方法