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

什么是Docker Swarm?

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

简而言之, Swarm Manager 是一个预定义的Docker主机,它是一个管理所有主机的单一节点。其他Docker主机被定义为节点,并与Manage通过TCP进行通信。默认情况下,Swarm使用基于Docker Hub托管的发现服务,使用token来发现集群中的部分节点。每个节点运行一个节点代理程序,该节点代理程序记录在引用Docker的守护进程上,对其进行监听,并使用该节点的状态更新发现服务。容器在一个节点上运行。

该博客给了完整的细节描述,然而如下是一个有关如何快速创建群集的总结:

# Create cluster

TOKEN=`docker run swarm create`

# Creating Swarm master

docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://$TOKEN swarm-master

# Creating swarm node 01

docker-machine create -d virtualbox --swarm --swarm-discovery token://$TOKEN swarm-node-01

Create swarm node 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容器链接一文解释了如何链接多个Docker主机上的容器。它将Java EE 7应用程序部署到一个Docker主机上的WildFly,并将其连接到一个在不同Docker主机上运行的MySQL容器。我们可以使用虚拟主机部署这两个容器,然后将它们部署到Docker Swarm集群。

让我们开始吧!

Docker Swarm上的MySQL

启动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. 可以看到容器中的状态:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

b49d627a0431 mysql:latest "/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地址:

~> docker 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

感谢阅读!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值