Azure internal Load Balancer是怎么工作的
来源:互联网 发布:沙宝亮唱功 知乎 编辑:程序博客网 时间:2024/06/05 03:22
Azure里面有三个负载均衡的resource,分别是Load Balancer, Traffic Manager还有Application Gateway,
这次先介绍Azure Load Balancer(LB):
LB分为两种,一种对公网的(internel load balancer),另一种是对Azure内网的(internal load balancer)。
公网的LB需要关联公网IP, 内网的只需要一个内网IP即可。在Azure中不管是公网还是内网LB,要是配置多台虚拟机,这些虚拟机需要加入同一个Availability set 。
对于Availability Set, 在ASM模式下虚拟机是可以修改或者添加的,但是在ARM模式下,是没法修改和添加的,所以在创建虚拟机的时候就需要配置好。
Azure LB 工作示意图下:
这是一个将80端口的流量分配给后面几个虚机,在Azure里面除了轮询还有其他方式的负载均衡,这个下次再说, 下面介绍下LB的几个需要的配置项:
1.Backend pools 这个配置是添加后端虚拟机的,在这个pool里面的虚拟机会被LB探测和发送数据包。
2.Health Probes 这个是LB的健康监测,查询后端的虚拟机状的(这个是针对服务端口的探测,不会检查性能)
3.Load Balancer rules 这个是负载均衡的规则,按照配置将network traffic发送到后端的虚拟机上。
4.Inbound NAT rules这个是LB的NAT规则,比如说创建的虚拟机都不带公网IP,关联一个公网LB给这些虚拟机,我们可以通过不同的端口来SSH或者RDP后面的虚拟机。
5.Front IP configuration 这个是配置前端IP地址的,主要是为了防止端口(TCP 65535)被占用满了,不能提供更多的服务,在前端地址池里面添加IP,就可以提高上限。
Backend pools的配置截图如下:
Health probes的配置截图如下:
Load balancer rules的配置截图如下:
实验如下:
配置了两台Azure VM(centos 7.3)和一个LB(internal):
client1:10.0.0.4
client2:10.0.0.5 (httpd)
internal LB: 10.0.0.6
由于Azure虚拟机会被Azure平台探测存活状态,探测的端口是80,所以我将httpd的服务端口配置成443,这样抓包更容易看到结果。
我用client1(10.0.0.4)去访问LB(10.0.0.6), 在client1 和client2上分别抓包,抓包结果如下:
从client1上抓包:
[root@client1 ~]# tcpdump -i eth0 dst 10.0.0.6 and port 443tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes07:21:55.799369 IP client1.35046 > 10.0.0.6.https: Flags [S], seq 1441485309, win 29200, options [mss 1460,sackOK,TS val 5049399 ecr 0,nop,wscale 7], length 007:21:55.800724 IP client1.35046 > 10.0.0.6.https: Flags [.], ack 579316472, win 229, options [nop,nop,TS val 5049401 ecr 4638028], length 007:21:55.800769 IP client1.35046 > 10.0.0.6.https: Flags [P.], seq 0:76, ack 1, win 229, options [nop,nop,TS val 5049401 ecr 4638028], length 7607:21:55.802488 IP client1.35046 > 10.0.0.6.https: Flags [.], ack 331, win 237, options [nop,nop,TS val 5049402 ecr 4638030], length 007:21:55.802556 IP client1.35046 > 10.0.0.6.https: Flags [F.], seq 76, ack 331, win 237, options [nop,nop,TS val 5049402 ecr 4638030], length 007:21:55.803639 IP client1.35046 > 10.0.0.6.https: Flags [.], ack 332, win 237, options [nop,nop,TS val 5049404 ecr 4638031], length 007:22:26.062352 IP client1.35086 > 10.0.0.6.https: Flags [S], seq 684931516, win 29200, options [mss 1460,sackOK,TS val 5079662 ecr 0,nop,wscale 7], length 007:22:26.063752 IP client1.35086 > 10.0.0.6.https: Flags [.], ack 796501626, win 229, options [nop,nop,TS val 5079664 ecr 4668291], length 007:22:26.063836 IP client1.35086 > 10.0.0.6.https: Flags [P.], seq 0:76, ack 1, win 229, options [nop,nop,TS val 5079664 ecr 4668291], length 7607:22:26.066056 IP client1.35086 > 10.0.0.6.https: Flags [.], ack 331, win 237, options [nop,nop,TS val 5079666 ecr 4668293], length 007:22:26.066171 IP client1.35086 > 10.0.0.6.https: Flags [F.], seq 76, ack 331, win 237, options [nop,nop,TS val 5079666 ecr 4668293], length 007:22:26.069555 IP client1.35086 > 10.0.0.6.https: Flags [.], ack 332, win 237, options [nop,nop,TS val 5079669 ecr 4668295], length 0
从client2上抓包:
[root@client2 html]# tcpdump -i eth0 dst 10.0.0.4 and port 443tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes07:22:26.065738 IP client2.https > 10.0.0.4.35086: Flags [S.], seq 796501625, ack 684931517, win 28960, options [mss 1460,sackOK,TS val 4668291 ecr 5079662,nop,wscale 7], length 007:22:26.067679 IP client2.https > 10.0.0.4.35086: Flags [.], ack 77, win 227, options [nop,nop,TS val 4668293 ecr 5079664], length 007:22:26.067853 IP client2.https > 10.0.0.4.35086: Flags [P.], seq 1:331, ack 77, win 227, options [nop,nop,TS val 4668293 ecr 5079664], length 33007:22:26.070761 IP client2.https > 10.0.0.4.35086: Flags [F.], seq 331, ack 78, win 227, options [nop,nop,TS val 4668295 ecr 5079666], length 007:34:04.756133 IP client2.https > 10.0.0.4.35934: Flags [S.], seq 2629948836, ack 605258536, win 28960, options [mss 1460,sackOK,TS val 5366982 ecr 5778353,nop,wscale 7], length 007:34:04.760315 IP client2.https > 10.0.0.4.35934: Flags [.], ack 77, win 227, options [nop,nop,TS val 5366986 ecr 5778356], length 007:34:04.760519 IP client2.https > 10.0.0.4.35934: Flags [P.], seq 1:331, ack 77, win 227, options [nop,nop,TS val 5366986 ecr 5778356], length 33007:34:04.761525 IP client2.https > 10.0.0.4.35934: Flags [F.], seq 331, ack 78, win 227, options [nop,nop,TS val 5366987 ecr 5778359], length 0
从抓包结果我们可以看出:
Azure LB 不会将后端的地址暴露出来,后端的虚拟机会收到请求的IP。
- Azure internal Load Balancer是怎么工作的
- heartbeat是怎么工作的
- 浏览器是怎么工作的
- 浏览器是怎么工作的
- 计算机是怎么工作的?
- CPU是怎么工作的?
- 缓存是怎么工作的?
- 编译器是怎么工作的
- Mitmproxy 是怎么工作的
- apache load balancer 翻译
- OpenStack Load Balancer LBaaS
- Nginx Load Balancer Config
- HDMI的HDCP是怎么工作的?
- NTFS文件系统是怎么工作的
- JavaScript中的Timer是怎么工作的
- JAVA HashMap 是怎么工作的
- JavaScript中的Timer是怎么工作的
- 浏览器是怎么工作的(前端必读)
- day3:第三天学习python
- 阿里连接池druid
- 玩转TensorFlow那些事之第一段代码
- jvm dump脚本
- C++模板机制
- Azure internal Load Balancer是怎么工作的
- 保证分布式系统数据一致性的6种方案
- 算法谜题137 跳跃成对2
- Swift中的数组使用
- Retrofit
- HTML5 2 拖放
- linux下编程实现GPS数据获取与解析
- 深入学习Hibernate4_07使用二级缓存
- caffe:网络结构可视化工具