(九)centos7案例实战——redis一主二从三哨兵高可用服务搭建
创始人
2024-02-10 07:04:27

前言

本节内容是使用centos服务器搭建一套高可用的redis服务,采用的是一主二从三哨兵的模式。
需要注意的是搭建集群的过程中,我们要保证集群服务器之间可以相互访问,并且redis所需要访问的端口是开放的。我们从redis的下载,源码的编译,到redis的集群部署搭建,redis服务高可用的演示以及将redis安装成为一个服务都有详细的过程记录。使redis哨兵模式的搭建变得如此轻松。

  • 下载redis安装包并上传到服务器解压

①下载redis安装包

Download | Redis

②上传安装包到服务器

③解压redis安装包

命令:tar -zxvf redis-6.0.16.tar.gz

  • 编译安装redis

①编译redis安装包

②出现编译错误,升级gcc

③查看gcc版本

 gcc -v

④升级gcc到9的版本

yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutil

 

⑤切换到gcc 9.3版本,临时使用

scl enable devtoolset-9 bash

 ⑥设置永久使用gcc9.3版本

 ⑦重新编译redis,没有错误,编译成功 

⑧将redis安装到指定目录

make install PREFIX=/usr/local/redis

⑨将配置文件redis.conf、sentinel.conf及utils文件夹复制到redis安装目录/usr/local/redis

cp redis.conf /usr/local/redis/redis.confcp sentinel.conf /usr/local/redis/sentinel.confcp -r utils/ /usr/local/redis/utils

  • 启动redis并测试

①redis启动

./redis-server /usr/local/redis/redis.conf

②连接客户端测试

 ./redis-cli

  •  修改redis.conf与sentinel.conf配置

①redis.conf

#端口
port 6379
#ip配置
bind 0.0.0.0
#后台执行
daemonize yes
#pid
pidfile "/var/run/redis.pid"
#标记是否是从节点
#replicaof 192.168.0.57 6379
#日志记录文件
logfile "/data/redis/log/redis.log"
#RDB数据记录文件
dbfilename dump.rdb
save 900 1 #表示900秒内如果至少有1个 key 的值变化,则保存
save 300 10 #表示300秒内如果至少有10个key 的值变化,则保存
save 60 10000 #表示60秒内如果至少有10000个 key 的值变化则保存
#存储目录
dir "/data/redis/data"
#开启AOF持久化方式
appendonly yes
#追加文件名称
appendfilename "appendonly.aof"
#aof持久化策略的配置
appendfsync everysec
#RDB-AOF混合持久化
aof-use-rdb-preamble yes
#redis访问密码
requirepass 5Bw3PSNvnK8UiH8Y
#从节点配置主节点密码
masterauth 5Bw3PSNvnK8UiH8Y

②sentinel.conf

#绑定的ip地址
bind 0.0.0.0
#是否后台运行
daemonize yes
#是否开启密码保护模式
protected-mode yes
#sentinel端口
port 26379
#进程ID
pidfile "/var/run/sentinel.pid"
#日志文件名
logfile "sentinel.log"
#日志目录
dir "/data/redis/log"
# ip
sentinel announce-ip 192.168.0.56
# 主节点,2代表选举的票数
sentinel monitor mymaster 192.168.0.56 6379 2
# 哨兵连接主节点多长时间没有响应就代表主节点宕机
sentinel down-after-milliseconds mymaster 30000
# 在进行同步的过程中,多长时间完成算有效,系统默认值是 3 分钟。
sentinel failover-timeout mymaster 60000
# 故障转移时,最多有多少个从节点对新的主节点进行同步
sentinel parallel-syncs mymaster 1
# 密码配置
sentinel auth-pass mymaster 5Bw3PSNvnK8UiH8Y

  • 同步redis安装包到其它服务器

 ①同步redis安装包到192.168.0.57服务器

 ②同步redis安装包到192.168.0.59服务器

  • 修改其它服务器redis.conf与sentinel.conf的配置信息

①其它服务器redis.conf

 

 ②其它服务器sentinel.conf

  • 根据配置文件创建redis存储目录和日志目录

  • 启动redis节点 

①启动所有服务器节点,执行命令

./redis-server /usr/local/redis/redis.conf

 

②连接redis,查看节点状态

命令:

./redis-cli -h 192.168.0.56 -p 6379

 ③启动所有服务器哨兵节点,执行命令

./redis-sentinel /usr/local/redis/sentinel.conf

 ④连接redis,查看哨兵节点状态

命令:

./redis-cli -h 192.168.0.56 -p 26379

  • 测试redis的高可用

①关闭主节点

 ②查看其它节点状态

③重新启动宕机的redis

 

  •  redis设置为服务并开机自启

①在linux启动目录/etc/init.d下创建一个redis服务脚本

#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.### BEGIN INIT INFO
# Provides:     redis_6379
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Redis data structure server
# Description:          Redis data structure server. See https://redis.io
### END INIT INFO#redis节点配置
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/usr/local/redis/redis.conf"#哨兵配置
SENTINELPORT=26379
SENTINELEXEC=/usr/local/redis/bin/redis-sentinel
SENTINELCLIEXEC=/usr/local/redis/bin/redis-cli
SENTINELPIDFILE=/var/run/sentinel.pid
SENTINELCONF="/usr/local/redis/sentinel.conf"case "$1" instart)# redis node startif [ -f $PIDFILE ]thenecho "$PIDFILE exists, process is already running or crashed"elseecho "Starting Redis server..."$EXEC $CONFfi# redis sentinel startif [ -f $SENTINELPIDFILE ]thenecho "$SENTINELPIDFILE exists, process is already running or crashed"elseecho "Starting Redis sentinel..."$SENTINELEXEC $SENTINELCONFfi;;stop)# redis node stopif [ ! -f $PIDFILE ]thenecho "$PIDFILE does not exist, process is not running"elsePID=$(cat $PIDFILE)echo "Stopping ..."$CLIEXEC -p $REDISPORT -a 5Bw3PSNvnK8UiH8Ya shutdownwhile [ -x /proc/${PID} ]doecho "Waiting for Redis to shutdown ..."sleep 1doneecho "Redis stopped"fi# redis sentinel stopif [ ! -f $SENTINELPIDFILE ]thenecho "$SENTINELPIDFILE does not exist, process is not running"elsePID=$(cat $SENTINELPIDFILE)echo "Stopping ..."$CLIEXEC -p $SENTINELPORT  shutdownwhile [ -x /proc/${PID} ]doecho "Waiting for Redis Sentinel to shutdown ..."sleep 1doneecho "Redis Sentinel stopped"fi;;*)echo "Please use start or stop as first argument";;
esac

 ②授予执行权限

命令:chmod +x /etc/rc.d/init.d/redis

③设置redis服务开机自启

命令:chkconfig redis on

④查看是否已经添加到服务

命令:chkconfig --list 

⑤redis服务操作命令

启动:systemctl start redis

查看状态:systemctl status redis

停止:systemctl st redis

结语

至此,关于redis的集群安装到这里就结束了,需要注意的是我们要保证不同服务器之间是可以相互访问,并且端口是通的。最好关闭防火墙或者提供端口访问映射,下期见。。。

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...