Azure 3层架构ARM模板

请关注DeveloperQ公众号

DeveloperQ公众号

大家好,好久不见。


最近一直忙着见客户,好久没写小圈子了。特地更新一下。


本来在纠结是写python on azure还是这个模板的。很多客户对用python管理Azure还是很有兴趣的,但容易写长并且代码还特别多,还是先宣传一下这个模板吧。


首先,其实微软的CAT team本来就已经分享了很多好的设计概念和基本的infra模板,大家可以参考这个global azure的站点:


https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/


但是由于众所周知的原因,中国Azure是没有办法直接使用global的模板的。我选了一个比较经典的三层架构做了“中国化”。这套组件非常冗长并nested了好几层,改起来还是很烦的---->不赞我一下? 有兴趣研究的也可以私下找我讨论 :)


ARM模板的撰写是个比较有趣的事。类似AWS cloud formation但更加强大和繁复。刚接手这玩意会比较头疼。没关系,微软有大笔的开发和DEVOPS写了模板,作为客户的您,只管用就可以了。以后有机会分享一下ARM模板的编写教程。


在这个官方的仓库里,有几乎所有小组件的写法。如同这个仓库的每年工资,building block。对于我们这样的使用者,只要像搭积木一样做迭代和分配就可以完成很复杂的架构了,这里建议看官可以研究一下nested script,通过多层引用和mapper,就可以完成搭积木了:



回到主题,我的这个三层架构demo放在我的仓库:


https://github.com/pjshi23/reference-architectures/tree/master/virtual-machines/n-tier-linux


架构如图:


简单说一说想法。 外部暴露出来的LB是给web层用的,我这里用了定制化插件来给web tier安装apache。内部的负载均衡器赋予业务层作为数据操作或者中间件使用。客户可以选择性安装,只要修改对应bash脚本即可。而DB层,我也留给客户自己选择,是使用mysql cluster还是别的NOSQL。也是使用bash 脚本即可,体验和使用ansible book类似。


这些都是在内部的vnet里并划分多个子网,使用者无法进行操作。而Azure的管理和平时的运维会交给拥有堡垒机权限的人来管理,他可以使用堡垒机跳入vnet并使用ops box来操作ansible或者fabric等ssh管理工具。当然也可以将ops box作为zabbix等监控工具宿主。


所有的资源包括存储账号,nic,avset都已经搭配好,符合我们的最佳实践:


这样就是个典型的安全使用三层架构环境。点击一键部署后,客户在适当等待后就可以看到成功画面:



使用注意:


请一定要将这个资源组取名 ra-ntier-cassandra-rg, 这个现在是写死的。我之后会修改掉它。


这个模板会非常适合客户快速部署3层服务,并且也适合微软以及微软的合作伙伴演示微软云的Infra as code功能。








相关问题推荐