将Java EE应用程序部署到Docker Swarm集群

什么是Docker Swarm?

Docker SwarmDocker提供本地集群。 Docker Swarm 0.2.0版本的集群 提供了Docker Swarm 的基本介绍,以及如何创建一个简单的三节点集群。作为回顾,Docker Swarm的关键组件如下所示:

Docker Swarm集群

简单来说,Swarm Manager是一个预定义的Docker主机,并且是所有管理的唯一点。其他Docker主机被定义为节点,并使用TCP与Manager进行通信。默认情况下,Swarm会使用托管的 基于Docker Hub的Discovery Service,该服务会使用tokens来找到一个集群的部分节点。每个节点会运行一个Node Agent去注册被引用的Docker后台进程,并对其进行监视,并使用该节点的状态更新Discovery Service。这个容器会在一个节点上运行。

Arun Gupta的博客还提供了完整的细节,这里只展示了创建集群的概要:

#创建集群
TOKEN = 'docker run swarm create'
#创建Swarm主干
docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://$TOKEN swarm-master
#创建swarm节点01
docker-machine create -d virtualbox --swarm --swarm-discovery token://$TOKEN swarm-node-01
创建群集节点 02
docker-machine create -d virtualbox --swarm --swarm-discovery token://$TOKEN swarm-node-02

列出集群显示:

    NAME        ACTIVE        DRIVER        STATE                URL                    ]SWARM
swarm-master                virtualbox     Running    tcp://192.168.99.106:2376     swarm-master (master)
swarm-node-01               virtualbox     Running    tcp://192.168.99.107:2376     swarm-master
swarm-node-02     *         virtualbox     Running    tcp://192.168.99.108:2376     swarm-master

它有一个主干和两个节点。

将Java EE应用程序部署到Docker Swarm

集群中的所有主机都可以使用单个虚拟主机访问。Swarm提供标准的Docker API,因此任何与单个Docker主机进行通信的工具都可以通过与该虚拟主机进行通信扩展到多个Docker主机。

Docker Container Linking Across Multiple Hosts 解释了如何链接多个Docker主机上的容器。它将Java EE 7应用程序部署到一个Docker主机上的WildFly,并将其连接到运行一个在不同Docker主机上的MySQL数据库中。我们可以使用虚拟主机部署这两个容器,然后将它们部署到Docker Swarm集群中。

让我们开始吧!

Docker Swarm上的MySQL

1.启动MySQL容器:

docker run --name mysqldb -e MYSQL_USER=mysql -e MYSQL_PASSWORD=mysql -e MYSQL_DATABASE=sample -e MYSQL_ROOT_PASSWORD=supersecret -p 3306:3306 -d mysql

2.容器的状态如下:

 COMMAND                CREATED             STATUS              PORTS                           NAMES
"/entrypoint.sh mysq    5 minutes ago       Up 4 minutes        192.168.99.107:3306->3306/tcp   swarm-node-01/mysqldb

3.它显示容器正运行在 swarm-node-01上。确保你使用eval $(docker-machine env --swarm swarm-master)连接到该Docker Swarm集群 。

4.查找启动此容器的主机的IP地址:

inspect --format '{{ .Node.Ip }}' $(docker ps -q --filter 'name=_mysqldb_')

192.168.99.107

Docker Swarm上的WildFly

  • 通过传递主机的IP地址和运行MySQL服务器的端口来启动WildFly服务器:
  • 容器的状态如下:
~> docker ps
CONTAINER ID        IMAGE                                  COMMAND                CREATED             STATUS              PORTS                           NAMES
ab5717083812        arungupta/wildfly-mysql-javaee7:host   "/opt/jboss/wildfly/   25 minutes ago      Up 25 minutes       192.168.99.108:8080->8080/tcp   swarm-node-02/mywildfly   
b49d627a0431        mysql:latest                           "/entrypoint.sh mysq   34 minutes ago      Up 33 minutes       192.168.99.107:3306->3306/tcp   swarm-node-01/mysqldb

尽情使用吧!

本文的版权归 李A 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维小白

Linux基础(day63)

18.1 集群介绍 Linux集群概述 根据功能划分为两大类:高可用和负载均衡 1.高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕...

2268
来自专栏Ryan Miao

ELK入门使用-与springboot集成

ELK官方的中文文档写的已经挺好了,为啥还要记录本文?因为我发现,我如果不写下来,过几天就忘记了,而再次捡起来必然还要经历资料查找筛选测试的过程。虽然这个过程很...

372
来自专栏蓝天

Redis-3.2.9集群配置(redis cluster)

本文参考官方文档而成:http://redis.io/topics/cluster-tutorial。经测试,安装过程也适用于redis-3.2.0。

1162
来自专栏优启梦

nginx反向代理http和https共同使用 双存在

不能自适应协议,也不支持协议变量,各种百度啊,两个钟头,测试了各种,都不适用宝塔,

1426
来自专栏散尽浮华

ELK实时日志分析平台环境部署--完整记录

在日常运维工作中,对于系统和业务日志的处理尤为重要。今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为...

2457
来自专栏散尽浮华

非常强悍并实用的双机热备+负载均衡线上方案

Heartbeat+DRBD+NFS+Keepalived+Lnmp      对于网站服务器来说,可靠性之重要不用我多说,但要想做到可靠性一般需要昂贵的...

4836

将Java EE应用程序部署到Docker Swarm集群

Docker Swarm为Docker提供本地集群。 使用Docker Swarm 0.2.0的集群一文提供了对Docker Swarm的基本介绍,以及如何创建...

2799
来自专栏互扯程序

CentOS7下Nginx服务器安装与使用教程

Nginx服务器简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。其特点是占用内存少,...

4455
来自专栏拂晓风起

cocos2d-js 在线更新代码脚本 动态更新脚本程序 热更新 绕过平台审核 不需重新上架

794
来自专栏智能大石头

Oracle免客户端For .Net(只为用NewLife.XCode开发Oracle的同学服务)

    自从发布了一篇博客Oracle免客户端For .Net(增加分析Devart和DataDirect)后,非常非常多的同学前来问各种Oracle客户端运行...

1708

扫码关注云+社区