jjzjj

架构设计基础设施保障 - IaaS之网络篇

博学谷狂野架构师 2023-04-16 原文

3. IaaS之网络

3.1 DNS运用

3.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解析,实现用户就近访问。

  1. 阿里云DNS免费版 vs 付费版

    参数项 参数值 免费版
    最低TTL值 最低1秒 最低2秒
    子域名级别 最高10级 最高2级
    A记录负载均衡 带权重的A记录轮询,最多支持90条 带权重的A记录轮询,最多支持10条
    URL转发 URL显性转发+URL隐性转发,最多支持6条 URL显性转发+URL隐性转发,最多支持2条
    泛解析
    运营商线路 默认、移动、联通、电信、教育网 默认、移动、联通、电信、教育网
    运营商线路细分 移动(省份)、联通(省份)、电信(省份)、教育网(省份),共135条线路 不支持
    海外线路细分 亚洲、大洋洲、欧洲、北美、南美、非洲 6大洲34个国家及地区 海外
    搜索引擎线路 搜索引擎、谷歌、百度、必应、有道、雅虎 谷歌、百度、必应

    更多区别, 详情

3.1.2 DNS配置实践

主要步骤: 创建实例 -> 配置访问策略 -> 主域名设置CNAME解析到实例的CNAME接入域名。

  • 创建两台虚拟机

    两台虚拟机都部署相同的服务(app-server), 用于高可用的测试验证。

  • 创建地址池

    这里指向一台主节点。

  • 访问策略配置

配置地址池信息, 如果出现故障, 可以自动切换至备用地址池。

备用地址池指向另外一台云服务器。

  • 全局配置

这里可以采用系统分配生成的cname域名, 主域名是用户访问应用服务使用的域名,必须填写真实主域名, 这里主域名是配置: test.mirson.cn。

  • 开启健康检查

需要对地址池里的IP地址配置健康检查,以获取应用服务的可用性,从而达到根据应用服务地址可用性的状态实现自动故障隔离以及故障自动切换。

  • DNS解析设置

    最后, 在解析设置里面, 添加记录。这里面的记录值要填写上面所设置的cname域名信息。

  • 测试

    通过访问test.mirson.cn会指向连接池所配置的IP信息。

通过域名进行访问:

  • 故障测试

    将地址池改为218.253.0.76不可用地址或停止服务, 开启健康检查后,会自动出现报警提示,并切换为备用地址池。

查看告警日志, 可以看到详细信息

访问服务:

3.2 DNS生产最佳实践方案

3.2.1 全球加速功能

全球加速可以为不同地域的客户端智能返回不同的加速IP,降低解析时延,如果是面向国际的服务,是需要开启此功能, 如果只是国内使用, 可以不用开启。

  • 华东区域客户端访问Web服务会智能解析到全球加速上海加速IP。
  • 华东以外的其他中国内地区域客户端访问Web服务会智能解析到全球加速北京加速IP。
  • 境外区域客户端访问Web服务会直接走境外线路到美国(硅谷)源站IP。

详细操作, 查阅官方文档

3.2.2 不同运营商的加速方案

不同运营商会有自身专有的网络, 如果跨运营商访问存在不稳定的情况, 可以开启此功能。

实现原理:

  • 联通用户通过域名,访问应用服务的联通IP地址:1.1.1.1 。
  • 移动用户通过域名,访问应用服务的移动IP地址:2.2.2.2 。
  • 其他用户通过域名,访问应用服务的默认电信IP地址:3.3.3.3 。

详细操作, 查阅官方文档

3.2.3 全球业务高可用方案

部署方案:

为了实现全球用户都能获得较好的访问质量,通常企业会在中国大陆和海外分别部署至少两套以上的接入服务点,后端数据服务仍然使用一套。通过DNS服务,对于不同地区的用户请求流量做智能调度,将用户访请求流量路由至不同的接入服务点。出现故障灾难时,各接入站点自建互相备份,最终实现业务的高可用。

操作配置说明

3.2.4 跨地域负载均衡

企业应用服务一般会有多个IP,且多个IP地址可能分布于不同地区。可以采用流量平均分配原则,对多个IP地址进行负载均摊,实现用户访问同一个应用服务域名时多个IP地址同时承担用户的访问请求。

实现方案:

平均分配与加权分配配置

3.3 DNS域名劫持解决方案

  1. 域名劫持

    域名劫持又称DNS劫持,是指在劫持的网络范围内拦截域名解析的请求,域名劫持通常相伴的措施是封锁正常DNS的IP, 这样就可以采用虚假的IP来代替真实的IP。

    常见的域名劫持问题:

    • 广告劫持:用户正常页面指向到广告页面。
    • 恶意劫持:域名指向IP被改变,将用户访问流量引到挂马,盗号等对用户有害页面的劫持。
    • 本地DNS缓存:为了降低跨网流量及用户访问速度进行的一种劫持,导致域名解析结果不能按时更新。
  2. HTTPDNS解决方案

    HTTPDNS是仅面向移动App域名劫持解决方案,具有域名防劫持、精准调度的特性。

    优势特性:

    • 域名防劫持

      域名解析请求直接发送至HTTPDNS服务器,绕过运营商Local DNS,避免域名劫持问题。

    • 调度精准

      直接获取客户端 IP ,基于客户端 IP 获得最精准的解析结果,让客户端就近接入业务节点。

    • 实时生效

      可以实现毫秒级低解析延迟的域名解析效果。

  3. 使用配置

    流程:

操作配置

3.4 CDN剖析

3.4.1 CDN原理

  1. 当终端用户(北京)向www.a.com下的指定资源发起请求时,首先向LDNS(本地DNS)发起域名解析请求。

  2. LDNS检查缓存中是否有www.a.com的IP地址记录。如果有,则直接返回给终端用户;如果没有,则向授权DNS查询。

  3. 当授权DNS解析www.a.com时,返回域名CNAME www.a.tbcdn.com对应IP地址。

  4. 域名解析请求发送至阿里云DNS调度系统,并为请求分配最佳节点IP地址。(用户从北京访问,返回最近的北京节点信息。)

  5. LDNS获取DNS返回的解析IP地址。

  6. 用户获取解析IP地址。

  7. 用户向获取的IP地址发起对该资源的访问请求。

    • 如果该IP地址对应的节点已缓存该资源,则会将数据直接返回给用户。

    • 如果该IP地址对应的节点未缓存该资源,则节点向源站发起对该资源的请求。

      可以根据缓存策略做相应配置(针对静态资源配置指定目录和文件后缀名的缓存过期时间和优先级,资源过期后,自动从CDN节点删除。)

3.4.2 缓存过期配置处理流程

3.4.3 缓存配置规则

默认的缓存时间计算规则, 要符合3个条件:

  • t =(curtime-last_modified)*0.1 【结果是时间差的10%】
  • t = max(10s,t) 【最小要大于10S】
  • t = min(t,3600s)【最大不能超过3600s】

缓存规则示例解析:

  • 如果last-modified20140801 00:00:00,当前时间为20140801 00:01:00, (curtime-Last_modified)*0.1=6s,那么缓存时间为10s(因为最小值要大于10s)。
  • 如果last-modified20140801 00:00:00,当前时间为20140802 00:00:00,(curtime-Last_modified)*0.1=8640s,那么缓存时间为3600s。
  • 如果last-modified20140801 00:00:00,当前时间为20140801 00:10:00`,(curtime-Last_modified)*0.1=60s,那么缓存时间为60s。

3.5 CDN运用

  1. 验证域名所属权

  2. 域名验证设置

    如果是阿里云申请的域名, 设置起来比较简单, 直接添加一条验证记录:

    如果是其他第三方域名, 可以采用文件验证方式。

    下载verification.html验证文件,上传到您的域名源站服务器的根目录。

  3. 添加域名

这里所填写的加速域名是需要先备案。

业务类型有五种, 根据需要选择不同配置:

  • 图片小文件

    内容多为小型的静态资源 (如小文件、图片、网页样式文件等),推荐您选择图片小文件业务类型。

  • 大文件下载

    内容为较大的文件(大于20MB的静态文件),推荐选择大文件下载业务类型。

  • 视频点播加速

    如果需要加速音频或视频文件,例如音乐、视频的点播业务场景,推荐选择此类型。

  • 全站加速

    网站或应用含有大量动静态内容混合,且较多为动态资源请求,可以使用全站加速,静态内容高速缓存,动态内容通过阿里云的最优链路算法及协议层优化快速回源获取。

  • 安全加速

    网站易遭受攻击且必须兼顾加速的业务场景,则需要使用安全加速功能,提升全站安全性。例如金融交易、电商网站等。

  1. 配置CNAME

    阿里云的配置流程:

    • 记录加速域名的CNAME地址

    • 添加CNAME记录

      这里的记录值,填写上面的CNAME地址。

  2. 验证CNAME配置是否生效

如果返回的解析结果和CDN控制台上该加速域名的CNAME值一致,则表示CDN加速已经生效。

本文由传智教育博学谷 - 狂野架构师教研团队发布
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力
转载请注明出处!

有关架构设计基础设施保障 - IaaS之网络篇的更多相关文章

  1. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  2. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  3. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  4. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  5. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  6. 软件测试基础 - 2

    Ⅰ软件测试基础一、软件测试基础理论1、软件测试的必要性所有的产品或者服务上线都需要测试2、测试的发展过程3、什么是软件测试找bug,发现缺陷4、测试的定义使用人工或自动的手段来运行或者测试某个系统的过程。目的在于检测它是否满足规定的需求。弄清预期结果和实际结果的差别。5、测试的目的以最小的人力、物力和时间找出软件中潜在的错误和缺陷6、测试的原则28原则:20%的主要功能要重点测(eg:支付宝的支付功能,其他功能都是次要的)80%的错误存在于20%的代码中7、测试标准8、测试的基本要求功能测试性能测试安全性测试兼容性测试易用性测试外观界面测试可靠性测试二、质量模型衡量一个优秀软件的维度①功能性功

  7. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  8. 计算机毕业设计ssm+vue基本微信小程序的小学生兴趣延时班预约小程序 - 2

    项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU

  9. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  10. ruby-on-rails - 设计注册确认 - 2

    我在我的项目中有一个用户和一个管理员角色。我使用Devise创建了身份验证。在我的管理员角色中,我没有任何确认。在我的用户模型中,我有以下内容:devise:database_authenticatable,:confirmable,:recoverable,:rememberable,:trackable,:validatable,:timeoutable,:registerable#Setupaccessible(orprotected)attributesforyourmodelattr_accessible:email,:username,:prename,:surname,:

随机推荐