一、简介
官网 https://redis.io
中文官网 http://redis.cn/
通过Redis主从复制功能可以实现读写分离,一主多从的架构。
Redis Sentinel可用实现redis故障master自动切换,实现redis高可用
二、部署目标
一主两从,三哨兵
- 主 192.168.66.70:6379
- 从 192.168.66.71:6379
- 从 192.168.66.72:6379
- 哨兵 192.168.66.70:26379
- 哨兵 192.168.66.71:26379
- 哨兵 192.168.66.72:26379
三、安装Redis
- 下载redis安装包
mkdir /usr/local/redis
cd /usr/local/redis
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
- 解压压缩包
tar xzf redis-5.0.5.tar.gz
- yum 安装gcc依赖
yum install gcc -y
- 编译安装
cd redis-5.0.5
make MALLOC=libc
- 将src目录下文件加载到usr/local/bin目录下
cd src
make install
四、配置reids和sentinel服务
- 创建/etc/redis配置文件目录,/var/log/redis日志目录
mkdir /etc/redis
mkdir /var/log/redis
- 复制redis和sentinel配置文件到etc目录下
cp /usr/local/redis/redis-5.0.5/redis.conf /etc/redis/
cp /usr/local/redis/redis-5.0.5/sentinel.conf /etc/redis/
- 修改redis.conf配置文件
daemonize yes (以守护进程方式启动)
logfile "/var/log/redis/redis.log" (日志文件)
注释掉 bind 127.0.0.1 允许ip访问 默认:只能本地访问
appendonly yes:开启持久化
no-appendfsync-on-rewrite yes: 统计
- 修改sentinel.conf配置文件
daemonize yes
logfile "/var/log/redis/sentinel.log":wq
- 新建
/usr/lib/systemd/system/redis.service
文件并添加以下代码
[Unit]
Description=Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/redis.pid
ExecStart=/usr/local/redis/redis-5.0.5/src/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 新建
/usr/lib/systemd/system/redis-sentinel.service
文件并添加一下代码
[Unit]
Description=Redis-sentinel
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/redis-sentinel.pid
ExecStart=/usr/local/redis/redis-5.0.5/src/redis-sentinel /etc/redis/sentinel.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 重载系统服务
sudo systemctl daemon-reload
- 启动redis,sentinel
systemctl start redis
systemctl start redis-sentinel
五、配置一主两从,三哨兵集群
- 根据步骤三和四分别在192.168.66.70,192.168.66.71,192.168.66.72三台服务器上安装redis和sentinel服务
- 修改192.168.66.71和192.168.66.70两个从服务器的redis配置文件并重启redis服务
slaveof 192.168.31.70 6379
- 修改三个服务器中sentinel配置文件,并重启redis-sentinel服务
sentinel monitor mymaster 192.168.31.70 6379 2
六、验证
- 用redis-cli工具登录其中一个哨兵
redis-cli -p 26379
- 连接成功后运行如下命令
info
结果如下
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=192.168.66.70:6379,slaves=2,sentinels=3
-
将192.178.31.70服务器关闭,或者停止redis服务,查看sentinel日志,redis master会切换到其他服务上
image -
重新启动192.168.66.70redis服务,服务会以从节点纳入集群中
image
网友评论