【Azure Redis 缓存】Azure Cache for Redis服务中,除开放端口6379,6380外,对13000,13001,15000,15001 为什么也是开放的呢?
问题描述
在使用安全检测工具对Azure Redis服务端口进行扫描时,发现Redis对外开放了13001, 13000,15000,15001端口。非常不理解的是,在门户上只开放了6379,6380这两个端口。那是为什么导致 1300N 和 1500N 端口会是开放的呢?并且是对公网开放?
通过 tcpping Redis hostname 13000/13001/15000/15001 测试,均可以ping通。

对6379,6380也是开放的

那么,这是为什么呢?
问题分析
其实需要从Redis的架构说起,因为Redis需要实现高可用性(“标准”或“高级”层级中),所以Azure Cache for Redis 在一对 Redis 服务器上运行。 这两个服务器托管在专用 VM 上, 被称为Master/Slave,也称为主/从节点(Primay Node / Replica Node)。
Redis 只允许一台服务器处理数据写入请求,这一台服务器是主要节点,而另一服务器是副本。 预配服务器节点后,Azure Cache for Redis 可向其分配主要角色和副本角色。
- 主要节点:通常负责为来自 Redis 客户端的写入和读取请求提供服务。 在执行写入操作时,它会向其内部内存提交一个新密钥和密钥更新,并立即回复客户端。 它以异步方式将操作转发给副本。

当主节点发生故障不可用是,副本节点会自动升级为新的主节点。而通过Redis的Host name连接时,都是经过前端的Load Balancer来对请求分配到主节点。所以在后端的VM(不管时主节点,或者副本节点)都会开启TLS Port或者非TLS端口。
- 而13000,13001端口对应于VM的非TLS端口(两个机器),对应Redis服务的6379端口
- 而15000,15001端口则是对应的TLS端口,对应Redis的6380端口
虽然可以通过13000或者时15000端口连接到Azure Redis服务,但由于Redis所默认的,也是被大众所推崇的连接端口为6379(非SSL) / 6380(SSL)。所以,1300N,1500N端口是Azure Redis的设计使然。 由因为6379端口可以在设置中关闭。所以1300N端口也是可以关闭的。如:

另外,由于Azure Redis可以启用集群功能。而集群中需要连接到各个分片就是使用的1300N端口和1500N端口。
启用群集功能后,如何连接到缓存?
连接到缓存时,可以使用的终结点、端口和密钥与连接到未启用群集功能的缓存时使用的相同。 Redis 在后端管理群集功能,因此不需要你通过客户端来管理它。
可以直接连接到缓存的各个分片吗?
群集协议要求客户端建立正确的分片连接。 因此客户端应正确执行此操作。 话虽如此,但每个分片都是由主/副缓存对组成的,该缓存对统称为缓存实例。 可以在 GitHub 上通过 Redis 存储库的 不稳定 分支使用 redis-cli 实用程序连接到这些缓存实例。 使用
-c开关启动后,此版本可实现基本的支持。 有关详细信息,请参阅 https://redis.io 上 Redis cluster tutorial(Redis 群集教程)中的操作群集。对于非 TLS,请使用以下命令。
Redis-cli.exe -h <<cachename>> -p 13000 (to connect to instance 0)
Redis-cli.exe -h <<cachename>> -p 13001 (to connect to instance 1)
Redis-cli.exe -h <<cachename>> -p 13002 (to connect to instance 2)
...
Redis-cli.exe -h <<cachename>> -p 1300N (to connect to instance N)对于 TLS,请将
1300N替换为1500N。
注意:虽然Redis客户端默认连接的是主节点,但如果想要连接到副本节点,也是可以的。只是这会引起一些不可预期的潜在问题,如数据丢失,监控图标上的指标不对等情况。
参考文档
tcping 下载:https://www.elifulkerson.com/projects/tcping.php
Azure Cache for Redis 的高可用性 : https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-high-availability#standard-replication
可以直接连接到缓存的各个分片吗?https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-clustering#how-do-i-connect-to-my-cache-when-clustering-is-enabled
【Azure Redis 缓存】Azure Cache for Redis服务中,除开放端口6379,6380外,对13000,13001,15000,15001 为什么也是开放的呢?的更多相关文章
- 【Azure Redis 缓存 Azure Cache For Redis】如何设置让Azure Redis中的RDB文件暂留更久(如7天)
问题描述 Azure Redis和所有的Redis服务一样,可以让你保留存储在Redis中的数据.以防万一在Redis服务器出现故障的时候能尽可能小的减少数据的损失.在Azure Redis服务中,默 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
问题描述 由于Azure Redis的性能在不同级别表现不同,当需要升级/缩放Redis的时候,从使用者的角度,需要知道有那些步骤? 注意事项? 潜在影响?停机事件窗口? 升级预估时间? 解决方案 从 ...
- spring boot redis 缓存(cache)集成
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis性能问题,发现Server Load非常的高,导致正常连接/操作不成功
问题描述 在正常使用Azure Redis的服务中,突然发现Redis 的CPU达到了100%, 正常的使用中发现性能问题严重.从Redis的门户图表中,观察到CPU, Connection,Lent ...
- 【Azure Redis 缓存 Azure Cache For Redis】在创建高级层Redis(P1)集成虚拟网络(VNET)后,如何测试VNET中资源如何成功访问及配置白名单的效果
当使用Azure Redis高级版时候,为了能更好的保护Redis的安全,启用了虚拟网路,把Redis集成在Azure中的虚拟网络,只能通过虚拟网络VENT中的资源进行访问,而公网是不可以访问的.但是 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis连接池
问题描述 Redis根据定价层说明,不同级别支持的连接数最多可达4万(同时),但是当短时间又大量连接请求建立的时候,Redis服务的服务压力非常大,到达100%.严重影响了高响应的要求.最严重时,经常 ...
- 【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
问题描述 关于Azure Redis的性能问题,在官方文档中,可以查看到不同层级Redis的最大连接数,每秒处理请求的性能. 基本缓存和标准缓存 C0 (250 MB) 缓存 - 最多支持 256 个 ...
- 【Redis缓存机制】1.Redis介绍和使用场景
(1)持久化数据库的缺点平常我们使用的关系型数据库有Mysql.Oracle以及SqlServer等,在开发的过程中,数据通常都是通过Web提供的数据库驱动来链接数据库进行增删改查. 那么,我们日常使 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis出现 java.net.SocketTimeoutException: Read timed out 异常
问题描述 在使用Azure Redis时,遇见Read Timed out异常, Redis的客户端使用的时jedis.问题发生时,执行redis部分指令出错,大部分get指令,set指令能正常执行. ...
随机推荐
- menuStrip鼠标滑过自动弹出
public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } private void 退出系统T ...
- JVM之调优及常见场景分析
JVM调优 GC调优是最后要做的工作,GC调优的目的可以总结为下面两点: 减少对象晋升到老年代的数量 减少FullGC的执行时间 通过监控排查问题及验证优化结果,可以分为: 命令监控:jps.jinf ...
- Hi3559AV100 NNIE开发(6)RFCN中NNIE实现关键线程函数->SAMPLE_SVP_NNIE_Rfcn_ViToVo()进行数据流分析
前面随笔给出了NNIE开发的基本知识,下面几篇随笔将着重于Mobilefacenet NNIE开发,实现mobilefacenet.wk的chip版本,并在Hi3559AV100上实现mobilefa ...
- docker部署nodejs项目应用
之前笔者弄了一套nestjs项目放在自己服务器上,并用pm2管理进程. 现在要把pm2停止,尝试一下用docker容器,那么首先要安装docker 一.安装docker 由于笔者服务器的系统是cent ...
- Tkinter系列教程01—引言和安装Tk—Python GUI编程
目录 Tkinter教程系列01--引言和安装Tk 引言 什么是Tkinter 安装 Tk 为 Windows 安装 Tk 验证是否安装正确 为 GNU/Linux 安装 Tk 使用 Linux 的包 ...
- Python异步asyncio快速实践模版
只是参考快速跑起来模版,细节或者封装流畅使用需要详细阅读aiohttp文档 1 import asyncio 2 3 async def foo(): 4 await print('bar') 5 6 ...
- kubernetes1.17.2结合ceph13.2.8部署gitlab12.1.6
[root@bs-k8s-ceph ~]# ceph -s cluster: id: 11880418-1a9a-4b55-a353-4b141e2199d8 health: HEALTH_OK se ...
- 拇指记者深入Android公司,打探事件分发机制背后的秘密
前言 聊到事件分发,很多朋友就会想到view的dispatchTouchEvent,其实在此之前,Android还做了很多工作. 比如跨进程获取输入事件的方式?在dispatchTouchEvent责 ...
- vue篇之路由详解
一.vue路由传参的几种方式 1.声明式 router-link 父组件:<router-link :to="`/path/${id}`"><router-lin ...
- 《疯狂Kotlin讲义》读书笔记4——流程控制
流程控制 与Java类似,Kotlin同样提供了两种基本的流程控制结构:分支结构和循环结构. Kotlin提供了 if 和 when 两种分支语句,其中 when 语句可以代替Java的switch语 ...