Py学习  »  docker

成功部署docker后,你还要做些什么?

AWS云计算 • 6 年前 • 302 次点击  

都说运维不好当

开发吃肉咱喝汤

应用多来母机少

没了 docker 干不了

相比于于传统的 VM

Docker 的优势不言而喻

这种既有不错的资源隔离能力

又能保持一个低开销的虚拟化技术

着实降低了各位运维大佬的负担

 

但也别忘了

冬吃萝卜夏吃姜

Docker 一多也发慌

再先进的虚拟化技术,没有一个合适的日志解决方案,不仅无法达到投产比最大化的理想效果,还有可能被各种闹心的迷之 ERROR 搞得焦头烂额。到时候怕是多少把 Cherry 都不够您砸的。

那么问题来了:

怎样才能优雅地

对您的 Docker 日志进行管理呢?

这就需要 AWS ECS 闪亮登场了!

                                               

接下来就有请 AWS 解决方案架构师余骏老师为我们详细的讲解其中的奥秘:

余骏

亚马逊 AWS 解决方案架构师

负责基于 AWS 的云计算方案架构的咨询和设计,同时致力于 AWS 云服务在国内的应用和推广。在加入 AWS 之前,在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富的经验。

ECS 是 AWS 发布的容器集群管理和调度服务。通过ECS 容器集群管理服务,用户可以很方便地管理成百上千个容器组成的业务系统,而无需运维容器集群管理、调度及状态存储等相关管理组件。相比于虚拟机,容器技术拥有诸多优势,使得近年来越来越多的用户选择拥抱容器技术。  

容器技术的优势

•  更有效的资源利用

•  更快的启动和销毁速度

  捆绑应用代码和运行依赖

•  版本化管理容器镜像

•  非常适合微服务的场景

尽管容器技术优势很多,但却无法解决应用程序的故障,传统虚机场景下的监控、日志搜集等应用在容器场景下同样需要。本文主要针对于运行在 AWS ECS容器集群管理服务上的容器应用,来为大家详解相关的日志解决方案,具体包括:日志搜集、搜索和分析等,并为大家解答在使用 AWS 相关日志搜集服务时候的一些常见问题,例如:

  如何更方便地搜集容器日志

•  如何将多行显示的日志汇聚成一条搜集

   如何从互联网访问VPC内部的Elasticsearch和Kibana服务

•  如何为Kibana应用添加用户登入认证功能

•  如何设置index的默认primary shard以更好地适配日志量

•  如何定期删除Elasticsearch中的老旧日志


下图是本文使用的整体架构图:

我们先简单介绍一下这个架构中各个组件的功能以及日志从生成到处理的流程:

•   ECS 是 AWS 的容器管理及调度平台,用于管理我们的应用容器

•   应用容器通过 awslogs driver 将日志输出到 CloudWatch logs 中

•    输出到 CloudWatch logs 中的日志可以实时地导入到 AWS Elasticsearch 集群中

•   用户可以通过 CloudWatch logs 界面可以对日志进行关键字匹配方式的简单搜索

•   用户也可以通过 nginx 代理调用Elasticsearch API 或者登入 Kibana 对日志进行更为丰富地搜索和分析

•  Nginx 代理服务器为 internet 上的用户提供代理及登入认证功能,Route 53服务为 internet访问提供 DNS 解析服务,同时对 nginx server 进行健康检查并在必要的时候进行故障切换

•   CloudWatch logs 中的日志也可以定期批量导入到S3中通过 Athena,Redshift,EMR 等大数据分析工具分析,并通过 QuickSight 做展示 (这部分内容不作为本文介绍的重点)

•   用户可以通过 Cloud 9 IDE 开发 lambda 程序,该 lambda 由 CloudWatch Events 每天触发用于根据自定义策略清理 Elasticsearch 中的老旧日志,全量日志保存在 CloudWatch logs 及S3中



ECS 支持多种 docker logs driver 将容器中的日志输出,比如:awslogs、fluentd、json-file等。其中,awslogs 相比于其他 driver 有如下优势:

•  天然集成 CloudWatch logs 对日志进行搜索、查看,并能根据需要产生 metrics,进而基于日志产生事件告警

•  默认启用,无需通过 user data 修改 ECS 实例的配置

•   默认安装,无需通过 user data 或者自定义AMI安装

•  输出到 CloudWatch logs 中的日志以 task id而非 container id 进行分类,便于追溯

•   配置简单

在接下来的内容里,我们将介绍:

如何创建 Elasticsearch 集群

配置nginx代理服务器

等内容


请感兴趣的同学

扫描/长按识别下方二维码

阅读学习!


联系 AWS 技术专家?

马上点击“阅读原文



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/Atv1mUpntN
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/6926
 
302 次点击