redis集群与哨兵模式安装
只少准备三台主机,进入第一台主机(一主二从)
cd /data/mxw/tools/redis_sentinel
tar xvf redis-3.2.8.tar.gz
mv redis-3.2.8 redis01
cd redis01
建立文件夹:
mkdir {db,logs,conf,bin,redis_sentinel}
编译:
make
复制文件:
cd src
for i in {redis-sentinel,redis-server,redis-cli};do cp -ap $i /data/mxw/tools/redis_sentinel/redis01/bin/;done
安装redis:
make
安装sentinel
cd ../utils/install_server.sh
安装配置:
Config file : /data/mxw/tools/redis_sentinel/redis01/conf/6389.conf
Log file : /data/mxw/tools/redis_sentinel/redis01/logs/6389.log
Data dir : /data/mxw/tools/redis_sentinel/redis01/db/6389
Executable : /data/mxw/tools/redis_sentinel/redis01/bin/redis-server
Cli Executable : /data/mxw/tools/redis_sentinel/redis01/bin/redis-cli
安装完后自动启动了redis
/data/mxw/tools/redis_sentinel/redis01/bin/redis-server 127.0.0.1:6389
从机,复制一份过去,修改一下6389.conf配置文件,加一行
slaveof 10.51.106.193(主机IP) 6389,启动从机(从机只少二台)
启动完后查看一下redis集群状态:
./redis-cli -h 10.51.106.193 info Replication (从节点查询也一样)
添加sentinel配置:
cat > /data/mxw/tools/redis_sentinel/redis01/conf/sentinel.conf << 'EOF'
daemonize yes
port 26389
dir "/data/mxw/tools/redis_sentinel/redis01/redis_sentinel/"
logfile "/data/mxw/tools/redis_sentinel/redis01/logs/redis_sentinel.log"
sentinel monitor mymaster 10.51.106.193 6389 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
EOF
启动sentinel:redis-server /data/mxw/tools/redis_sentinel/redis01/conf/sentinel.conf --sentinel
分别在从机上启动 sentinel(与主机一样)
检测:
随意机器上redis-cli -p 26389
#通过redis-cli客户端进入Sentinel
SENTINEL masters
#显示被监控的所有master以及它们的状态.
SENTINEL master mymaster
#显示指定master的信息和状态;
SENTINEL slaves mymaster
#显示指定master的所有slave以及它们的状态;
SENTINEL get-master-addr-by-name mymaster
#返回指定master的ip和端口,如果正在进行failover或者failover已经完成,将会显示被提升为master的slave的ip和端口。
SENTINEL reset mymaster
#重置某个master的状态信息及和它对应的slaves信息
#重置名字匹配该正则表达式的所有的master的状态信息,清楚其之前的状态信息,以及slaves信息。
#支持正则表达式,SENTINEL reset * 表示所有的master信息
SENTINEL failover mymaster
#强制sentinel执行failover,并且不需要得到其他sentinel的同意。但是failover后会将最新的配置发送给其他sentinel。
###Redis+Sentinel的集群重启是一件很麻烦的事情,因此不要轻易重启,重启启动是有先后顺序的
###应该先关闭所有的sentinel进程
###然后再关闭所有的redis进程
###再启动所有的redis进程
###再启动所有的sentinel进程