Redis Sentinel与Cluster安装部署(一)

太阳10个月前技术文章258


1、部署规划

版本

redis5.0.8

目录规划

软件安装目录

/usr/local/redis5

可执行文件目录

/usr/local/redis5/bin

数据目录

/usr/local/redis5/dada/$redis_port

日志目录

/usr/lcoal/redis5/log

配置文件目录

/usr/lcoal/redis5/conf

pid文件目录

/usr/lcoal/redis5/run

脚本文件目录

/usr/lcoal/redis5/script

集群文件所在目录

/usr/lcoal/redis5/cluster


Sentinel服务器规划

IP

端口

角色

172.32.1.59

6379

master

172.32.1.91

6379

slave-1

172.32.1.140

6379

slave-2

172.32.1.59

26379

sentinel-1

172.32.1.91

26380

sentinel-2

172.32.1.140

26381

sentinel-3

Cluster服务器规划

IP

端口

角色

172.32.1.59

7000

master-01

172.32.1.91

7001

master-02

172.32.1.140

7002

master-03

172.32.1.59

7012

slave-02

172.32.1.91

7010

slave-03

172.32.1.140

7011

slave-01

2、架构图

sentinel架构图

image.png


cluster架构图

image.png



3、部署

3.1 sentinel部署

1、安装依赖
yum list installed|grep gcc
  yum -y install gcc
  yum -y install gcc-c++ 
 
 2、下载解压
    wget http://download.redis.io/releases/redis-5.0.8.tar.gz
    tar zxf redis-5.0.8.tar.gz -C /usr/local
    cd /usr/local
    mv redis-5.0.8 redis5
    cd redis5
    make
    make PREFIX=/usr/local/redis5 install 
#make install会生成5个二进制文件,默认在生成在/usr/local/bin下,可以加上PREFIX手动指定生成的文件位置
#会生成以下5个二进制文件:
#  redis-server:Redis服务器
#  redis-cli:Redis命令行客户端
#  redis-benchmark:Redis性能测试工具
#  redis-check-aof:AOF文件修复工具
#  redis-check-rdb:RDB文件检查工具
3、修改环境变量
export PATH=$PATH:$REDIS_HOME/bin
4、创建相关目录,备份配置文件并将其复制至conf下
    mkdir $redis/data $redis/data/redis_6379 $redis/log $redis/run $redis/conf $redis/script
    cp redis.conf ./redis_old.conf
    cp sentinel.conf ./redis_old.log
    cp ./redis_old.conf ./conf/redis_6379.conf
    cp ./sentinel_old.conf ./conf/sentinel_26379.conf
 
4、修改redis.conf配置文件(以6379端口为例)
#network
port 6379             //端口号
bind 172.32.1.59  172.32.1.91 172.32.1.140   //允许哪些IP能访问该redis实例
timeout 0             //设置客户端连接时的超时时间,单位为秒,默认值为0,表示不关闭,生产环境按需配置
#SECURITY
requirepass dt2020  //当前redis节点的密码,生产环境一定要设置
rename-command          //命令重命名,可将一些危险命令禁用或重命名
  //危险命令如flushdb(清空数据库)、flushall(清空所有记录)、config(客户端连接后可配置服务器)、keys(客户端连接后可查看所有存在的键)
  //禁用FLUSHALL命令:rename-command FLUSHALL ""
  //重命名FLUSHALL命令:rename-command FLUSHALL abcdefg
#GENERAL
daemonize yes                                   //设置为yes表示指定Redis以守护进程的方式启动(后台启动),默认为no
pidfile /usr/local/redis5/run/redis_6379.pid     //pid文件路径
logfile "/usr/local/redis5/log/error_6379.log"   //系统日志文件路径
#SNAPSHOTTING   //这里的配置与持久化有关
dir /usr/local/redis5/data/redis_6379     //数据目录,数据库的写入会在这个目录。rdb、aof文件以及redis cluster模式下的node.conf文件均会创建在这个目录下
dbfilename dump_6379.rdb    //rdb的文件名
appendonly yes    //开启aof,默认不开启,生产环境一定要开启
appendfilename "appendonly_6379.aof"  //aof的文件名
aof-use-rdb-preamble yes //当redis重写aof文件时,redis可以先读一个rdb来加快重写的速度,当这个选项打开时,重写的aof文件由两部分组成:rdb文件+aof文件。
#replication
replicaof <master ip> <master port>    //主节点的IP、端口(slave节点需配置)
masterauth <master-password>         //主节点的密码(如果master节点设置了密码,slave节点需要配置此选项,建议master节点也配置该选项)
#slow_log
slowlog-log-slower-than 10000   //慢日志阈值,超过该值则记录到慢日志,单位us,如果该值=0则记录所有命令,如果<0则不记录任何命令,默认10ms
slowlog-max-len 128            //慢查询列表,表示慢日志最大能存储多少条命令,线上建议调大该值
#MEMORY MANAGEMENT
maxmemory <bytes>    //表示redis最大可用内存,可带B、K、M、G等单位,不带单位则表示字节;如果maxmemory值为0,表示不做限制;一般推荐Redis设置内存为最大物理内存的四分之三
maxmemory-policy  volatile-lru   //表示当内存使用达到最大值时,redis使用的过期策略,建议设置为volatile-lru
  //volatile-lru -> 根据LRU算法移除设置过期时间的key
  //allkeys-lru -> 根据LRU算法删除任何key
  //volatile-random -> 根据过期设置来随机删除key
  //allkeys->random -> 无差别随机删除key
  //volatile-ttl -> 移除即将过期的key
  //noeviction -> 不移除任何key,内存满时再执行写操作直接返回错误(默认设置)
    
5、修改sentinel.conf(以26379端口为例)
# 端口,默认26379
port 26379
#后台启动
daemonize yes
#sentinel运行时临时文件存放位置
dir /tmp
#sentinel的运行日志
logfile /usr/local/redis5/log/sentinel_26379.log
#pid文件
pidfile /usr/lcoal/redis5/run/redis-sentinel_26379.pid
# sentinel auth-pass <master-name> <password>
# 设置redis主节点的密码
sentinel auth-pass mymaster dt2020
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
# sentinel监控Redis主节点的配置,master-name指为主节点自定义的名称,ip、redis-port分别是主节点的ip地址、端口地址
# quorum这个值可用于判断主节点客观下线、sentinel的leader选举;当有quorum个sentinel认为一个master失效时,master才算真正失效
sentinel monitor mymaster  172.32.1.59 6379 2
# sentinel down-after-milliseconds <master-name> <milliseconds>
# 指定Sentinel认为Redis实例已经失效所需的毫秒数,默认30秒。当实例超过该时间没有返回PING或返回错误时,Sentinel会将这个实例标记为主观下线。当足够数量的Sentinel都将一个实例标记为主观下线后,实例会被标记为客观下线,这时才会执行自动故障迁移
sentinel down-after-milliseconds mymaster 30000
# sentinel parallel-syncs <master-name> <numslaves> 
# 指定了在执行故障转移时,最多可以有多少个Redis从实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1
# sentinel failover-timeout <master-name> <milliseconds>
# 如果在milliseconds时间(ms)内未能完成failover操作,则认为该failover失败
sentinel failover-timeout mymaster 180000
6、启动各redis节点
$redis_file/src/redis-server $redis_file/conf/redis_$port.conf
  
7、启动各sentinel节点
$redis_file/src/redis-server  $redis_file/conf/sentinel_port.conf  --sentinel
 或
$redis_file/src/redis-sentinel  $redis_file/conf/sentinel_port.conf








相关文章

zabbix监控导出生产环境数据

zabbix监控导出生产环境数据

问题需求导出zabbix数据库中 某个主机组下的端口监控 、 URL监控信息处理过程由于数据量较大,手动统计比较费时,因此考虑通过直接从数据库取出相关数据查找想关联的表,找到各监控项位于哪个数据库表内...

kafka部署建议

1       集群部署规范1.1      Cpu规格与挂盘数量的关系 &nb...

harbor数据迁移-SOP

harbor数据迁移-SOP

背景线下自建harbor需要迁移至云上自建harbor迁移方案harbor私有仓库的主从复制实现数据迁移前置条件harbor目标仓库已部署好,并且版本和源仓库版本最好保持一致迁移步骤1、配置slave...

MySQL运维实战(3.1) MySQL官方客户端使用介绍

mysql是mysql安装包默认的客户端。位于二进制安装包的bin目录。或者通过rpm安装包安装mysql-community-client。使用mysql程序linux终端下,输入mysql命令登陆...

CPU--上下文切换

CPU--上下文切换

一、概述1、Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 ...

CDH实操--修改集群主机名

CDH实操--修改集群主机名

1、停止集群2、停止cmsystemctl stop cloudera-scm-serversystemctl stop cloudera-scm-agnet3、修改服务器主机名修改下列配置文件下的主...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。