分别用docker和物理机器部署redis+sentinel

####
本文档包括两种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

你可能感兴趣的:(Hadoop)