在Swarm里管理服务和程序
我们的集群已经OK,是时候计划部署几个服务了。之前提到,管理者节点的角色是接受Docker命令,并且将他们应用到集群里面。因此,我们会在管理者节点创建服务。
注意
在这点上,确实没有什么工作需要在工作节点完成,因为他们受到管理者节点全面控制。
创建一个服务
命令如下:
docker service create --replicas -p : --name
我们在管理者节点运行上面的命令。下面,我们使用WordPress例子来向大家介绍。由于我们已经在本地拥有了这个镜像,所以省去了从hub上面下载的过程。
我们使用副本数量为3,因为我们现在有三个工作节点;使用docker node ls命令可以查到我们有几个节点。
注意
We do not create a replica count; this introduces the following topics. -p参数 :将容器内部的端口映射到主机端口。我们没有必要创建和节点数量相同的副本数量。其他节点可以处理不同的应用,比如数据库:
我们创建了一个web,基于WordPress镜像,并且将主机的80端口映射给容器的80端口。
服务列表
命令如下:
docker service ls
该命令查看当前运行的服务以及其他信息,比如副本数量,镜像文件,端口等等。
从输出可以看出,我们刚刚启动的服务以及相关信息:
服务状态
通过如下命令,我们可以知道我们的服务是否正常运行:
docker service ps
从服务列表中,我们看不到所有我们需要的信息,比如,该服务部署到了哪个节点。但是我们可以知道服务是否正常运行,以及遇到的问题,如果有的话。当我们在管理者节点上运行的时候,我们有如下输出:
注意
查看状态很重要。有一种情况,当我们在节点升级或者更新节点的时候,docker ps会告诉我们节点的状态。在理想的DockerSwarm设置中,当一个节点异常,管理者节点可以将业务流量定向到其他可用节点,因此会有一点点宕机时间,除非监控可行。在节点上运行的之前,首先使用该命令看看节点的状态。
我们如何知道我们的站点运行了?
我们可以通过在浏览器里面输入工作节点的IP地址,来验证我们的WordPress是否正常运行。
下面是验证截图:
注意
打开任何运行WordPress web服务的ip地址,包括管理者节点,会打开相同的地址。
行动2-在Swarm里面运行服务
首先,确保我们的管理者节点在运行。
下面就让我们来熟悉Swarm里的服务管理。
下面我们被要求在swarm里面部署一个新的postgre服务。
- 创建一个节点,命名为dbworker:
docker-machine create --driver virtualbox dbworker
- 将新worker节点加入到swarm里面:
- 创建一个新的数据库服务,命名为db,使用postgre镜像:
docker service create --replicas 1 --name db postgres
- 输出如下:
- 使用如下的步骤验证postgre的运行情况:
- 端口映射,将主机的5432端口映射给db容器的5432端口:
docker run --name db -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 postgres
- 运行docker ps查看正在运行的容器列表;我们能看到postgre容器是在UP状态:
- 停止容器的命令如下: