如何配置和使用Pivotal Cloud Foundry里的HAPorxy(下),pivotalhaporxy


前一篇写了HAProxy自己的LB和证书的使用,这篇主要是关于安全还有可靠性的。

多层负载均衡满足安全需求和业务需求

企业的安全及防火墙策略对PCF来说是个灾难,当然现在的版本已经有Availability Zone来覆盖这一需求,但是下面这种需求还是难以实现:PCF部署在生产网络,但是需要被互联网访问,安全策略仅允许DMZ网络对外提供服务,因此需要做个脱裤子放屁的事儿是PCF可以从internet访问。还以上例为基础,app1和app2均需要互联网访问(将定DMZ网络中存在可用的负载均衡设备50.60.70.100和50.60.70.101):
首先获取一个DMZ网段的IP,如50.60.70.80,开通负载均衡设备50.60.70.100和50.60.70.101访问PCF的对外IP的10.20.30.41的80和443端口,将10.20.30.41的80和443端口在DMZ负载均衡设备上负载均衡为50.60.70.80的80和443,将50.60.70.80的80和443端口NAT成公网的80和443,并返回需要的域名(比如app1.bjsdns.mydomain.com、app2.bjsdns.mydomain.com等),在DNS中把app1.bjsdns.mydomain.com、app2.bjsdns.mydomain.com做别名成app1.mydomain.com和app2.mydomain.com,就大功告成了。

让CF与普通Tomcat应用服务一块工作

对于企业内部的私有PaaS来讲,PCF中最让人担心的技术就是PCF的运行环境架构(包含负载均衡和自动弹性)。下面的方案可以屏蔽使用互联网技术带来的新技术不确定性风险,使私有PaaS为实时业务系统提供服务成为可能。这个方案通过将应用服务负载均衡到IaaS资源,确保在PCF的整个运行环境框架出现问题时,可做到用户无感知的故障恢复。具体细节如下:
1、在PCF中(比如分配10个应用实例,假定应用名称为app1)和使用IaaS虚拟机单独部署的多个Tomcat节点(比如2个)中部署相同应用代码。
2、在PaaS中使用如下命令创建域(比如mydomain.com),创建应用域名(app1.mydomain.com),绑定应用域名(app1.mydomain.com绑定到应用app1):

cf create-domain org1 mydomain.com
cf map-route app1 mydomain.com -n app1

3、在负载均衡设备中配置virtual service(比如50.60.70.80),其对应的real service为PaaS环境的入口IP(比如10.20.30.41)和其他使用IaaS虚拟机单独部署的多个Tomcat节点,单独Tomcat节点的权重为1,PaaS入口IP的权重为其为此应用分配的应用实例个数(10)。
4、在DNS中将应用域名(app1.mydomain.com)配置为负载均衡设备上的virtual service IP(50.60.70.80)。
5、当用户访问app1.mydomain.com,DNS将解析到负载均衡设备,负载均衡设备会根据策略和权重将请求负载均衡到单独的Tomcat或PaaS入口IP上,如果到了PaaS入口IP上,PaaS将根据客户端访问的域名在此进行解析,并根据策略将请求route到应用app1的10个应用实例上。

相关内容