【Docker】Swarm集群的配置与管理

it2022-05-05  180

实现Docker Swarm集群部署安装、在线创建Swarm集群和自动编配。

安装Docker Swarm (1)通过实训平台进入到操作系统界面,该实验需要两台虚拟机,首先修改主机名,修改第一台主机的主机名叫smoker,第二台主机的主机名叫joker。进入第一台主机,在#后输入hostnamectl set-hostname smoker命令,然后按Enter键,进入在第二台主机在#后输入hostnamectl set-hostname joker命令,然后按Enter键,进行修改主机名操作。示例代码如下:

#hostnamectl set-hostname smoker

#hostnamectl set-hostname joker

(2)修改两个节点的/etc/hosts文件,在#后面输入vi /etc/hosts命令,然后按Enter键,编辑hosts文件。示例代码如下:

[root@smoker ~]# vi /etc/hosts

进入Vim编辑界面,在键盘上按i键进入编译模式,编辑内容如下:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.24.2.32 smoker 10.24.2.59 joker

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

在joker 节点编辑hosts 文件。在#后输入命令vi /etc/hosts命令,然后按Enter键。示例代码如下:

[root@joker ~]# vi /etc/hosts

进入Vim 编辑界面,在键盘上按i键进入编译模式,编辑内容如下:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.24.2.32 smoker 10.24.2.59 joker

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

(3)在smoker和joker节点分别修改docker的配置文件,在#后面输入# vi /etc/sysconfig/docker,然后按Enter键,示例代码如下所示:

#vi /etc/sysconfig/docker

进入Vi 编辑界面,在键盘上按i键进入编译模式,添加如下代码:

OPTIONS='-H 0.0.0.0:2375 -H unix:///var/run/docker.sock'

修改配置文件,如图所示:

编辑结束后,按ESC键进入末行模式,输入:wq命令,然后按Enter键,保存代码并退出。

(4)修改完配置文件,重启smoker和joker两个节点的docker服务。在#后面输入systemctl daemon-reload命令,按Enter键,示例代码如下:

# systemctl daemon-reload

(5)两个节点下载swarm镜像。在#后面输入docker pull swarm命令,按Enter键,示例代码如下:

[root@smoker ~]# docker pull swarm

效果如图所示: smoker节点下载swarm镜像 joker节点下载swarm镜像

到此,安装Docker Swarm结束。

2. 在线创建Swarm集群和自动编排

(1)创建swarm(要保存初始化后token,因为在节点加入时要使用token作为通讯的密钥)。在smoker节点执行,示例代码如下(ip为本机ip):

[root@smoker ~]# docker swarm init --advertise-addr 10.24.2.32

执行结果,如图所示: 创建完成后,进行验证,在#后面输入docker node ls命令,然后按Enter键,查看集群的节点,示例代码如下:

[root@smoker ~]# docker node ls

执行结果,如图所示(ID旁边的*号代表已经连接到这个节点上):

(2)登录到joker节点,将该节点加入到swarm集群中,在#后面输入示例代码如下所示(token值在smoker节点初始化swarm的时候获得,IP 为smoker节点地址):

[root@joker ~]# docker swarm join --token SWMTKN-1-3e7cr4z7s49qnq45iysn44vqd4wi1zcntpf2ibhsssa44ayg7u-cdobfgbk0tphpmr6i22v82ucx 10.24.2.32:2377

执行结果,如图所示: (3)回到smoker节点,在#后输入docker node ls命令,然后按Enter键,查看swarm集群节点信息。示例代码如下:

[root@smoker ~]# docker node ls

执行结果,如图所示:

(4)在启动容器之前,先来创建一个覆盖网络,用来保证在不同主机上的容器网络能够互通。在#后输入 docker network create -d overlay ngx_net命令,然后按Enter键,创建网络,示例代码如下:

[root@smoker ~]# docker network create -d overlay ngx_net

执行结果,如图所示:

(5)在smoker节点上使用上面这个覆盖网络创建nginx服务:其中,–replicas 参数指定服务由几个实例组成。注意:不需要提前在节点上下载nginx镜像,这个命令执行后会自动下载这个容器镜像(比如创建tomcat容器,就将下面命令中的镜像改为tomcat镜像)。在#后输入docker service create --replicas 1 --network ngx_net --name my-test -p 80:80 nginx命令,然后按Enter键,创建容器,示例代码如下:

[root@smoker ~]# docker service create --replicas 1 --network ngx_net --name my-test -p 80:80 nginx

执行结果,如图所示:

(6) 在#后输入 docker service ls命令,然后按Enter键,查看正在运行服务的列表,示例代码如下:

[root@smoker ~]# docker service ls

执行结果,如图所示:

(7) 在#后输入docker service ps my-test命令,然后按Enter键,查询容器运行在哪个节点,示例代码如下:

[root@smoker ~]# docker service ps my-test

执行结果,如图所示: (8) 可以通过 docker service scale 命令来设置服务中容器的副本数:比如将上面的my-test容器动态扩展到5个,在#后输入docker service scale my-test=5命令,然后按Enter键,动态扩容,示例代码如下:

[root@smoker ~]# docker service scale my-test=5

执行结果,如图所示:

(9) 在#后输入docker service ps my-test命令,然后按Enter键,查看容器在swarm节点中的启动情况,示例代码如下:

[root@smoker ~]# docker service ps my-test

执行结果,如图所示:

可以看到,swarm会自动编排容器到集群中的节点上。


最新回复(0)