前言

会研究到 Azure Front Door (AFD) 是因为想安装 WAF. 结果研究了一圈, 发现 AFD 好弱啊.

有许多功能都有 limitation.

Limitation & 不够好的地方

1. Not support web socket

参考: feedback.azure.com

另外 CDN 也是不支持 web socket.

Application Gateway 就支持. Cloudflare 也支持. 所以 AFD, ACDN 都很差..

 2000 votes 排名第 3,

2. Root domain setup 很麻烦

参考: Onboard a root or apex domain on your Front Door

AFD 的 setup 方式是在 DNS point to AFD, 用的是 CNAME. 而 root domain 是 @ 无法配上 CNAME

只可以用 A point IP. 所以需要额外搞 ALIAS record, 我不清楚是不是只有 Azure DNS 才可以搞这些啦.

2.1 Root domain 要自己搞 certifiate

目前 managed certificate 不支持 , 需要自己弄 certificate 然后通过 Key Vault 链接到 AFD.

3. AFD Standard/Premium 还在 preview 中

参考: What is Azure Front Door Standard/Premium (Preview)?

虽然有 50% discount 但 not recommended for production, 谁还敢用丫.

4. Wildcard domains setup 很麻烦

参考: Wildcard domains

只能用 CLI 不能用 portal setup

只能自己做 certificate

基本架构概念

Front Door "前门", 顾名思义就是请求到达服务器之前的门口.

普通架构里, DNS 直接 point 去 VM. 这样的方式不安全. IP 直接公开, 而且只能对一台服务器.

DNS > AFD > VMs pool 这样的架构就好多了, 可以做很多事情, 缓存啦, WAF 啦, load balance 啦. 而且对外也隐藏了服务器的 IP.

Azure 有很多种类似的服务. 每个都针对不太一样的场景, 但又非常类似.

Application Gateway focus load balance

CDN focus static files

AFD focus Web, API, Compute

所以最终 AFD 推出了 Standard/Premium 版本, 综合了大家的服务. (但目前任在 preview 当中... 又 preview ?!)

AFD Classic Step by Step

由于 Standard/Premium 还在 preview 而且也贵, 先介绍原始版本吧.

Setup VM DNS Name

CDN > AFD > VM,

首先 AFD > VM 最好不要直接使用 IP, 因为用 IP 就做不了 TLS (SSL).

所以先让 VM 有一个 domain name (用 Azure 的就可以了)

参考: Create a fully qualified domain name for a VM in the Azure portal

进入 VM > Properties > DNS name label

我这张图是已经做好的, 本来应该是 none, 点击进入然后取一个名字

这样就可以了.

Create AFD

搜索 front door service

点击创建, (它属于 Load balancing 的一种)

选好 Resource Group

进入关键的地方了

Frontends/domains 是从 DNS point 进来的入口.

Session Affinity 是指是否让用户固定用一个 VM, 如果我们的服务是无状态的那么就可以不开, 但如果是有需要维护 session 之类的, 那么最好是让用户固定使用一台 VM.

WAF 可以之后才加进去.

Backend pools 是我们的 VMs

可以放多个 VMs, 它会挑选比较不忙的去 serve request.

点击 Add a backend

选择 custom host, 然后把我们上一个环节做的 VM DNS name 放进去. 这里需要注意一点.

一般上一个 VM 只服务一个 Web App. 所以端口用 80, 443 就可以了. 但是如果我们的 VM 是 serve multiple web apps 的话.

那么这里就需要分不同的端口了.

IIS 的 setup, 当 AFD > VM 的时候就是这样访问的

注: 81, 444 需要去 Azure portal 添加 Inbound port rules, 也需要在 VM 里面开启 firewall advanced 添加 inbound port 哦

其余的默认就可以了

Routing ruls 是它们 2 个之间的 mapping

取个名字, 上半部分是选 frontends/domains

下半部分是选 backend pool

第一轮的 setup frontend 是 azure 的 sub domain 比如: test-front-door.azurefd.net

需要在添加多一个 frontend for custom domain

这时会看到多了一个 Custom host name 和 TLS

把 Frontend host name copy 去 DNS Custom domain 的 CNAME (上面有说了 root domain 的话需要更麻烦的 setup, 这里说的都是 sub domain)

然后开启 TLS. Azure 会自动去申请 certificate (sub domain only). 这个过程可能需要 20 分钟

然后在重复 setup backend 和 route 就可以了.

最后大概长这样

About TLS

End-to-end TLS with Azure Front Door

最好是全程使用 TLS.

CDN > AFD 使用 Azure managed certificate

AFD > VM, 需要 VM 申请 VM DNS Name (azure 的 sub domain, e.g. test-front-door-vm.southeastasia.cloudapp.azure.com) 的 certificate, 通常是用 Let's Encrypt.

重点 highlight

如果熟悉它的原理, setup 并不算难, 我自己卡很久都是因为基础不太好.

这里总结一下.

在 DNS 做一个 custom sub domain 通过 CNAME point to AFD frontend (test-front-door.azurefd.net)

这样用户访问就会进入到 AFD 了.

下一步是 front door 去 VM. 这里可以用 VM 的 IP, 但是这样就没有 TLS, 所以最好用 VM 的 DNS name (test-front-door-vm.southeastasia.cloudapp.azure.com)

配上不同 port 就可以实现 VM multiple web app. (记得要 set Azure portal 和 VM firewall 的 inbounce rule)

最后是 mapping, 这个没有什么特别要注意的.

总结

感觉它还有很多不方便的地方,学习资源也不多. 不推荐使用. 我只是把目前做到的研究记入一下而已.

可以考虑 Cloudflare 作为替代.

Azure – Front Door (AFD)的更多相关文章

  1. Azure Front Door(一)为基于.net core 开发的Azure App Service 提供流量转发

    一,引言 之前我们讲解到使用 Azure Traffic Manager.Azure LoadBalancer.Azure Application Gateway,作为项目的负载均衡器来分发流量,转发 ...

  2. Azure Front Door(二)对后端 VM 进行负载均衡

    一,引言 上一篇我们讲到通过 Azure Front Door 为我们的 Azure App Service 提供流量转发,而整个 Azure Front Door 在添加后端池的时候可选的后端类型是 ...

  3. Azure Front Door(三)启用 Web Application Firewall (WAF) 保护Web 应用程序,拒绝恶意攻击

    一,引言 上一篇我们利用 Azure Front Door 为后端 VM 部署提供流量的负载均衡.因为是演示实例,也没有实际的后端实例代码,只有一个 "Index.html" 的静 ...

  4. Azure产品目录

    计算 Linux 虚拟机:为 Ubuntu.Red Hat 等预配虚拟机 Windows 虚拟机 为 SQL Server.SharePoint 等预配虚拟机 应用服务 快速创建适用于 Web 和移动 ...

  5. Azure产品整理

    Azure的文档真是够落地,简明易懂. 计算 Linux 虚拟机:为 Ubuntu.Red Hat 等预配虚拟机 Windows 虚拟机 为 SQL Server.SharePoint 等预配虚拟机 ...

  6. 如何正确的探索 Microsoft Ignite The Tour

    Microsoft Ignite The Tour 是一年一度微软为全球开发者.IT专家.安全专家以及数据专家提供的为期两天,包含众多核心产品的实践性技术培训.2019.12.10-2019.12.1 ...

  7. 在公有云AZURE上部署私有云AZUREPACK以及WEBSITE CLOUD(二)

    前言 (二)建立虚拟网络环境,以及域控和DNS服务器   1搭建虚拟网络环境 在Azure上创建虚拟网络.本例选择的是东南亚数据中心.后面在创建虚机的时候,也选择这个数据中心. VNet Name: ...

  8. UNDER THE HOOD OF THE NEW AZURE PORTAL

    http://jbeckwith.com/2014/09/20/how-the-azure-portal-works/ So - I haven’t been doing much blogging ...

  9. Windows Azure 云服务角色架构

    当我们使用VS发布一个Cloud Service或者在Portal上上传发布包后,就能启动和运行一个云服务,可以保护WebRole,WorkerRole的一个或者多个实例. Windows Azure ...

  10. Windows Azure 上传 VM

    One of the great features of Windows Azure is VHD mobility. Simply put it means you can upload and d ...

随机推荐

  1. Netcode for Entities如何添加自定义序列化,让GhostField支持任意类型?以int3为例(1.2.3版本)

    一句话省流:很麻烦也很抽象,能用内置支持的类型就尽量用. 首先看文档.官方文档里一开头就列出了所有内置的支持的类型:Ghost Type Templates 其中Entity类型需要特别注意一下:在同 ...

  2. Pandas库学习笔记(6) -- Pandas 基本方法

    Pandas 基本方法实例 到目前为止,我们了解了三个Pandas DataStructures以及如何创建它们.由于它在实时数据处理中的重要性,因此我们将主要关注DataFrame对象,并讨论其他一 ...

  3. Nginx $remote_addr和$proxy_add_x_forwarded_for变量详解

    $remote_addr 代表客户端IP.注意,这里的客户端指的是直接请求Nginx的客户端,非间接请求的客户端.假设用户请求过程如下: 用户客户端--发送请求->Nginx1 --转发请求-- ...

  4. 【Java】PDF模板生成PDF文档

    一.需求背景 客户要求一份文书,文书内容有一些表单项,例如: 1.基本的是和否 (单选框或复选框) 2.备注内容(纯文本信息) 3.单位,机构组织,人员,字典项(下拉选择) 4.用户数字签名(图片信息 ...

  5. 【Spring-Security】Re05 权限控制及403处理

    一.访问控制方法及控制项: 上述配置中的URL后面都离不开的一个访问控制抉择: 1.全部允许 PermiAll 2.全部拒绝 DenyAll 3.允许匿名访问 Anonymous 也就是普通访问者 4 ...

  6. IEEE TCDS 专刊"Embodied AI in Indoor Robotics"征稿通知

    原文地址: https://mp.weixin.qq.com/s/Z-U4EO6FCF703yMwHXAq5A 随着深度学习和强化学习在机器人学领域的迅猛发展,尤其是大型语言模型的创新进步,具身人工智 ...

  7. 灵巧度最高的机械手 —— Clone公司

    地址: https://www.youtube.com/watch?v=ikrDqfnZNLU Clone 公司: 生产通过液压驱动的仿生机器人.

  8. git submodule子模块操作

    背景 为什么使用子模块,因为需要使用其他人维护的公共组件,但这些组件并不是以包或库的形式使用的.所以采用子模块的形式,无论是自己修改还是拉取也很方便. 子模块操作 增加子模块 git submodul ...

  9. 部署CPU与GPU通用的tensorflow:Anaconda环境

      本文介绍在Anaconda环境中,下载并配置Python中机器学习.深度学习常用的新版tensorflow库的方法.   在之前的两篇文章Python TensorFlow深度学习回归代码:DNN ...

  10. 关于Springboot理解

    面向对象五大基本原则 graph LR A(面向对象五大原则);B(单一职责原则);C(开放封闭原则);D(里式替换原则);E(依赖倒置原则);F(接口隔离原则); A---B;A---C;A---D ...