Redis Sentinel与Cluster安装部署(一)

太阳1年前技术文章417


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








相关文章

Apache hive 对接达梦数据库FQA

Apache hive 对接达梦数据库FQA

对接中遇到的问题问题1解决办法定义dm_svc.confIME_ZONE=(480) LANGUAGE=(cn) HIVE=(172.16.104.165:5236) [HIVE] KEYWO...

Hue跑shell脚本报没权限问题

Hue跑shell脚本报没权限问题

1、客户反应运行脚本如下:经过排查服务器上没有workflow用户,尝试用root、admin测试正常 2、调用脚本运行失败1、给予脚本执行权限 chmod +x data-test.sh 2、/u...

开源大数据集群部署(二十)Trino部署

开源大数据集群部署(二十)Trino部署

2.9.1 解压trino的包到opt目录cd /root/bigdata tar -xzvf trino-server-389.tar.gz -C /opt/ ln -s /opt/trino-...

ChaosBlade介绍

ChaosBlade介绍

ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具,帮助企业提升分布式系统的容错能力,并且在企业上云或往云原生系统迁移过程中业务连续性保障。Chaosblade 是...

RBAC

RBAC

API 对象在学习 RBAC 之前,我们还需要再去理解下 Kubernetes 集群中的对象,我们知道,在 Kubernetes 集群中,Kubernetes 对象是我们持久化的实体,就是最终存入 e...

Hbase region移动

Hbase region移动

1、背景由于hbase 表在创建时没有进行预分区,导致自动分裂的region分布到同一region server上。现将region 手动移动到其他节点,使分布均匀2、操作步骤1、找到要移动的regi...

发表评论    

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