目录

单机版的redis安装

Redis集群搭建(主从+哨兵)

redis主从+哨兵配置完成后,使用脚本功能实现VIP漂移


单机版的redis安装

1.安装依赖

#先检查有没有gcc
gcc --version
#如果没有,就进行安装
yum install gcc -y#如果缺少tcl包,在这里安装一下(如果make test出现You need tcl 8.5 or newer in order to run the Redis test的话)
yum install tcl -y

2.获取资源,上传或者直接下载

wget http://download.redis.io/releases/redis-4.0.6.tar.gz

3.解压

tar xzvf redis-4.0.6.tar.gz

4.安装

cd redis-4.0.6#编译
makecd src# 安装到指定的目录
make install PREFIX=/usr/local/redis

如果安装的过程中,报错如下:

zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录

则运行如下命令后,再执行安装命令

make MALLOC=libc

5.将解压包中的配置文件移动到安装目录下:

mkdir /usr/local/redis/etccp redis.conf /usr/local/redis/etc/

6.修改配置文件---》这里指的是单机版的配置文件修改,主从+哨兵模式请参考文章中的专用配置

1) 修改Redis以守护进程方式启动

2)修改允许其他客户端连接登录此Redis数据库,或者改为bind 0.0.0.0

3)开启远程访问

4)设置连接登录Redis数据库密码

5)修改安装目录,存放数据库

修改总结:

#允许远程访问
bind 0.0.0.0
#关闭远程保护
protected-mode no
#添加一个密码
requirepass "123"
#后台运行
daemonize yes
#修改为你的安装目录 redis_端口号 这里主服务器端口为6379默认不动它
pidfile /home/redis/redis_6379.pid
#修改为你的安装目录
logfile /home/redis/redis.log
#修改为你的安装目录
dir /usr/local/redis/

7.启动redis

./redis-server etc/redis.conf

7.将redis服务器添加到systemctl服务器中,便于管理,centOS7.8下,redis版本为4.0.6,执行systemctl enable redis后,开机重启一直不起作用,sentinel可以正常个启动,一直不知道哪里有问题,尝试了好久都没有设置成功,试着使用redis-5.0.12版本,同样出现开机自启动不成功。

vi /usr/lib/systemd/system/redis.service

#表示基础信息
[Unit]
#描述
Description=Redis
#在哪个服务之后启动
After=network.target#表示服务信息
[Service]
Type=forking
#注意:需要和redis.conf配置文件中的信息一致
PIDFile=/var/run/redis_6379.pid
#启动服务的命令
#redis-server安装的路径 和 redis.conf配置文件的路径
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
#重新加载命令
ExecReload=/bin/kill -s HUP $MAINPID
#停止服务的命令,使用如下方式停止程序时,可以停止,但是停止后systemctl status redis
# 有failed信息,报错信息看下面的图,但是不影响使用
# ExecStop=/bin/kill -s QUIT $MAINPID
# 如果觉得看着不舒服,可以使用下面这一条代替,redis服务器端口号根据实际情况进行修改
ExecStop=/home/redis/bin/redis-cli -p 6379 shutdown
# 用于设置是否使用私有的tmp目录
# 使用ExecStop=/bin/kill -s QUIT $MAINPID,发现必须加PrivateTmp=true,才可以使用systemctl
# 正常启动程序,不加的话会报错,不使用该种方式停止服务时,不开启
PrivateTmp=true#安装相关信息
[Install]
#以哪种方式启动
WantedBy=multi-user.target
#multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

报错信息:

完整的redis.service,直接复制,修改后即可使用

vi /usr/lib/systemd/system/redis.service

[Unit]
Description=Redis
After=network.target[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/home/redis/bin/redis-server  /home/redis/etc/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
#ExecStop=/bin/kill -s QUIT $MAINPID
ExecStop=/home/redis/bin/redis-cli -a "password" -p 6379 shutdown
#PrivateTmp=True[Install]
WantedBy=mutli-user.target

附加一下哨兵的systemctl服务,哨兵服务,按照下面的配置,已经试过好多次了,下面的配置运行一切正常,不用加PIDFile,加了反而会有警告

vi /usr/lib/systemd/system/redis-sentinel.service

[Unit]
Description=Redis-sentinel
After=network.target[Service]
Type=forking
ExecStart=/home/redis/bin/redis-sentinel /home/redis/etc/sentinel.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/home/redis/bin/redis-cli -p 26379 shutdown
#PrivateTmp=true[Install]
WantedBy=multi-user.target

编辑完成后,重新加载系统服务,使配置生效

systemctl daemon-reload

命令使用:

开机启动: systemctl enable redis.service

查看服务是否设置开机启动: systemctl is-enabled redis.service

停止服务开机启动: systemctl disable redis.service

启动: systemctl start redis.service

查看状态: systemctl status redis.service

重启: systemctl restart redis.service

停止: systemctl stop redis.service

8.设置redis相关命令在任意目录下可以使用

将安装后的bin文件目录下的脚本拷贝到/usr/local/bin/目录下即可

redis-benchmark
redis-check-aof
redis-check-rdb
redis-cli
redis-sentinel
redis-server 主要是上面这几个文件
切换到安装目录的bin文件下
cp * /usr/local/bin/

Redis集群搭建(主从+哨兵)

可以参考下面这篇文章:

https://blog.csdn.net/xch_yang/article/details/104019552

这篇文章中有一个错误,这里指正出来:在哨兵搭建环节,配置sentinel.conf时,错误的地方如下:

//端口默认为26379。
port 26379
//关闭保护模式,可以外部访问。
protected-mode no
//设置为后台启动。
daemonize yes
//日志文件。
logfile "/home/redis/sentinel.log"
//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 192.168.231.130 6379 2
//当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster pwdtest@2019
//这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
sentinel parallel-syncs mymaster 1
//故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000

redis主从+哨兵配置完成后,使用脚本功能实现VIP漂移

参考链接:下面链接中的脚本都可以使用--->测试有效

https://www.w3cschool.cn/redis_all_about/redis_all_about-91n5271k.html

https://www.sijitao.net/3070.html

注意:

上述两个脚本执行之前,都必须先在redis master中创建好脚本中使用的VIP,否则会切换不成功,一定要先创建,一定要先创建,一定要先创建。

# 手动创建虚拟ip
ip addr add 192.168.171.100/24 dev ens33

在sentinel进行切换时还会自动调用一个脚本(如果设置的话),做一些自动化操作,比如如果我们需要一个虚拟IP永远飘在Master上,那么可以在sentinel配置文件中配置:

sentinel client-reconfig-script mymaster /home/redis/script/failover.sh

在发生主从切换,Master发生变化时,该脚本会被sentinel进行调用,调用的参数如其配置文件所描述的:

因此,我们可以在failover.sh中进行判断,如果该脚本所运行的主机IP等于新的Master IP,那么将VIP加上,如果不等于,则该机器为Slave,就去掉VIP。通过这种方式进行VIP的切换:

cd /home/redis/script

vi failover.sh

下面的脚本Demo,只需要更改VIP和IFACE、MASK即可,其他的可以通用。

#!/bin/sh
_DEBUG="on"
DEBUGFILE=/home/redis/script/sentinel_failover.log
VIP='192.168.171.110'
MASTERIP=${6}
MASK='24'
IFACE='ens33'
MYIP=$(ip -4 -o addr show dev ${IFACE}| grep -v secondary| awk '{split($4,a,"/");print a[1]}')
#MYIP='192.168.171.10'DEBUG () {if [ "$_DEBUG" = "on" ]; thenecho `$@` >>  ${DEBUGFILE}fi
}set -e
DEBUG date
DEBUG echo $@
DEBUG echo "Master: ${MASTERIP} My IP: ${MYIP}"
if [ ${MASTERIP} = ${MYIP} ]; thenif [ $(ip addr show ${IFACE} | grep ${VIP} | wc -l) = 0 ]; then/sbin/ip addr add ${VIP}/${MASK} dev ${IFACE}DEBUG dateDEBUG echo "/sbin/ip addr add ${VIP}/${MASK} dev ${IFACE}"DEBUG dateDEBUG echo "IP Arp cleaning: /usr/sbin/arping -q -f -c 1 -A ${VIP} -I ${IFACE}"/usr/sbin/arping -q -f -c 1 -A ${VIP} -I ${IFACE}DEBUG dateDEBUG echo "IP Failover finished!"fiexit 0
elseif [ $(ip addr show ${IFACE} | grep ${VIP} | wc -l) != 0 ]; then/sbin/ip addr del ${VIP}/${MASK} dev ${IFACE}DEBUG echo "/sbin/ip addr del ${VIP}/${MASK} dev ${IFACE}"fiexit 0
fi

赋予脚本可执行权限

chmod 755 failover.sh

配置完成后,重新启动sentinel即可------>记得一定要提前将VIP配置好。

全部正常启动后,可以在从机去连接主机测试,redis-cli -h 192.168.171.110 -a password

收藏一下主从+哨兵配置:

centOS7安装redis单例配置主从+哨兵+VIP相关推荐

  1. Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:爱宝贝丶 my.oschina.net/zhangxufen ...

  2. Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比(转)

    摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性 ...

  3. Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比

    点击关注公众号,利用碎片时间学习 来源:blog.csdn.net/xsxy0506/article/details/117321181 redis作为一种NoSql数据库,其提供了一种高效的缓存方案 ...

  4. c++ 单例模式_Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比

    redis作为一种高效的缓存框架,使用是非常广泛的,在数据存储上,在运行时其将数据存储在内存中,以实现数据的高效读写,并且根据定制的持久化规则不同,其会不定期的将数据持久化到硬盘中. 另外相较于其他的 ...

  5. centos7 安装 Redis(资源)

    2019独角兽企业重金招聘Python工程师标准>>> Redis简介 Redis是一个基于BSD开源的项目,是一个把结构化的数据放在内存中的一个存储系统.可以把它作为数据库,缓存和 ...

  6. CentOS7 安装Redis Cluster集群

    上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...

  7. Centos7安装Redis教程

    Centos7安装Redis 0.更新文件 yum update -y 这里会更新好多内容,需要等待一会. 1.下载redis [CSDN资源下载] https://redis.io/ 2.将压缩包放 ...

  8. Centos7 安装lightdm openbox tint2配置最简单桌面

    Centos7 安装lightdm openbox tint2配置最简单桌面 一安装epel源 二安装桌面环境和软件 1安装X窗口系统 2安装openbox窗口管理器 3安装xfce4-termina ...

  9. android对象申明,一行代码配置缺省页, Android最强缺省页框架, 支持代码/布局声明/视图对象回调/全局/单例配置/数据传递...

    StateLayout Android上最强大的缺省页(状态页面)工具 特点 全局配置 单例配置 生命周期(可以加载动画或者处理事件) 刷新回调 获取当前缺省页状态 Loading缺省页支持进度回调 ...

  10. CentOS7安装redis并配置外网可访问(局域网可参考)

    1.安装gcc编辑器 安装redis需要依赖gcc环境,执行如下命令安装: yum install -y gcc 如果机器没有网络的话,可以参考这篇文章: CentOS离线安装gcc环境(附安装包+图 ...

最新文章

  1. HDFS追本溯源:HDFS操作的逻辑流程与源码解析
  2. 威纶通触摸屏可以解密吗_施耐德PLC与威纶触摸屏通讯步骤
  3. ELK Stack 日志分析 Elasticsearch搜索权限
  4. CTFshow——Pwn(1)
  5. LeetCode 297. 二叉树的序列化与反序列化(前序遍历层序遍历)
  6. Spring+Mybatis使用MapperScannerConfigurer简化配置__MapperScannerConfigurer的作用
  7. 专研自动驾驶,深动科技春季招聘启动,含社招和实习
  8. 第3章 别碰白块(《C和C++游戏趣味编程》配套教学视频)
  9. 三菱melsec-a系列plc的指令与编程_三菱Q系列PLC定时器、计数器结构化编程基础
  10. Text Particle Systems
  11. 细丝菲涅尔衍射MATLAB,工程光学系列之六: 菲涅尔衍射  matlab仿真
  12. python科赫雪花代码的意思_python函数和代码复用——迭代练习:科赫雪花绘制
  13. python二元一次方程组用鸡兔同笼的思路来写编程_应用二元一次方程组——鸡兔同笼教学设计...
  14. 拉钩网前端项目实战06
  15. [anjularjs] ui-router嵌套ui-view不刷新问题
  16. Ubuntu_18.04安装网易云音乐
  17. Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之五
  18. 精灵随着鼠标的移动而移动
  19. SQL server不能用IP登录
  20. 【苦练基本功】代码整洁之道 pt4(第10章-第12章)

热门文章

  1. 大家好,我是达叔,我创建了一个做项目的星球【达叔与他的朋友们】,来吗?...
  2. 顺丰速运中山php招聘信息_中山顺丰快递招聘
  3. 使用 BulkLoad 向 HBase 中批量导入数据
  4. el-date-picker由中国时间转换成格林尼治时间
  5. 服务器三块硬盘missing,服务器阵列崩溃、硬盘损坏、分区表丢失、红屏,还好数据救回来了...
  6. 白帽黑客学习之路-python篇-基础
  7. 企业管理:无法量化的工作如何进行绩效考核
  8. python——operator详解
  9. POJ3580:SuperMemo
  10. 格力董明珠:对别人狠,对自己更狠!