架构设计基础设施保障IaaS之网络
目录
- 1 DNS运用
- 1.1 DNS功能作用
- 1.2 DNS配置实践
- 2 DNS生产最佳实践方案
- 2.1 全球加速功能
- 2.2 不同运营商的加速方案
- 2.3 全球业务高可用方案
- 2.4 跨地域负载均衡
- 3 DNS域名劫持解决方案
- 4 CDN剖析
- 4.1 CDN原理
- 4.2 缓存过期配置处理流程
- 4.3 缓存配置规则
- 5 CDN运用
- 6 CDN最佳实践方案
- 6.1 ECS源站加速
- 6.2 OSS资源加速
- 6.3 CDN缓存命中率优化
1 DNS运用
1.1 DNS功能作用
-
负载均衡
DNS负载均衡, 原理是给用户返回不同的IP地址, 例如:
主机记录 记录类型 线路类型 记录值 TTL www A 默认 200.202.101.1 600 www A 默认 200.202.101.2 600 www A 默认 200.202.101.3 600 www A 默认 200.202.101.4 600 解析返回得到的 IP 地址是可以是轮询, 也可以是随机得到的 IP 地址
-
健康检查:
支持ping、telnet、http(s)协议实时健康检查,获取应用服务运行状态。
-
故障切换
支持根据健康检查结果自动或者手工进行failover切换操作,实现主备切换、自动修改故障域名的解析,对异常的地址(服务)进行故障隔离或切换。
-
智能DNS
支持根据不同运营商、区域进行智能DNS解析,实现用户就近访问。
-
阿里云DNS免费版 vs 付费版
参数项 参数值 免费版 最低TTL值 最低1秒 最低2秒 子域名级别 最高10级 最高2级 A记录负载均衡 带权重的A记录轮询,最多支持90条 带权重的A记录轮询,最多支持10条 URL转发 URL显性转发+URL隐性转发,最多支持6条 URL显性转发+URL隐性转发,最多支持2条 泛解析 √ √ 运营商线路 默认、移动、联通、电信、教育网 默认、移动、联通、电信、教育网 运营商线路细分 移动(省份)、联通(省份)、电信(省份)、教育网(省份),共135条线路 不支持 海外线路细分 亚洲、大洋洲、欧洲、北美、南美、非洲 6大洲34个国家及地区 海外 搜索引擎线路 搜索引擎、谷歌、百度、必应、有道、雅虎 谷歌、百度、必应 更多区别, 详情
1.2 DNS配置实践
主要步骤: 创建实例 -> 配置访问策略 -> 主域名设置CNAME解析到实例的CNAME接入域名。
-
创建两台虚拟机
两台虚拟机都部署相同的服务(app-server), 用于高可用的测试验证。
-
创建地址池
这里指向一台主节点。
- 访问策略配置
配置地址池信息, 如果出现故障, 可以自动切换至备用地址池。
备用地址池指向另外一台云服务器。
- 全局配置
这里可以采用系统分配生成的cname域名, 主域名是用户访问应用服务使用的域名,必须填写真实主域名, 这里主域名是配置: test.mirson.cn。
- 开启健康检查
需要对地址池里的IP地址配置健康检查,以获取应用服务的可用性,从而达到根据应用服务地址可用性的状态实现自动故障隔离以及故障自动切换。
-
DNS解析设置
最后, 在解析设置里面, 添加记录。这里面的记录值要填写上面所设置的cname域名信息。
-
测试
通过访问test.mirson.cn会指向连接池所配置的IP信息。
通过域名进行访问:
-
故障测试
将地址池改为218.253.0.76不可用地址或停止服务, 开启健康检查后,会自动出现报警提示,并切换为备用地址池。
查看告警日志, 可以看到详细信息
访问服务:
2 DNS生产最佳实践方案
2.1 全球加速功能
全球加速可以为不同地域的客户端智能返回不同的加速IP,降低解析时延,如果是面向国际的服务,是需要开启此功能, 如果只是国内使用, 可以不用开启。
- 华东区域客户端访问Web服务会智能解析到全球加速上海加速IP。
- 华东以外的其他中国内地区域客户端访问Web服务会智能解析到全球加速北京加速IP。
- 境外区域客户端访问Web服务会直接走境外线路到美国(硅谷)源站IP。
详细操作, 查阅官方文档。
2.2 不同运营商的加速方案
不同运营商会有自身专有的网络, 如果跨运营商访问存在不稳定的情况, 可以开启此功能。
实现原理:
- 联通用户通过域名,访问应用服务的联通IP地址:1.1.1.1 。
- 移动用户通过域名,访问应用服务的移动IP地址:2.2.2.2 。
- 其他用户通过域名,访问应用服务的默认电信IP地址:3.3.3.3 。
详细操作, 查阅官方文档。
2.3 全球业务高可用方案
部署方案:
为了实现全球用户都能获得较好的访问质量,通常企业会在中国大陆和海外分别部署至少两套以上的接入服务点,后端数据服务仍然使用一套。通过DNS服务,对于不同地区的用户请求流量做智能调度,将用户访请求流量路由至不同的接入服务点。出现故障灾难时,各接入站点自建互相备份,最终实现业务的高可用。
操作配置说明
2.4 跨地域负载均衡
企业应用服务一般会有多个IP,且多个IP地址可能分布于不同地区。可以采用流量平均分配原则,对多个IP地址进行负载均摊,实现用户访问同一个应用服务域名时多个IP地址同时承担用户的访问请求。
实现方案:
平均分配与加权分配配置
3 DNS域名劫持解决方案
-
域名劫持
域名劫持又称DNS劫持,是指在劫持的网络范围内拦截域名解析的请求,域名劫持通常相伴的措施是封锁正常DNS的IP, 这样就可以采用虚假的IP来代替真实的IP。
常见的域名劫持问题:
- 广告劫持:用户正常页面指向到广告页面。
- 恶意劫持:域名指向IP被改变,将用户访问流量引到挂马,盗号等对用户有害页面的劫持。
- 本地DNS缓存:为了降低跨网流量及用户访问速度进行的一种劫持,导致域名解析结果不能按时更新。
-
HTTPDNS解决方案
HTTPDNS是仅面向移动App域名劫持解决方案,具有域名防劫持、精准调度的特性。
优势特性:
-
域名防劫持
域名解析请求直接发送至HTTPDNS服务器,绕过运营商Local DNS,避免域名劫持问题。
-
调度精准
直接获取客户端 IP ,基于客户端 IP 获得最精准的解析结果,让客户端就近接入业务节点。
-
实时生效
可以实现毫秒级低解析延迟的域名解析效果。
-
-
使用配置
流程:
操作配置
4 CDN剖析
4.1 CDN原理
-
当终端用户(北京)向
www.a.com
下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。 -
LDNS检查缓存中是否有
www.a.com
的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。 -
当授权DNS解析
www.a.com
时,返回域名CNAMEwww.a.tbcdn.com
对应IP地址。 -
域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。(用户从北京访问,返回最近的北京节点信息。)
-
LDNS获取DNS返回的解析IP地址。
-
用户获取解析IP地址。
-
用户向获取的IP地址发起对该资源的访问请求。
-
如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户。
-
如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。
可以根据缓存策略做相应配置(针对静态资源配置指定目录和文件后缀名的缓存过期时间和优先级,资源过期后,自动从CDN节点删除。)
-
4.2 缓存过期配置处理流程
4.3 缓存配置规则
默认的缓存时间计算规则, 要符合3个条件:
- t =(curtime-last_modified)*0.1 【结果是时间差的10%】
- t = max(10s,t) 【最小要大于10S】
- t = min(t,3600s)【最大不能超过3600s】
缓存规则示例解析:
- 如果last-modified
为
20140801 00:00:00,当前时间为20140801 00:01:00
, (curtime-Last_modified)*0.1=6s,那么缓存时间为10s(因为最小值要大于10s)。 - 如果
last-modified
为20140801 00:00:00
,当前时间为20140802 00:00:00
,(curtime-Last_modified)*0.1=8640s,那么缓存时间为3600s。 - 如果last-modified
为
20140801 00:00:00,当前时间为
20140801 00:10:00`,(curtime-Last_modified)*0.1=60s,那么缓存时间为60s。
5 CDN运用
- 验证域名所属权
-
域名验证设置
如果是阿里云申请的域名, 设置起来比较简单, 直接添加一条验证记录:
如果是其他第三方域名, 可以采用文件验证方式。
下载verification.html验证文件,上传到您的域名源站服务器的根目录。
- 添加域名
这里所填写的加速域名是需要先备案。
业务类型有五种, 根据需要选择不同配置:
-
图片小文件
内容多为小型的静态资源 (如小文件、图片、网页样式文件等),推荐您选择图片小文件业务类型。
-
大文件下载
内容为较大的文件(大于20MB的静态文件),推荐选择大文件下载业务类型。
-
视频点播加速
如果需要加速音频或视频文件,例如音乐、视频的点播业务场景,推荐选择此类型。
-
全站加速
网站或应用含有大量动静态内容混合,且较多为动态资源请求,可以使用全站加速,静态内容高速缓存,动态内容通过阿里云的最优链路算法及协议层优化快速回源获取。
-
安全加速
网站易遭受攻击且必须兼顾加速的业务场景,则需要使用安全加速功能,提升全站安全性。例如金融交易、电商网站等。
-
配置CNAME
阿里云的配置流程:
- 记录加速域名的CNAME地址
- 添加CNAME记录
这里的记录值,填写上面的CNAME地址。
- 验证CNAME配置是否生效
如果返回的解析结果和CDN控制台上该加速域名的CNAME值一致,则表示CDN加速已经生效。
6 CDN最佳实践方案
6.1 ECS源站加速
通过阿里云CDN实现ECS上静态资源加速, ECS上可存储的资源包括静态资源和动态资源。
访问ECS上的资源时,动态资源请求直接返回,静态资源通过CDN实现访问加速,由CDN节点返回。
操作步骤:
-
在CDN控制台上,添加ECS域名。
源站信息, 可以填写IP或源站域名
- 填写服务器外网IP,支持多个服务器外网IP。
- 填写源站域名,支持多个源站域名。
-
在CDN控制台上,获取CNAME值。
-
在DNS控制台上, 配置CNAME值。
-
通过PING命令,验证CNAME配置是否生效。
详细操作
6.2 OSS资源加速
-
背景
OSS源站上存储的静态资源包括静态脚本、图片、附件等信息,当用户访问静态资源时,CDN对OSS源站上的静态资源进行加速,源站上的资源缓存到CDN的加速节点,系统自动调用离终端用户最近的CDN节点上已缓存的资源。加速OSS架构如下图所示。
-
方案优势:
- 用户访问网站资源,全部通过CDN,降低源站压力。
- 使用CDN流量,单价低于OSS直接访问外网流量。
- 资源从距离客户端最近的CDN节点获取,减少网络传输距离,保证静态资源质量。
-
操作配置:
-
在CDN控制台上,添加OSS域名, 并记录加速域名的CNAME值。
-
在阿里云云解析DNS控制台上,配置加速域名的CNAME值。
-
通过PING命令, 验证CNAME配置是否生效。
-
在OSS控制台上,打开加速域名的CDN缓存自动刷新开关。
执行本操作后,如果Object有更新,OSS会自动将更新后的Object刷新到CDN的缓存节点上,从而实现文件更新后实时刷新缓存的功能。
-
详细操作说明
6.3 CDN缓存命中率优化
-
背景
在实际应用中, 如果CDN缓存命中率低,则会导致源站压力大,静态资源访问效率低。
需要选择对应的优化策略,来提高CDN的缓存命中率。
CDN缓存命中率包括:
- 字节缓存命中率: CDN缓存命中响应的字节数 / CDN所有请求响应的字节数。
- 请求缓存命中率: CDN缓存命中的请求数 / CDN所有的请求数。
字节缓存命中率越低,回源流量越大,回源流量代表了源站服务器接收到的负载压力。
-
查看CDN缓存命中率
CDN控制台提供的缓存命中率监控是字节缓存命中率:
-
优化方案
-
预热URL
在业务高峰前预热热门资源,再次访问该资源时,直接从CDN节点获取,从而提升CDN的缓存命中率。
详细操作
-
配置资源缓存规则
当静态资源未返回响应头Etag或Last-modified时,缓存失败会导致CDN缓存命中率低,可以针对该资源配置缓存规则,提升缓存命中率。
详细操作
-
过滤URL中可变参数
当URL请求中带有queryString或其他可变参数时,资源重新回源,会导致CDN缓存命中率降低。
可以针对可变参数开启参数过滤功能,提升资源的缓存命中率。
详细操作
-
相关文章:

架构设计基础设施保障IaaS之网络
目录 1 DNS运用1.1 DNS功能作用1.2 DNS配置实践 2 DNS生产最佳实践方案2.1 全球加速功能2.2 不同运营商的加速方案2.3 全球业务高可用方案2.4 跨地域负载均衡 3 DNS域名劫持解决方案4 CDN剖析4.1 CDN原理4.2 缓存过期配置处理流程4.3 缓存配置规则 5 CDN运用6 CDN最佳实践方案6…...

zabbix安装部署
前期准备:安装mysql数据库和nginx 一、下载zabbix rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm yum-config-manager --enable rhel-7-server-optional-rpms yum install epel-release numactl yum install…...

零碎的C++
构造函数和析构函数 构造函数不能是虚函数,而析构函数可以是虚函数。原因如下: 构造函数不能是虚函数,因为在执行构造函数时,对象还没有完全创建,还没有分配内存空间,也没有初始化虚函数表指针。如果构造…...

模糊测试面面观 | 模糊测试是如何发现异常情况的?
协议模糊测试是一种用于评估通信协议、文件格式和API实现系统安全性和稳定性的关键技术。在模糊测试过程中,监视器扮演着关键角色,它们能够捕获异常情况、错误响应、资源利用等,为测试人员提供有价值的信息,有助于发现潜在漏洞和问…...

C#备份数据库文件
c#备份数据库文件完整代码 sqlServer 存储过程: USE [PSIDBase] GO /****** Object: StoredProcedure [dbo].[sp_BackupDB] Script Date: 2023/8/31 16:49:02 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GOALTER procedure [dbo].[sp_BackupDB]…...

行军遇到各种复杂地形怎么处理?
行军遇到各种复杂地形怎么处理? 【安志强趣讲《孙子兵法》第30讲】 【原文】 凡军好高而恶下,贵阳而贱阴,养生而处实,军无百疾,是谓必胜。 【注释】 阳,太阳能照到的地方。阴,太阳照不到的地方。…...

Python Number(数字).............................................
Python Number 数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间。 以下实例在变量赋值时 Number 对象将被创建: var1 1 var2 10您也可以使用del语句删除一些 Number 对象引用。 del语句…...

设置 Hue Server 与 Hue Web 界面之间的会话超时时间
设置 Hue Server 与 Hue Web 界面之间的会话超时时间 在 CDH 的 Hue 中,Auto Logout Timeout 参数表示用户在不活动一段时间后将自动注销(登出)的超时时间。当用户在 Hue 中处于不活动状态超过该设定时间时,系统将自动注销用户&am…...

openGauss学习笔记-57 openGauss 高级特性-并行查询
文章目录 openGauss学习笔记-57 openGauss 高级特性-并行查询57.1 适用场景与限制57.2 资源对SMP性能的影响57.3 其他因素对SMP性能的影响57.4 配置步骤 openGauss学习笔记-57 openGauss 高级特性-并行查询 openGauss的SMP并行技术是一种利用计算机多核CPU架构来实现多线程并行…...

软考(1)-面向对象的概念
目录 一. 软考基本信息 1. 软考时间: 2. 软考科目: 3.专业知识介绍 -- 综合知识考点分布 4. 专业介绍 -- 软件设计考点分布 二. 面向对象概念 1. 封装 考点一:对象 考点二:封装private 2. 继承 考点三:类 考…...

深度学习推荐系统(四)WideDeep模型及其在Criteo数据集上的应用
深度学习推荐系统(四)Wide&Deep模型及其在Criteo数据集上的应用 在2016年, 随着微软的Deep Crossing, 谷歌的Wide&Deep以及FNN、PNN等一大批优秀的深度学习模型被提出, 推荐系统全面进入了深度学习时代, 时至今日&#x…...

第十二章 YOLO的部署实战篇(中篇)
cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…...

面试题查漏补缺 i++和 ++ i哪个效率更高
i 和 i 哪个效率更高? 在这里声明,简单地比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被使用,而是仅仅简单地用于增加一员…...

Docker的数据管理(持久化存储)
文章目录 一、概述二、数据卷三、数据卷容器四、端口映射五、容器互联(使用centos镜像)总结 一、概述 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers&a…...

定时脚本自动自动将文件push到git
写脚本 绝对路径 环境注意 写python,bash脚本执行调用 py程序 定制crontab -e 日志要指定输入文件中 项目地址 https://gitee.com/stdev_1/sshpi10/ bash脚本 #!/bin/bash 设置要监控的仓库路径 #path~/github/ #watch_dir“/home/pi/gittest/ipset/sshpi10” p…...

025: vue父子组件中传递方法控制:$emit,$refs,$parent,$children
第025个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…...

使用js搭建简易的WebRTC实现视频直播
首先需要一个信令服务器,我们使用nodejs来搭建。两个端:发送端和接收端。我的目录结构如下图:流程 创建一个文件夹 WebRTC-Test。进入文件夹中,新建一个node的文件夹。使用终端并进入node的目录下,使用 npm init 创建p…...

LeetCode 2707. Extra Characters in a String【动态规划,记忆化搜索,Trie】1735
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

设计模式行为型-模板模式
文章目录 一:模板方法设计模式概述1.1 简介1.2 定义和目的1.3 关键特点1.4 适用场景 二:模板方法设计模式基本原理2.1 抽象类2.1.1 定义和作用2.1.2 模板方法2.1.3 具体方法 2.2 具体类2.2.1 定义和作用2.2.2 实现抽象类中的抽象方法2.2.3 覆盖钩子方法 …...

9.3.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-车道线检测
目录 前言1. 车道线检测总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-自动驾驶案例项目self-driving-车道…...

django.core.exceptions.AppRegistryNotReady: Apps aren‘t loaded yet.
运行django测试用例报错django.core.exceptions.AppRegistryNotReady: Apps arent loaded yet. 解决:在测试文件上方加上 django.setup() django.setup()是Django框架中的一个函数。它用于在非Django环境下使用Django的各种功能、模型和设置。 在常规的Django应用…...

【C#】C#调用进程打开一个exe程序
文章目录 一、过程二、效果总结 一、过程 新建WinForm程序,并写入代码,明确要调用的程序的绝对路径(或相对路径)下的exe文件。 调用代码: 这里我调用的另一个程序的路径是: F:\WindowsFormsApplication2…...

宝塔面板定时监控和重启MySQL数据库(计划任务)
往期教程 如果还有不了解宝塔面板怎么使用的小伙伴,可以看下我总结的系列教程,保证从新手变老鸟: 【建站流程科普】 个人和企业搭建网站基本流程及六个主要步骤常见的VPS主机运维面板汇总—网站运维面板云服务器,VPS࿰…...

Beats:安装及配置 Metricbeat (二)- 8.x
这篇文章是继文章 “Beats:安装及配置 Metricbeat (一)- 8.x” 的续篇。你可以先阅读之前的那篇文章再继续阅读这篇文章。我们在这篇文章中继续之前的探讨。 使用 fingerprint 来代替证书 在实际的使用中,我们需要从 Elasticsear…...

Redis之哨兵模式解读
目录 基本介绍 单哨兵模式 多哨兵模式 哨兵的本质 配置哨兵模式 故障恢复原理 哨兵监控工作流程 哨兵模式缺点 基本介绍 当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多…...

题目:2644.找出可整除性得分最大的整数
题目来源: leetcode题目,网址:2644. 找出可整除性得分最大的整数 - 力扣(LeetCode) 解题思路: 遍历计算即可。 解题代码: class Solution {public int maxDivScore(int[] nums, int[] di…...

报错:axios 发送的接口请求 404
axios 发送的接口请求 404 一、问题二、分析 一、问题 二、分析 axios 发送的接口请求 404,根本没有把接口信息发送到后端,这个时候你可以查看检查一下自己的接口名字,或让后端配合换一个接口名字再发送一次接口请求...

三年前端还不会配置Nginx?刷完这篇就够了
什么是Nginx Nginx是一个开源的高性能HTTP和反向代理服务器。它可以用于处理静态资源、负载均衡、反向代理和缓存等任务。Nginx被广泛用于构建高可用性、高性能的Web应用程序和网站。它具有低内存消耗、高并发能力和良好的稳定性,因此在互联网领域非常受欢迎。 为…...

blender 场景灯光基础设置
在 blender 中,打光分为两个部分,一个是世界光,一个是场景光; 世界光: 世界光:在 Blender 中,世界光指的是用于设置场景整体照明的环境光。它可以通过调整颜色、强度、阴影等参数来影响场景的…...

如何查看 SQLyog 中数据库连接信息中的密码
SQLyog 数据库连接信息中的密码无法选择明文展示,也无法复制 可以将数据库连接信息导出到文本查看明文密码 工具--》导入/导出连接详情:...