您的位置:首页 > 数据库 > Redis

【胖鱼头】基于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 180000
Redis目录结构:
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 6381
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在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 sentinel jedis