我在AWS上部署CF的时候,在Go Router 前面设置了AWS ELB来对传入流量进行均衡。部署完毕,所有的虚拟机开始运行。可是在Amazon Console的网络界面中,EC2服务下的ELB实例却显示一个Go Router失效了(Out of Service)。
解决这个问题,我从以下三方面着手:
1)检查ELB
2)检查Go Router
3)检查ELB和Go Router之间的网络通信设置
首先curl ELB
没什么问题,并且另外一个Go Router在ELB的可用实例中正常运行,所以ELB本身应该没什么问题。
其次,我运行bosh vms
查看Go Router虚拟机在正常运行,然后ssh
远程登录到Go Router虚拟机,使用monit summary
看到一切作业进程也都运行正常。
这些快速的调试技巧让我锁定了第三种可能。我看到ELB在Availability Zones中没有设置失效Go Router所在的子网,而为了使ELB能够路由流量到某个特定的子网或者Availability Zone,我们必须在ELB的实例中的Availability Zones进行设置添加那个子网。
接下来的工作很简单,登录AWS Console,去AWS的页面左上角点击Services
会看到下拉菜单,选择EC2,进入了EC2管理页面后,点击Load Balancers
选项,选择要设置的ELB,点击Instances
一项就可以看到Edit Availability Zones
,点击添加失效Go Router所在的子网段,点击保存。失效的Go Router开始作为ELB的实例运行了!
To read the English version, please click:Handling GoRouter Is "Out of Service" for AWS ELB.