IBM Bluemix体验:Containers进阶

时间:2022-01-21 12:33:33

上一篇中介绍了Bluemix的Containers服务以及如何使用自定义的docker image创建一个容器实例并对外提供服务。除了自定义镜像之外,Bluemix Containers还可以使用Docker Hub上的image来创建容器实例,前提是这些image必须是公共的(public)。

Bluemix的CLI可以完成从Docker Hub复制镜像的任务。

sudo cf ic cpi tomcat: registry.ng.bluemix.net/htcn_us_south_1/tomcat:

执行上述命令后,就把一个tomcat 7的image从docker hub复制到Bluemix的私有repository中了。使用“cf ic”登录到Bluemix和私有repository的url格式在此就不再赘述了,具体请参考上一篇中的介绍。

镜像复制完成,就可以在web控制台中看到并可以使用这个复制过来的镜像创建新的容器实例。

IBM Bluemix体验:Containers进阶

生产环境中高可用是必不可少的。Bluemix的Containers服务提供了scalable group功能以实现docker容器的高可用部署。

在创建新容器实例的页面上选择“Scalable”tab,开始创建scalable group。

IBM Bluemix体验:Containers进阶

注意“HTTP port”字段,这里只能填写image中暴露出来的端口号,即:Dockerfile中EXPOSE的端口号。例如:tomcat镜像中默认expose的端口号是8080,因此需要在HTTP port中填写“8080”。

HOST字段指定一个访问scalable group的公网域名,这里我们指定的完整域名为:“hunter-demo-1.mybluemix.net”。当然这个域名必须是全局(全球)唯一的(这种方式有点像Microsoft Azure的云服务)。公网域名后面对应了一个负载均衡器(GoRouter,一个支持负载均衡的反向代理),将访问流量分发给scalable group里面的每个容器实例。这个负载均衡器看起来比较简单,只是将前端流量以轮询的方式转发到后端。没有会话保持,也没有端口映射。一个比较有特色的功能是:负载均衡器实例上默认绑定了一个ssl证书,直接可以使用HTTPS协议来访问部署在容器实例中的应用,而不需要应用本身支持HTTPS协议!这个功能很容易就让应用支持HTTPS协议,而不需要在web服务器上进行复杂的配置。用户到负载均衡器之间使用HTTPS协议通讯,负载均衡器到应用实例之间使用HTTP协议。

Scalable group创建完成后,通过HOST域名可以访问到部署在容器中的应用。

IBM Bluemix体验:Containers进阶

接下来为scalable group创建auto-scaling policy:

IBM Bluemix体验:Containers进阶

可以根据cpu和memory两个指标来定义容器实例缩放规则。

IBM Bluemix体验:Containers进阶

包括指定在当前scalable group中运行的最大容器实例数量和最小容器实例数量。

IBM Bluemix体验:Containers进阶Scalable group中的实例支持自动恢复功能。Bluemix Containers服务的"Health Monitor"组件每隔90秒会对每个容器实例中的HTTP服务器进行一次探测,若某个容器实例连续2次探测失败,则该容器实例就会被自动的销毁并重建。

IBM Bluemix体验:Containers进阶

一个scalable group中至少要包含2个容器实例,这样才能确保高可用。配合"auto discovery"功能,个人经验建议在一个scalable group最少包含3个容器实例。