如何配置和使用Pivotal Cloud Foundry里的HAPorxy(上)
2015-04-14 14:00
225 查看
Pivotal使用HAProxy作为其访问入口,当然是允许使用其他负载均衡软件或硬件进行替换的。不过,基于怕麻烦和强迫症,个人还是用了HAProxy到最终的生产环境。为了满足特定的应用需求和可靠性需求,对负载均衡这一层做了一定的配置,本文通过四个案例共享这些经验。
假定为PCF配置了两个HAProxy(10.20.30.40和10.20.30.41),在DNS上,默认将*.pcf.mydomain.com子域分配给了这个PCF,指向了10.20.30.40。此时,如果应用app1域名为app1.pcf.mydomain.com,则该应用的访问将通过10.20.30.40进入PCF。
这时如果这个应用app1需要使用域名app1.mydomain.com,并且负载很大和/或可靠性要求高,则可以在DNS上将app1.mydomain.com指向10.20.30.41,然后
此时,通过app1.mydomain.com和app1.pcf.mydomain.com都可以访问这一应用,但是前者通过10.20.30.41进入PCF,后者通过10.20.30.40进入PCF。
此时可以将DNS上app2.mydomain.com指向10.20.30.41,然后登陆10.20.30.41这个HAProxy的OS(用户名为vcap,密码可以在Pivotal Operation Manager的界面上找到),进行HAProxy配置。
对于自动跳转https的需求,可以通过修改/var/vcap/jobs/haproxy/config/haproxy.config里的http-in完成。
对于多个证书的需求,可以通过修改/var/vcap/jobs/haproxy/config/haproxy.config里的https-in完成。将需要的证书上传到这台HAProxy,并在配置文件中添加即可,证书文件支持的格式请参见/var/vcap/jobs/haproxy/config/cert.pem。
为不同应用分配不同的HAProxy
Pivotal Cloud Foundry的配置界面中,HAProxy允许配置多个IP(同时需要在资源尺寸页配置相同个数的HAProxy虚拟机),这样一个CF就拥有了多个入口。可以通过管理员的人脑,对运行在这套CF上不同应用按照负载和安全的考量,分配到不同的HAProxy上。具体实例如下:假定为PCF配置了两个HAProxy(10.20.30.40和10.20.30.41),在DNS上,默认将*.pcf.mydomain.com子域分配给了这个PCF,指向了10.20.30.40。此时,如果应用app1域名为app1.pcf.mydomain.com,则该应用的访问将通过10.20.30.40进入PCF。
这时如果这个应用app1需要使用域名app1.mydomain.com,并且负载很大和/或可靠性要求高,则可以在DNS上将app1.mydomain.com指向10.20.30.41,然后
cf create-domain org1 mydomain.com创建域名(如果这个域名整个CF都要用,那就用
cf create-shared-domain),然后用
cf map-route app1 mydomain.com -n app1为这个应用增加一个新的域名。
此时,通过app1.mydomain.com和app1.pcf.mydomain.com都可以访问这一应用,但是前者通过10.20.30.41进入PCF,后者通过10.20.30.40进入PCF。
为同一HAProxy上的不同域名配置SSL证书并自动访问https
PCF可以生成个自签名的域名给分配给自己的子域,但实际生产中使用证书肯定不会是自签名的,而且多数也不会是整个子域的域名,而是单独的域名,还是针对前文的实例,增加如下需求:另一个应用app2与app1属于同一系统,需要使用域名app2.mydomain.com,app1.mydomain.com和app2.mydomain.com均有各自的SSL证书,同时二者均要求禁止http访问。此时可以将DNS上app2.mydomain.com指向10.20.30.41,然后登陆10.20.30.41这个HAProxy的OS(用户名为vcap,密码可以在Pivotal Operation Manager的界面上找到),进行HAProxy配置。
对于自动跳转https的需求,可以通过修改/var/vcap/jobs/haproxy/config/haproxy.config里的http-in完成。
frontend http-in mode http bind :80 option httplog option forwardfor reqadd X-Forwarded-Proto:\ http acl is_app1_mydomain_com hdr(host) -i app1.mydomain.com redirect location https://app1.mydomain.com:443 if is_app1_mydomain_co acl is_app2_mydomain_com hdr(host) -i app2.mydomain.com redirect location https://app2.mydomain.com:443 if is_app2_mydomain_com default_backend http-routers
对于多个证书的需求,可以通过修改/var/vcap/jobs/haproxy/config/haproxy.config里的https-in完成。将需要的证书上传到这台HAProxy,并在配置文件中添加即可,证书文件支持的格式请参见/var/vcap/jobs/haproxy/config/cert.pem。
frontend https-in mode http bind :443 ssl crt /var/vcap/jobs/haproxy/config/cert.pem crt /var/vcap/jobs/haproxy/config/app1.mydomain.com.pem crt /var/vcap/jobs/haproxy/config/app2.mydomain.com.pem option httplog option forwardfor option http-server-close reqadd X-Forwarded-Proto:\ https default_backend http-routers
相关文章推荐
- 如何配置和使用Pivotal Cloud Foundry里的HAPorxy(下)
- CloudFoundry Admin-UI 配置使用
- 如何使用 cloud-init 来预配置 LXD 容器 | Linux 中国
- spring cloud config server 使用本地配置文件报错
- SolrCloud集群的配置和使用
- Spring Cloud中如何优雅的使用Feign调用接口
- 如何在 Linux 上使用网络配置工具 Netplan
- Spring Cloud 如何选择分布式配置中心
- Spring Cloud Config 分布式配置中心使用教程
- SpringCloudConfig使用总结【分布式配置】
- Spring Cloud (20) | Spring Cloud Bus 使用kafka消息总线、gitlab添加webhooks实现自动刷新配置
- 非spring boot (即spring) 使用/集成 Spring cloud Config 分布式配置中心
- Spring配置文件中如何使用外部配置文件配置数据库连接
- 如何使用Javaconfig代替web.xml配置spring
- 官网Mysql并配置使用以及如何重装
- 如何添加,配置MyBatis中Dao文件,并使用的方法
- 如何使用 IntelliJ IDEA 2017 配置PHP开发环境 及项目搭建
- 使用Sublime Text 开发Python如何配置环境(windows 7)
- Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh
- Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh