- 论坛徽章:
- 0
|
看到这个主题不错,特地留言探讨。
1、作为未来DEVOPS的运维人员,您觉得DOCKER的技术有哪些?
(感觉这个问题有点泛,所以凭借个人感觉来回答)
从Devops角度而言,可以将docker作为一个独立且轻量级的VM来对待。但从本质上来说,Docker仍然是主机上面的一个进程。 这个进程拥有独立的CPU,Memony,Network,IO等等各种资源。 实际部署场景中,一个Docker container最好只运行一个应用或者服务,这样做的好处就是可以充分利用主机资源,同时做到高可用。
2、和传统操作系统比DOCKER对您的应用会有那些改变?
并非所有应用都可以放到Docker中运行。如果将应用按照用途分类,那么Docker更适合于计算类应用。这是因为container生命周期非常短暂(在线上总会出现各种异常情况而导致container销毁,重建)。 所以需要保存中间数据的应用,绝不应该放到Docker中运行。例如数据库应用。
有的同学可能会质疑,目前mysql,mongodb等等都提供了docker 镜像,为什么还要说数据库应用不适合docker运行呢?
需要澄清的是,目前线上环境非常不合适单独使用数据库镜像,但如果一定要使用数据库镜像,那么应该遵循以下几点:
1. 尽量不使用事务。
2. 所有数据都保存在容器外部。
3. 配合服务编排系统,保证高可用
3、是否所有的系统都适合迁移到DOCKER环境中?
根据第二点的描述,答案是:不是所有的系统都适合迁移到Docker中。
Docker不是银弹,不会解决所有的问题。任何一个系统在迁移到Docker之中时,都需要按照以下要素进行评估:
1. 需要提供Rest API。
2. 不得存在事务。
3. 所有的服务一定是无状态的。
以上三点有一点不满足,则不建议迁移到docker。
4、DOCKER化之后,规模集群如何更好的避免传统HA带来的资源浪费?
在回答此问题之后,需要搞清楚传统HA有哪些资源浪费。
1. 启动时间
传统HA指的是主机节点级的互备,只有当某一个节点完成失活之后,才会让备用节点生效。虽然通过高效的协调算法,可以在分钟级内启动,但相对于container秒级启动来说仍然很重。
2. 动态扩容
这恐怕是Docker相对HA来说最大的优势了。 正因为Docker container属于轻量级应用,所以可以随时随地很轻松的对当前container服务进行扩容。借助于流量控制(例如nginx)来达到高可用。 而HA是对节点的互备,所以想要对HA集群进行扩容,代价可想而知。
3. 服务粒度
Docker container可以运行单个微服务,可以针对单个服务进行扩容和缩容,尽可能的压榨主机物理资源。而HA则只能整机互备,浪费的是一台节点的物理资源。
5、DOCKER化和SDN之间如何更好的结合,避免DOCKER化之后网络技术成为应用开发瓶颈?
这个问题抓中了docker的痛点
Docker目前最大的痛点就是网络性能。当应用完成Docker化之后,一个主机节点可以运行成百上千个容器,而每一个容器都需要OS提供一对虚拟网卡。 因此这里是目前最大的瓶颈。在Docker还没有完全解决此问题的情况下,只能建议用户:
1. 确定当前主机可以承受的最大容器量。避免网卡崩溃。
2. 确定流量分发规则,尽可能让网络流量分摊到各个节点中。
3. 结合服务编排系统,当网络流量异常时,自动进行集群扩容或者服务降级 |
|