####
本文档包括两种redis+sentinel的部署方式,docker的和物理机的。
####
####设想
#192.168.137.152
docker(redis-server) myresque 192.168.137.142
docker(redis-sentinel) sentinel152
#192.168.137.153
docker(redis-sentinel)
sentinel153
#192.168.137.161
docker(redis-server)mymaster
docker(redis-sentinel) sentinel161
####参考材料
http://www.redis.cn/topics/sentinel.html
####步骤
##基础环境准备
#服务器时间同步
crontab -e
*/1 * * * * ntpdate 0.uk.pool.ntp.org;hwclock -w
#更新yum源头
yum install wget -y
wget
http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum install ntpdate -y
#新增yum源,新增清华的docker镜像-使用帮助-docker
https://mirrors.tuna.tsinghua.edu.cn/help/docker/
yum install docker-engine -y
#拉取redis镜像-搜索resis-版本-拉取
https://hub.daocloud.io/
#主机互信
ssh-keygen -t rsa
#docker容器时间和宿主机时间不同步(时区问题)-登录每个docker容器执行,当然也可以启动容器时候加参数
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1、/data/
sentinel.conf docker内的路径
logfile "/data/log/
sentinel
.log"
protected-mode no
sentinel monitor mymaster
192.168.137.161
6379 2sentinel down-after-milliseconds mymaster 10000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1
#说明:
格式:
sentinel <选项的名字> <主服务器的名字> <选项的值>
第一行:sentinel监控
192.168.137.161 端口6379 当2个sentinel同意时候,才能进行故障转移
第二行:
down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数。
第四行:parallel-syncs 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长
2、先在本地的目录建立sentinnel.conf文件,要不然无法启动redis-sentinel
测试环境的目录为/home/data1/sentinel.conf
3、运行sentinel方法
方法一:
redis-sentinel /data/sentinel.conf
方法二:
redis-server /data/sentinel.conf --sentinel
#192.168.137.161-sentinel
docker run --name sentinel161 -p 26379:26379 -v /home/data1:/data -d daocloud.io/library/redis:3.2.8 redis-sentinel /data/sentinel.conf
docker的启动脚本
#redis.conf
logfile "/data/log/redis.log"
protected-mode no
#192.168.137.161-mymaster
docker run -p 6379:6379 -v /home/data:/data --name mymaster -d daocloud.io/library/redis:3.2.8
redis-server /data
/redis.conf
docker exec -it zealous_noyce
redis-cli -h 192.168.137.152 -p 6379
get foo152
4、准备主机192.168.137.152
重复“##基础环境准备”的工作
#redis.conf
logfile "/data/log/redis.log"
protected-mode no
slaveof 192.168.137.161 6379
#启动redis-server
docker run -p 6379:6379 -v /home/data:/data --name myresque -d daocloud.io/library/redis:3.2.8
redis-server /data
/redis.conf
#启动redis-sentinel
docker run --name sentinel152 -p 26379:26379 -v /home/data1:/data -d daocloud.io/library/redis:3.2.8 redis-sentinel /data/sentinel.conf
5、准备主机192.168.137.153
重复“##基础环境准备”的工作
#启动redis-sentinel
重复1/2/3点
docker的启动脚本
#192.168.137.153-sentinel
docker run --name sentinel153 -p 26379:26379 -v /home/data1:/data -d daocloud.io/library/redis:3.2.8 redis-sentinel /data/sentinel.conf
------------------------------------
####本地物理机启动redis3.2.8
##参考材料
http://blog.csdn.net/pi9nc/article/details/17711283
#192.168.137.152
docker(redis-server) myresque 192.168.137.142
docker(redis-sentinel) sentinel152
#192.168.137.153
docker(redis-sentinel)
sentinel153
#192.168.137.161
docker(redis-server)mymaster
docker(redis-sentinel) sentinel161
$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz$ tar xzf redis-3.2.8.tar.gz$ cd redis-3.2.8$ make
#如果编译报错可能是缺少gcc的问题,具体问题具体分析
yum install gcc
#集群的机器之间除了时间同步之外,还需要关闭防火墙,通过下面命令
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service
##启动redis-server
修改redis.conf
/home/data2/redis-3.2.8/src/redis-server /home/data2/redis-3.2.8/redis.conf &
/home/data2/redis-3.2.8/src/redis-cli -h 192.168.137.161 -p 6379
/home/data2/redis-3.2.8/src/
redis-server
/home/data2/redis-3.2.8/sentinel.conf
--sentinel
>/home/data2/redis-3.2.8/log/sentinel.log &
##启动redis-sentinel
/home/data2/redis-3.2.8/src/redis-sentinel /home/data2/redis-3.2.8/sentinel.conf >/home/data2/redis-3.2.8/log/sentinel.log &
##配置归纳
#redis.conf
master-redis
logfile "/home/data2/redis-3.2.8/log/redis.log"
protected-mode no
slave-redis
logfile "/home/data2/redis-3.2.8/log/redis.log"
protected-mode no
slaveof 192.168.137.152 6379
#sentinel.conf
protected-mode no
sentinel monitor mymaster 192.168.137.152 6379 2
sentinel down-after-milliseconds mymaster 10000
sentinel config-epoch mymaster 1
####问题汇总
1、redis服务器主从,从服务器需要配置“slaveof masterip masterport”
2、sentinel其实也是一个redis服务器,和redis服务器一样,所以也有都会默认有"protected-mode "是开启,有三种办法关闭,1、设置bind,2、设置password,3、直接把protected-mode no
3、登录到redis服务器里面或者sentinel里面可以使用命令,info,sentinel masters,sentinel slaves