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

Redis之Sentinel高可用安装部署

2017-02-23 00:48 573 查看

背景:

之前通过Redis Sentinel 高可用实现说明Redis 复制、Sentinel的搭建和原理说明大致已经介绍了sentinel的原理和实现,本文再次做个简单的回顾,具体的信息见前面的两篇文章说明。本文要实现的sentinel是通过2个redis数据节点和3个sentinel节点来达到高可用,目标是希望标准化Sentinel的安装部署。

环境:

Redis版本:Redis-3.2.8

系统版本:Ubuntu 14.04

服务器 :192.168.1.55,192.168.1.56,192.168.1.57;55/56包含redis和sentinel节点,57只有sentinel节点,初始化设置55为Master。

安装(规范化):

源码安装需要安装依赖包:apt-get install make gcc tcl

下载

wget http://download.redis.io/releases/redis-3.2.8.tar.gz[/code] 
安装:

1: 解压到/usr/local/src 目录:放源码包
root@redis1:/usr/local/src# tar zxvf redis-3.2.8.tar.gz
root@redis1:/usr/local/src# ls -lh
drwxrwxr-x 6 root root 4.0K  2月 22 15:01 redis-3.2.8

2:创建目录:/usr/local/redis,编译安装到目录/usr/local/redis/ --放执行文件
make PREFIX=/usr/local/redis install

3:程序做软连接到bin目录,方便直接执行
ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli
ln -s /usr/local/redis/bin/redis-sentinel /usr/local/bin/redis-sentinel
ln -s /usr/local/redis/bin/redis-server /usr/local/bin/redis-server


配置:

1:复制配置文件,在源码包里有sentinel.conf和redis.conf文件,复制到/etc/redis/目录下,如果有多个实例,建议改名,如本实例用的redis端口是7021,sentinel是17021:
cp /usr/local/src/redis-3.2.8/redis.conf /etc/redis/redis_7021.conf
cp /usr/local/src/redis-3.2.8/sentinel.conf /etc/redis/sentinel_17021.conf
后面会给出该配置文件的相关参数

2:做成一个服务,在源码包里的utils目录下的redis_init_script文件复制到/etc/init.d/下,并且改名成redis,以后就可以通过这个程序进行关闭和开启了。
cp /usr/local/src/redis-3.2.8/utils/redis_init_script /etc/init.d/redis

3:修改/etc/init.d/redis文件(后面会给出redis程序的代码),使得开启和关闭,以及关闭的时候需要输入密码(假设redis需要认证)。


redis_7021.conf信息:

mkdir /var/run/redis/
mkdir /var/log/redis/
mkdir /var/lib/redis_7021
mkdir /var/lib/sentinel_17021


View Code
到此单机(1.55)上的redis和sentinel已经安装完成,接着就可以开启服务了。

[b]开启、关闭服务
[/b]

①:切勿用root账号开启服务,因为redis很容易对服务器进行进行root账号的提取,具体重现可以看利用Redis对linux服务器root提权。所以现在需要设置一个专门的账号来启动,并且对相关目录进行授权。

1:添加一个用户
useradd redis

2:对配置文件里的相关目录进行授权
chown -R redis.redis /var/lib/redis_7021/
chown -R redis.redis /var/lib/sentinel_17021
chown -R redis.redis /var/log/redis/
chown -R redis.redis /var/run/redis/
chown -R redis.redis /etc/redis/


②:开启和关闭服务

1:redis 开启、关闭
root@redis1:~# /etc/init.d/redis start
Starting Redis server...

root@redis1:~# /etc/init.d/redis stop
passwd: *********************
Stopping ...
Redis stopped

2:sentinel 开启、关闭
root@redis1:~# su redis -c "redis-sentinel /etc/redis/sentinel_17021.conf"

root@redis2:~# redis-cli -h 192.168.1.55 -p 17021
192.168.1.55:17021>REDIS_SHUTDOWN

3:通过ps查看这些进程是否都是通过redis用户运行。


③:若sentinel进程用另一个账号的话,(进一步防止redis用户修改sentinel的文件),则需要

useradd sentinel

chown -R sentinel.sentinel /var/lib/sentinel_17021

chown root.root /etc/redis/
chown -R sentinel.sentinel /etc/redis/sentinel_17021.conf
chmod 664 /etc/redis/sentinel_17021.conf

chgrp sentinel /var/log/redis/
chmod 775 /var/log/redis/
#删除日志文件或则执行下面2步骤
#chown -R sentinel.sentinel /var/log/redis/sentinel_17021.log
#chmod 664 /var/log/redis/sentinel_17021.log

#如果配置了脚本,也需要修改权限
chgrp sentinel /opt/bin/notify.py


这样设置了之后,开启redis不变,开启sentine需要执行:

su sentinel -c "redis-sentinel /etc/redis/sentinel_17021.conf"


关闭他们的方法不变。

到此,redis和sentinel在一台机器(1.55)上已经安装完成。另一台机器(1.56)按照上面的方法完全执行一次即可,最后一台(1.57)只要按照上面装好sentinel即可。redis_7021.conf注意相关参数(IP)的修改,sentinel_17021完全不需要修改。这里需要注意的是:sentinel需要在55和56做好主从之后才能开启,即:在56上执行slaveof,搭建好主从之后,再开启3个sentinel监控服务,一个高可用的(主从自动切换)搭建完成。可以通过在master上执行debug sleep命令来模拟故障转移,来测试sentinel故障转移是否搭建成功:

debug sleep 30


如果上面搭建有问题或则想知道sentinel运行的原理,可以参考上面给出的两篇文章。

总结:

本文规范了编译安装redis的方式,方便后期管理和使用,sentinel主要的细节还是要看Redis Sentinel 高可用实现说明Redis 复制、Sentinel的搭建和原理说明。后续计划介绍一下redis cluster的部署、安装、维护等相关说明,先留个坑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: