背景介绍
最近一个客户需要在Azure上面配置服务,同时要求能够实现rate limit的功能。 看了一圈,发现只有Azure的Frontdoor的WAF上可以有这个功能。 豆子习惯了AWS的各种服务,使用Azure的时候,总喜欢横向对比一下。 简单的说, Azure 里面有好几个和负载平衡相关的服务,我的理解是
Azure frontdoor = AWS global accelerator + cloudfront CDN
Azure application gateway = AWS ALB
Azure load balancer = AWS NLB
Azure traffic manager = AWS route53 traffic management。
frontdoor和 application gateway在负载平衡这一块基本一样,但是前者是global级别的,后者只是region内部;而且WAF的功能上只有frontdoor支持rate limit。
Demo
下面做了个简单的demo,看看如何实现的。
安装VM
首先搭建一个最简单的VM,安装一个nginx,nsg放行,这样我们可以看见一个http的界面
安装配置DNS Zone
然后下一步我需要配置我的Azure的DNS。如果托管个Azure自己管理DNS,我后面对frontdoor的自定义domain的配置会容易很多。我有个测试的域名放在goDaddy上,我需要在Azure上创建一个新的 DNS zone,然后在godaddy上替换掉对应的NS记录,这样就可以直接在Azure 的DNS上来管理记录了
Azure上新建的DNS Zone
Godaddy上替换掉NS
这样子,我的域名可以直接通过Azure DNS来管理了
安装配置 Frontdoor
最后我们来配置一个新的frontdoor profile, 点开向导,选择quick create,根据提示就可以创建一个了
因为我的backend的VM使用的是http,所以创建路由的时候,forwarding protocol需要选http
测试一下我的frontdoor endpoint的URL是否工作
http://web-c9ctehevatghgdf4.z01.azurefd.net
https://web-c9ctehevatghgdf4.z01.azurefd.net
但是这个自动生成的域名很不合适,所以我们需要给它创建个别名,同时给别名配置证书
创建好了以后就这样
测试是否成功
http://webserver.beanxyz.com
https://webserver.beanxyz.com
WAF 限制IP
可以访问之后,最后我们来看看如何在WAF里面限制IP的访问
在Frontdoor的WAF里面点击 custom rules
添加一条自定义的rule
关联到我们所有的domain上