混合使用Azure LB和ILB访问相同web服务(1)

在经典的使用场景中,我们一般使用AzureLoadBalancer来面向公网提供负载均衡服务,而使用Azure Internal Load Balancer提供内部那些不愿意将服务暴露给公网的服务,比如数据库层。经典场景示例如下图所示:

混合使用Azure LB和ILB访问相同web服务(1)

但在一些特殊的使用场景中,相同的web服务,用户会希望既能用LB通过公网来访问,也可以使用ILB通过内网来访问,并且访问端口,访问方式完全一样,我画了一个简单的示意图,如下图所示:

混合使用Azure LB和ILB访问相同web服务(1)

本文介绍一下如何配置该种场景的LB和ILB,为测试方便,需要提前做如下准备:

  1. 安装并且配置Azure Powershell,请使用0.9.8版本,因为1.0以上版本使用了AzureResourceManager,配置方法和命令会有所不同,我后续文章会介绍:

混合使用Azure LB和ILB访问相同web服务(1)

  1. 在Azure上建立vNet,我们测试的3台VM都需要放在这个vNet里面
  2. 创建2台WEB VM,在我的测试用例中,为了直观,使用两台Ubuntu 14.04作为WEB服务器,放在同样的vNet里面,一个cloudservice中,并且配置了高可用集合,这也是生产环境中配置高可用的最佳实践
  3. 创建一台测试VM,我的测试中用的是Windowsserver 2012,放在和webvm同样的vNet中

为了区分两台web VM和测试web服务,我们来做一些简单的修改,基本上做两件事情:

  1. 安装Nginx作为web服务器
  2. 修改默认页面,加上VM1和VM2这样的字样来区分服务的请求响应的VM。

具体做法如下:

  1. 首先安装Nginx

混合使用Azure LB和ILB访问相同web服务(1)

  1. 配置Nginx默认页面做测试:
  • sudo vi /usr/share/nginx/html/index.html
  • 添加标识语句,来区分不同的VM<h2>THIS IS VM1</h2>
  • 保存退出,按照这个方法,修改第二个VM

混合使用Azure LB和ILB访问相同web服务(1)