将应用docker化,配合ETCD、kubernetes等工具在容器的层面上实现高可用和负载均衡
容器化部署
容器化部署应用具有灵活、高效的使用资源,容器可以包含其所需的全部文件,如同在虚拟机上部署应用程序一样,可以拥有自己的配置文件和依赖库,还可以拥有自己的网络接口。 因此,与在虚拟机上运行应用程序一样,容器化应用比直接安装的应用程序更容易迁移,而且因为应用程序所运行的每个容器均拥有独立的网络接口,所以也不会出现争用同一端口的问题 。
容器在启动时间、磁盘空间占用和 CPU 处理能力方面更具有优势,因为它既没有运行独立的操作系统,也没有包含运行整个操作系统所需的大量软件。它只包含了应用程序运行所需的软件,以及其他想随容器一起运行的工具和少量描述容器的元数据。容器的管理工具也比较完善,目前比较主流的管理工具有 : Swarm、 Kubernetes 和 Apache Mesos 。
(1) Swarm 是 Docker 的原生集群工具,它使用标准的 Docker API,这意味着容器能够使用 docker run 命令启动, Swarm 会选择合适的主机来运行容器,这也意味着其他使用 Docker API的工具比如 Compose 也能在 Swarm 上使用,从而利用其进行集群而不是在单个主机上运行 。
(2) Kubemetes (经常被缩写成 K8s )是 Google 开源的一套自动化容器管理平台,前身是 Borg ,用于容器的部署、自动化调度和集群管理。目前 Kubemetes 有以下特性:容器的自动化部署、自动化扩展或者缩容、自动化应用及服务升级、容器成组,对外提供服务,支持负载均衡 、 服务的健康检查、自动重启。
(3)Apache Mesos 是由加州大学伯克利分校的 A岛。Lab 首先开发的一款开源集群管理软件,支持 Hadoop 、Elasticsearch、 Spark、 Storm 和 Kafka 等应用架构 。