关于容器存储容器外部卷使用Convoy,以插件的形式支持容器持久化数据。容器本身与外部卷均使用Device Mapper作为底层。没有选择分布式存储原因,主要是为了简化实现,更稳定。通过限制每个容器的BlkioDeviceReadBps、BlkioDeviceWriteBps、BlkioDeviceReadIOps、BlkioDeviceWriteIOps,使磁盘IO稳定地达到相当于95%物理机性能。
对于Device Mapper,因为是红帽推荐的,而OS又是用的CentOS7.2, 所以就用了它。测试过程中发现Device Mapper健壮性不是很好,仅仅在低并发下,也会出现容器删除失败的情况,容器并发启停偶尔出现找不到设备的情况。这种使用映射关系的设备,功能是丰富,实现上过于复杂,每次对设备的修改都需要额外去更新Metadata,并发场景出错的机会就大了。让我再选的话我会考虑Overlay这种更简单的driver。
对于Convoy,是来自Rancher的产品,Go语言,仍然处于未成熟阶段,版本号0.5, 并没有完全实现Volume Plugin接口。相比其它模块它的问题也是最多的,例如Volume创建失败,无法删除,UNIX Socket泄漏,重名冲突,异常自动退出等。属于能用,但未完善的状态,你自己得有一定开发调试能力去解决发现的问题。其它几个存储插件情况也差不多,Flocker、Blockbridge、Horcrux等等,有的连第一个正式发布版都还没有,Convoy反而相对好点,有点烂柿子堆里挑的感觉。
对于Docker本身的Volume Plugin接口,我们也遇到一些坑。下面是其中一些:
后来在测试中尝试使用Telegraf + InfluxDB + Grafana。 只需要Grafana简单的配置,能够帮忙我们清晰地展示容器及服务进程CPU、内存、网络、磁盘等情况。Grafana上SQL查询语句的调试与开发,确实需要不少的时间,但这个工作量是一次性的。因为是Go写的,Telegraf CPU占用属于比较低的水平(0.4 – 5%)。功能上比较丰富,同时支持外部进程与容器的数据收集,多达55种数据源插件,有它就不需要布cAdvisor了,个人比较推荐。需要告警的同学,可以考虑把influxDB改成Prometheus。它包含Alertmanager实现Email、PagerDuty等消息通知。数据Backend可以选择自带的DB,也可以外接influxDB、Graphite、OpenTSDB等流行方案。
监控领域业界已经有很多开源方案可以参考,以下是要衡量的标准:易扩展、开销低、入侵小、大集中、易部署、实时性、展现清晰灵活。这方面希望与各位有更多的交流。
Q&AQ:发现现在很多采用桥接网桥的方式改善Docker网络 ,这个可有测试?
A:桥接网桥的方式是个简单的方案,但IP地址分配只能在本机做IPAM,无法全局管理,存在地址资源浪费的问题。
Q:“容器异常退出IP地址不能释放的问题,这都需要我们自己去解决。”可否提供一个大致的解决思路?
A:计划通过libnetwork unix socket调一个叫ReleaseEndpoint的API,这样可以保证删除操作的完整性,包括ovs port、etcd ep信息、IP地址。
Q:Docker 1.12内置Docker swarm mode,Overlay网络的性能相比其他开源方案的优劣势是什么?
A:Overlay网络的优势在于对虚拟网络,多租户场景支持更好,没有4096个的限制, 然而没有支持VXLAN硬件的情况下无法直接访问,这对于开发,问题定位,监控都是个难题。性能的话对于容器来说不会是一个瓶颈。
Q:做过Mesos 1.0测试吗?1.0已经不会依赖Docker daemon了?
A:Mesos 1.0中仍然支持Docker作为Containerizer。实验环境验证过Mesos + Docker + Netplugin是可行的,理论上无论用哪个Mesos版本,只要它仍然支持Docker,那么就可以网络插件的形式来落地网络实现。
Q:容器一般是即用即销毁,想问下,你们做的容器监控,是如何保证数据持久性的?
A:MySQL备份出来的数据是保存在容器外部卷上,即宿主机上的,容器销毁外部卷并不会被删除,所以数据仍然能够保留下来。
Q:Devicemapper使用的是Direct LVM吗?设备空间用满的情况下如何扩容?
A:是的。扩容可以通过添加物理磁盘设备,扩VG,再resize dm pool大小。
Q:当您用到上百台机器的时候,镜像是提前下载好的吗?还是临时下载,有没有做镜像下载加速这块儿?
A:镜像是保存在本地IDC的Registry里,所有机器访问Registry通过相近的网络,下载速度很快。好的做法是先全局Pull一次再Run吧。
Q:我对容器中放数据库的性能比较担心,你们的性能这么高,主要做了什么配置?
A:因为害怕互相抢资源,我们严格限制单一主机的容器数量、CPU、内存、磁盘都不超配。在资源充足的情况下,MySQL跑在容器里跟跑在外面没有本质的区别,都是进程。
Q:关于监控这块,上文提到了两个,能给我们介绍一下Zabbix和cAdvisor的分工吗?
A:Zabbix通过自己写的脚本,向cAdvisor RESTful接口请求容器监控数据。
Q:MySQL数据库容器化后,性能如何?故障恢复速度怎么样?
A:从数据备份恢复的角度来说,基本与在物理机上跑相当。
对于Device Mapper,因为是红帽推荐的,而OS又是用的CentOS7.2, 所以就用了它。测试过程中发现Device Mapper健壮性不是很好,仅仅在低并发下,也会出现容器删除失败的情况,容器并发启停偶尔出现找不到设备的情况。这种使用映射关系的设备,功能是丰富,实现上过于复杂,每次对设备的修改都需要额外去更新Metadata,并发场景出错的机会就大了。让我再选的话我会考虑Overlay这种更简单的driver。
对于Convoy,是来自Rancher的产品,Go语言,仍然处于未成熟阶段,版本号0.5, 并没有完全实现Volume Plugin接口。相比其它模块它的问题也是最多的,例如Volume创建失败,无法删除,UNIX Socket泄漏,重名冲突,异常自动退出等。属于能用,但未完善的状态,你自己得有一定开发调试能力去解决发现的问题。其它几个存储插件情况也差不多,Flocker、Blockbridge、Horcrux等等,有的连第一个正式发布版都还没有,Convoy反而相对好点,有点烂柿子堆里挑的感觉。
对于Docker本身的Volume Plugin接口,我们也遇到一些坑。下面是其中一些:
- Docker Volume Plugin不支持获取Volume使用状态数据
- Docker Volume Plugin存在file descriptor leaks bug ——https://github.com/docker/docker/pull/20686
- Swarm定期list会偶然触发Docker volume cache bug——https://github.com/docker/docker/issues/21403
后来在测试中尝试使用Telegraf + InfluxDB + Grafana。 只需要Grafana简单的配置,能够帮忙我们清晰地展示容器及服务进程CPU、内存、网络、磁盘等情况。Grafana上SQL查询语句的调试与开发,确实需要不少的时间,但这个工作量是一次性的。因为是Go写的,Telegraf CPU占用属于比较低的水平(0.4 – 5%)。功能上比较丰富,同时支持外部进程与容器的数据收集,多达55种数据源插件,有它就不需要布cAdvisor了,个人比较推荐。需要告警的同学,可以考虑把influxDB改成Prometheus。它包含Alertmanager实现Email、PagerDuty等消息通知。数据Backend可以选择自带的DB,也可以外接influxDB、Graphite、OpenTSDB等流行方案。
监控领域业界已经有很多开源方案可以参考,以下是要衡量的标准:易扩展、开销低、入侵小、大集中、易部署、实时性、展现清晰灵活。这方面希望与各位有更多的交流。
Q&AQ:发现现在很多采用桥接网桥的方式改善Docker网络 ,这个可有测试?
A:桥接网桥的方式是个简单的方案,但IP地址分配只能在本机做IPAM,无法全局管理,存在地址资源浪费的问题。
Q:“容器异常退出IP地址不能释放的问题,这都需要我们自己去解决。”可否提供一个大致的解决思路?
A:计划通过libnetwork unix socket调一个叫ReleaseEndpoint的API,这样可以保证删除操作的完整性,包括ovs port、etcd ep信息、IP地址。
Q:Docker 1.12内置Docker swarm mode,Overlay网络的性能相比其他开源方案的优劣势是什么?
A:Overlay网络的优势在于对虚拟网络,多租户场景支持更好,没有4096个的限制, 然而没有支持VXLAN硬件的情况下无法直接访问,这对于开发,问题定位,监控都是个难题。性能的话对于容器来说不会是一个瓶颈。
Q:做过Mesos 1.0测试吗?1.0已经不会依赖Docker daemon了?
A:Mesos 1.0中仍然支持Docker作为Containerizer。实验环境验证过Mesos + Docker + Netplugin是可行的,理论上无论用哪个Mesos版本,只要它仍然支持Docker,那么就可以网络插件的形式来落地网络实现。
Q:容器一般是即用即销毁,想问下,你们做的容器监控,是如何保证数据持久性的?
A:MySQL备份出来的数据是保存在容器外部卷上,即宿主机上的,容器销毁外部卷并不会被删除,所以数据仍然能够保留下来。
Q:Devicemapper使用的是Direct LVM吗?设备空间用满的情况下如何扩容?
A:是的。扩容可以通过添加物理磁盘设备,扩VG,再resize dm pool大小。
Q:当您用到上百台机器的时候,镜像是提前下载好的吗?还是临时下载,有没有做镜像下载加速这块儿?
A:镜像是保存在本地IDC的Registry里,所有机器访问Registry通过相近的网络,下载速度很快。好的做法是先全局Pull一次再Run吧。
Q:我对容器中放数据库的性能比较担心,你们的性能这么高,主要做了什么配置?
A:因为害怕互相抢资源,我们严格限制单一主机的容器数量、CPU、内存、磁盘都不超配。在资源充足的情况下,MySQL跑在容器里跟跑在外面没有本质的区别,都是进程。
Q:关于监控这块,上文提到了两个,能给我们介绍一下Zabbix和cAdvisor的分工吗?
A:Zabbix通过自己写的脚本,向cAdvisor RESTful接口请求容器监控数据。
Q:MySQL数据库容器化后,性能如何?故障恢复速度怎么样?
A:从数据备份恢复的角度来说,基本与在物理机上跑相当。
http://fndfbfb.weebly.com/
http://dbgfng.weebly.com/
http://ccccccccsdv.weebly.com/
http://dfbdfbfbds.weebly.com/
http://sdbdfbdsv.weebly.com/
http://aogaifei38924.weebly.com/
http://sdbhrfdb.weebly.com/
http://hrtgjghjn.weebly.com/
http://vfsdvdfb.weebly.com/
http://sdgdbvgb.weebly.com/
http://rtyiki14.weebly.com/
http://sfdhgfn.weebly.com/
http://fdfdfn.weebly.com/
http://fbfdfdvv.weebly.com/
http://haozhongmeyi7.weebly.com/
http://fddfhfgh.weebly.com/
http://dsgrhfdf.weebly.com/
http://dvsdbdf.weebly.com/
http://dbdffnfgn.weebly.com/
http://ardedrfhfh.weebly.com/
http://dsvsdvsdvdbb.weebly.com/
http://dsddfbfb.weebly.com/
http://dfbhdfgbngn.weebly.com/
http://sdbdfbfb.weebly.com/
http://dvvvdb.weebly.com/
http://zhang912101.weebly.com/
http://zhang912101.weebly.com/
http://sdsdfbfb.weebly.com/
http://bfdfdf.weebly.com/
http://dbdfbfb.weebly.com/
http://dfgdfhfdvvv.weebly.com/
http://bfdbdfbfb.weebly.com/
http://dsssdfbdfb.weebly.com/
http://fdgfdffvv.weebly.com/
http://djykuk.weebly.com/
http://fnhyju.weebly.com/
http://163comdg.weebly.com/
http://aetuyjuj.weebly.com/
http://fdhyjjk.weebly.com/
http://cdgdtfhgh.weebly.com/
http://gjkklcc.weebly.com/
http://dfhhmhd.weebly.com/
http://fdngym5.weebly.com/
http://dvsr3dv.weebly.com/
http://sdhg4wy.weebly.com/
http://sdvberhh.weebly.com/
http://weimoubu8.weebly.com/
http://svsdvbfb.weebly.com/
http://rjhyjgn.weebly.com/
http://dsdfhdfgngn.weebly.com/
http://vsdvfb.weebly.com/
http://dbgfng.weebly.com/
http://ccccccccsdv.weebly.com/
http://dfbdfbfbds.weebly.com/
http://sdbdfbdsv.weebly.com/
http://aogaifei38924.weebly.com/
http://sdbhrfdb.weebly.com/
http://hrtgjghjn.weebly.com/
http://vfsdvdfb.weebly.com/
http://sdgdbvgb.weebly.com/
http://rtyiki14.weebly.com/
http://sfdhgfn.weebly.com/
http://fdfdfn.weebly.com/
http://fbfdfdvv.weebly.com/
http://haozhongmeyi7.weebly.com/
http://fddfhfgh.weebly.com/
http://dsgrhfdf.weebly.com/
http://dvsdbdf.weebly.com/
http://dbdffnfgn.weebly.com/
http://ardedrfhfh.weebly.com/
http://dsvsdvsdvdbb.weebly.com/
http://dsddfbfb.weebly.com/
http://dfbhdfgbngn.weebly.com/
http://sdbdfbfb.weebly.com/
http://dvvvdb.weebly.com/
http://zhang912101.weebly.com/
http://zhang912101.weebly.com/
http://sdsdfbfb.weebly.com/
http://bfdfdf.weebly.com/
http://dbdfbfb.weebly.com/
http://dfgdfhfdvvv.weebly.com/
http://bfdbdfbfb.weebly.com/
http://dsssdfbdfb.weebly.com/
http://fdgfdffvv.weebly.com/
http://djykuk.weebly.com/
http://fnhyju.weebly.com/
http://163comdg.weebly.com/
http://aetuyjuj.weebly.com/
http://fdhyjjk.weebly.com/
http://cdgdtfhgh.weebly.com/
http://gjkklcc.weebly.com/
http://dfhhmhd.weebly.com/
http://fdngym5.weebly.com/
http://dvsr3dv.weebly.com/
http://sdhg4wy.weebly.com/
http://sdvberhh.weebly.com/
http://weimoubu8.weebly.com/
http://svsdvbfb.weebly.com/
http://rjhyjgn.weebly.com/
http://dsdfhdfgngn.weebly.com/
http://vsdvfb.weebly.com/