Redis3.2.8+sentinel构建HA架构文档

一、环境准备:
HA架构至少需要一主一从
1.1、主机规划:

master端:192.168.56.11
slave端:192.168.56.12

1.2、安装redis环境
两台机器分别安装redis3.2.8
安装步骤如下:

cd /usr/local/
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make
make install
mkdir -p /usr/local/redis/{bin,etc,logs}
cd /usr/local/redis/bin/
cp /usr/local/bin/redis-* /usr/local/redis/bin/
cd /usr/local/redis/etc/

编辑redis主配置文件

cat > redis.conf << EOF
daemonize yes
pidfile "/var/run/redis.pid"
port 6379
bind 192.168.56.11   ##bind解析为服务器地址,连接时需要加 -h参数
timeout 0
tcp-backlog 35000
tcp-keepalive 0
loglevel notice
logfile "/usr/local/redis/logs/redis.log"
databases 16
stop-writes-on-bgsave-error yes
dbfilename "dump.rdb"
dir "/usr/local/redis"
Save “”
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 13824mb
appendonly no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
requirepass "123456"  ### redis登陆密码认证
masterauth "123456"   ### redis主从连接密码认证,若主库无密码,则该两项可省略
maxmemory-policy volatile-lru

EOF

修改内核参数

cat >> /etc/sysctl.conf <<EOF
vm.overcommit_memory = 1
net.core.somaxconn = 65535
EOF
sysctl -p
sysctl vm.overcommit_memory=1
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled >> /etc/rc.local
echo "65535" > /proc/sys/net/core/somaxconn

至此,两台redis环境安装完成!

1.3、部署主从环境

主库redis.conf文件如上所示保持不变

从库在redis.conf文件中改动如下所示:

bind 192.168.56.12 ##从节点自身的IP地址
slaveof 192.168.56.11 6379 ##主库地址和端口

到此,主从配置文件完成。

接着,分别启动两台redis服务
Redis启停方式:
启动:
 /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

停止:

 /usr/local/redis/bin/redis-cli shutdown ###无密码停止

 /usr/local/redis/bin/redis-cli -a 123456 -h 192.168.56.11 -p 6379 shutdown ###有密码停止 

验证主从同步:

Redis连接方式:
 /usr/local/redis/bin/redis-cli -h 192.168.56.11 -a 123456 -p 6379

在master端登陆redis:

/usr/local/redis/bin/redis-cli -h 192.168.56.11 -a 123456 -p 6379
192.168.56.11:6379> info replication #输出此命令查看master端状态
Replication
role:master
connected_slaves:1 ##获得连接
slave0:ip=192.168.56.12,port=6379,state=online,offset=3309,lag=1 ###获得slave端信息。证明slave连接成功
master_repl_offset:3450
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:3449

若出现如上信息,则证明主从同步成功。

1.4、配置sentinel哨兵模式
两台服务器中均部署sentinel,两台环境均按一下步骤操作

将redis解压文件夹中的sentinel.conf文件拷贝至redis配置文件夹中:
 cp -a /usr/local/redis-3.2.8/sentinel.conf /usr/local/redis/etc

修改内容如下:

port 26379 #sentinel监听端口
daemonize yes #以daemon形式运行在后台
logfile /usr/local/redis/logs/sentinel.log #日志文件
dir /usr/local/redis
sentinel monitor mymaster 192.168.56.11 6379 2 #监控mymaster组,master地址,端口,quorum次数
sentinel down-after-milliseconds mymaster 5000 #5000毫秒即5秒连续不能连通master,认为master挂掉
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000 #故障切换超时时间
sentinel auth-pass mymaster 123456 #密码认证
protected-mode no #默认情况下sentinel只监听环回地址,这样就导致sentinel之间不能通信,可以改为监听网卡或者关闭protected-mode

两台服务器均启动sentinel服务
/usr/local/redis/bin/redis-sentinel /usr/local/redis/etc/sentinel.conf

需要注意的地方,一旦启动sentinel服务后,服务会自动修改sentinel配置文件/usr/local/redis/etc/sentinel.conf :

protected-mode no
port 26379
daemonize yes
logfile "/usr/local/redis/logs/sentinel.log"
dir "/usr/local/redis"
sentinel myid a7e5eaf6078540f6b3aee720ed8d3feecf49ee19
sentinel monitor mymaster 192.168.56.11 6379 2
sentinel failover-timeout mymaster 60000
sentinel auth-pass mymaster 123456
sentinel config-epoch mymaster 2
sentinel leader-epoch mymaster 2
sentinel known-slave mymaster 192.168.56.12 6379
sentinel known-sentinel mymaster 192.168.56.12 26379 5133b8f7ec8b90b5ae29bf9d9bf47389c14a44fc
sentinel current-epoch 2

至此,sentinel部署完成。

接着,分别启动两台redis服务

Redis启停方式:

启动:

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

停止:

/usr/local/redis/bin/redis-cli shutdown ###无密码停止

/usr/local/redis/bin/redis-cli -a 123456 -h 192.168.56.11 -p 6379  shutdown ###有密码停止

验证主从同步:

Redis连接方式:

/usr/local/redis/bin/redis-cli -h 192.168.56.11 -a 123456 -p 6379

在master端登陆redis:

/usr/local/redis/bin/redis-cli -h 192.168.56.11  -a 123456 -p 6379
192.168.56.11:6379> info replication  #输出此命令查看master端状态
# Replication
role:master
connected_slaves:1  ##获得连接
slave0:ip=192.168.56.12,port=6379,state=online,offset=3309,lag=1  ###获得slave端信息。证明slave连接成功
master_repl_offset:3450
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:3449

若出现如上信息,则证明主从同步成功。

1.4、配置sentinel哨兵模式

两台服务器中均部署sentinel,两台环境均按一下步骤操作

将redis解压文件夹中的sentinel.conf文件拷贝至redis配置文件夹中:

cp -a /usr/local/redis-3.2.8/sentinel.conf /usr/local/redis/etc

修改内容如下:

port 26379                                      #sentinel监听端口
daemonize yes                                   #以daemon形式运行在后台
logfile /usr/local/redis/logs/sentinel.log                   #日志文件
dir /usr/local/redis
sentinel monitor mymaster 192.168.56.11 6379 2 #监控mymaster组,master地址,端口,quorum次数
sentinel down-after-milliseconds mymaster 5000  #5000毫秒即5秒连续不能连通master,认为master挂掉
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000        #故障切换超时时间
sentinel auth-pass mymaster 123456                #密码认证
protected-mode no                               #默认情况下sentinel只监听环回地址,这样就导致sentinel之间不能通信,可以改为监听网卡或者关闭protected-mode

两台服务器均启动sentinel服务

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

#需要注意的地方,一旦启动sentinel服务后,服务会自动修改sentinel配置文件/usr/local/redis/etc/sentinel.conf 如下所示:

protected-mode no
port 26379
daemonize yes
logfile "/usr/local/redis/logs/sentinel.log"
dir "/usr/local/redis"
sentinel myid a7e5eaf6078540f6b3aee720ed8d3feecf49ee19
sentinel monitor mymaster 192.168.56.11 6379 2
sentinel failover-timeout mymaster 60000
sentinel auth-pass mymaster 123456
sentinel config-epoch mymaster 2
sentinel leader-epoch mymaster 2
sentinel known-slave mymaster 192.168.56.12 6379
sentinel known-sentinel mymaster 192.168.56.12 26379 5133b8f7ec8b90b5ae29bf9d9bf47389c14a44fc
sentinel current-epoch 2

具体用途请自行查看。

至此,sentinel部署完成。

时间: 2024-08-24 10:02:03

Redis3.2.8+sentinel构建HA架构文档的相关文章

3g上网卡的驱动程序的自动更新web端架构文档

几年前写的. 看是否有人用得上吧 1   简介 本文档详细描述了基于ASP.NET平台和IIS服务的T-Mobile自动更新系统的实现框架. 本文档主要从技术架构和业务架构两个方面来着手来描述T-Mobile自动更新系统的架构,以使相关人员快速了解产品的架构. 1.1   目的 本文档将从架构方面对T-Mobile自动更新系统进行综合概述,其中会使用用例视图.逻辑视图.部署视图.实施视图等多种不同的架构视图来描述系统的各个方面. 这些描述用于记录并表述已对系统的架构方面做出的重要决策,同时确定系

3g自己主动更新网卡驱动web完架构文档

几年前写. 看它是否是用得上 1  简单介绍 本文档具体描写叙述了基于ASP.NET平台和IIS服务的T-Mobile自己主动更新系统的实现框架. 本文档主要从技术架构和业务架构两个方面来着手来描写叙述T-Mobile自己主动更新系统的架构,以使相关人员高速了解产品的架构. 1.1  目的 本文档将从架构方面对T-Mobile自己主动更新系统进行综合概述.当中会使用用例视图.逻辑视图.部署视图.实施视图等多种不同的架构视图来描写叙述系统的各个方面. 这些描写叙述用于记录并表述已对系统的架构方面做

springboot集成swagger2构建RESTful API文档

在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可以在访问接口上,直接添加注释 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先引入swagger2的jar包,pom文件引入依赖如下: <dependency> <groupId>io.springfox&

nginx-tomcat-memcached架构文档说明(转)

800x600 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 st1\:*{behavior:url(#ieooui) } /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-sty

架构文档类别

我们在做架构设计文档一般分为两个层面: #1 技术架构设计. 从技术的解决上来讨论,着重点是讨论采用什么样的技术,如何分层,采用了那些好的技术特性.采用这些技术特性会为我们的工作带来哪些好处.为什么要这么做. #2 体系结构设计. 从业务需求的角度来出发,理清物理结构图和逻辑结构图. 划分每个子模块,为什么要这么划分,以及各个只模块之间的交互关系,每个子模块具有哪些接口. 这个是要求对需求的把握十分到位,是用设计对需求的映射,重点是要理清整个系统的脉络. 架构文档类别

xml和xsd架构文档相关知识

1.使用架构(XSD)验证XML文件 2.使用自动生成工具: 工具目录:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools 工具名称:xsd.exe 使用帮助:生成xml架构文档xsd-->拷贝xml文件到工具目录下,打开命令工具,进入该目录,执行命令:xsd myFile.xml 生成xsd架构文档相关类-->执行命令:xsd /c/language:CS XSDSchemaFile.xsd 更多详细

app后端开发一:基于swagger-ui构建api接口文档工具

声明 之前写过关于app后端开发的一系列文章,那是我第一次做app后端开发,存在很多不足,本想好好修改一下,想想还是重新写吧,这样子也能让我博客文章看起来多一点嘛,万一以后找工作,别人一看我博客这么多内容,是不是很屌? 这次文章先从构建resetful风格的api文档工具开始.没有一个好的文档工具,在app前端人员开发过程中会导致开发效率极低,而且时不时的,他们就来找你跟他们断点一下. 我的文档经历 这里先不讨论我的数据传输是否合理,仅仅以这些数据作为一个演示.后面会有专门的章节进行app数据传

asp.net web api 构建api帮助文档

1 概要 创建ASP.NET Web Api 时模板自带Help Pages框架. 2 问题 1)使用VS创建Web Api项目时,模板将Help Pages框架自动集成到其中,使得Web Api项目引入了MVC框架开发包,使得项目看起来杂乱. 2)自带的Help Pages框架无法针对Odata控制器生成API文档. 3 问题解决方案 1)独立Help Pages项目,以插件形式添加服务 步骤1,添加类ServiceAssembliesResolver,获得服务集 /// <summary>

iOS项目架构文档

设计的项目架构主要引用MVVM+MVC架构,并以功能模块分级.以下为目录结构. 初级目录: 我们只需要关注SGZH文件夹下的目录,其他为Xcode管理的目录.可以看到此目录为项目初级目录,我们开发过程只需对初级目录内的文件进行操作,其主要划分为3大块: AppDelegate: AppDelegate是程序入口,程序启动和显示逻辑都定义在内部,主要可以让开发人员快速找到代理文件并了解程序从启动到显示过程,也可以快速进行一些初始化测试. Resource: 此目录主要存放一些项目资源文件,如项目切