1 Redis主从HA环境拓扑
图 1 Redis主从(Sentinel)拓扑图
2 部署环境
OS: | Ubuntu 14.04.2 LTS |
Kernel: | 3.13.0-48-generic |
JDK: | 1.7.0_60-b19(HotSpot 64-bit) |
Redis: | 2.8.12 |
表 1 部署环境
Redis-master | m3.large(vCPU 2, Mem 7.5GiB) |
Redis-slaver | m3.large(vCPU 2, Mem 7.5GiB) |
Redis-sentinel-master | m3.large(vCPU 2, Mem 7.5GiB) |
Redis-sentinel-slaver1 | m3.large(vCPU 2, Mem 7.5GiB) |
Redis-sentinel-slaver2 | m3.large(vCPU 2, Mem 7.5GiB) |
表 2 实例机型
3 Redis主从HA环境部署
3.1 Redis下载
针对上面的压缩包添加一些自动化脚本重新打包上传到S3.
Redis下载地址:
3.2 Redis配置
3.2.1.1 获取压缩包,解压。
- wget https://s3.cn-north-1.amazonaws.com.cn/personal/liguangpu/db/config-redis.tar.gz
- tar zvxf config-redis.tar.gz
3.2.2 编译链接 redis源码:
- 解压redis-2.8.12.tar.gz,进入解压后目录,执行make(参照install.txt说明文档)
- make完成后,进入src目录,执行 sudo cp redis-server redis-cli redis-sentinel /usr/local/bin
- 修改系统参数,当系统可使用内存被占满时,启用虚拟内存,不至于服务终止。
- sudo vim /etc/sysctl.conf
- 添加 vm.overcommit_memory=1 保存退出
- sudo sysctl vm.overcommit_memory=1
3.2.3 开始创建配置并启动redis
- 在Redis-master实例上,创建主节点配置,并启动
- 进入config-redis目录;
- 执行create_node.sh脚本,根据模板创建主节点配置
- ./create_node.sh -c 6379
- 启动Redis-master上的主节点
- ./startAll.sh 6379
- 在Redis-slaver实例上,创建从节点配置,并启动
- 进入config-redis目录;
- 执行create_node.sh脚本,根据模板创建主节点配置
- ./create_node.sh -c 6379 master_ip master_port
- 修改6379/redis.conf文件,将 #slaveof一行前面的#删除,并将上一行注释掉
- 启动Redis-slaver上的从节点
- ./startAll.sh 6379
3.3 Sentinel配置
3.3.1 创建sentinel配置并启动1(3)个sentinel实例。
- 将上面创建Redis-slaver过程中生成的config-redis/6379/sentinel.conf 复制到主机上
- 修改对应的端口号(不同主机可以用同一个端口号,无需修改)
- 如果只启动1个sentinel,那么需要将sentinel monitor开头的一行最后的2改为1
3.3.2 配置监控脚本processor-monitor.sh
- 修改processor-monitor.sh,设置export PATH=...
- 执行SHELL命令 echo $PATH, 复制SHELL输出结果
- 将结果替换processor-monitor.sh中的第二行 export PATH=结果
- 添加crontab任务,周期执行processor-monitor.sh脚本,检测redis是否运行正常
- crontab -e (接着选3 --- /usr/bin/vim.basic)
- 在行末添加计划任务语句,例如(每隔10分钟执行processor-monitor.sh):
- */10 * * * * sh /home/cloud/redis-cluster/config-redis/processor-monitor.sh 6379 > /home/cloud/redis-cluster/config-redis/crontab.log 2>&1
在config-redis/package/目录下
在config-redis/tutorial/目录下