Docker compose v3版本构建跨主机容器编排构建wordpress集群

在Docker 1.13版本之后,可以说Docker 对于compose容器调度编排实现了飞跃,可以使得在编排容器的时候可以结合Docker swarm集群和跨主机通讯的概念。在Docker swarm 的基础之上引入stack对service镜像管理和编排。下面我们实战一下用之前构建wordpress集群来测试一下:

环境要求:

1、存在了Docker swarm集群:

[[email protected] ~]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
e9naz0ctzaaer4bwleruo34x6 *  master    Ready   Active        Reachable
rfcbavxd8yrixximm9e1i6dsn    node1     Ready   Active        Leader
shrzku0k3xx87526lkkkyrxsi    node2     Ready   Active        Reachable

##我这里有三个集群节点,都是以manager的形式存在,当然容器调度也是不影响的。

2、Docker 版本要求是1.13以上的版本:

[[email protected] ~]# docker version
Client:
 Version:      17.04.0-ce
 API version:  1.28
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Mon Apr  3 18:01:50 2017
 OS/Arch:      linux/amd64
Server:
 Version:      17.04.0-ce
 API version:  1.28 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   4845c56
 Built:        Mon Apr  3 18:01:50 2017
 OS/Arch:      linux/amd64
 Experimental: false

3、基于之前的镜像我们构建时候非常简单,直接编写compose文件即可:

[[email protected] stack]# cat compose_wordpress.yml 
version: ‘3‘
services:
  php:
    image:  192.168.63.217:5000/lnmp/php:1.0 
    volumes:
      -  /web:/web
    ports:
      - 9000:9000
  nginx:
    image:  192.168.63.217:5000/lnmp/nginx:1.0
    ports:
      - 80:80
    volumes:
      - /web:/web
    depends_on:
      - mysql
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure
  mysql:
    image:  192.168.63.217:5000/lnmp/nginx:1.0
    ports:
      - 3306:3306
    volumes:
      - /data:/var/lib/mysql

##注释;

restrat_policy:表示重启条件,我们定义是错误重启。

在v3版本,没有了link这个概念,容器之间通讯都是使用overlay网络。通讯名称都是以服务名称互联。

4、开始构建:

[[email protected] stack]# docker stack deploy -c compose_wordpress.yml wordpress
Creating network wordpress_default
Creating service wordpress_php
Creating service wordpress_nginx
Creating service wordpress_mysql
##构建时候可以看到创建一个wordpress_default这样一个overlay网络:
[[email protected] stack]# docker network ls
NETWORK ID          NAME                    DRIVER              SCOPE
e1608d2e6f7d        bridge                  bridge              local
5de3863d8bf9        docker_gwbridge         bridge              local
c97de54d6fcc        dockercompose_default   bridge              local
080a6647873b        host                    host                local
wdqd0cye6t5h        wordpress_default       overlay             swarm

5、我们查看一下相关的stack状态:

[[email protected] stack]# docker stack services wordpress
ID                  NAME                MODE                REPLICAS            IMAGE
hx5zabzybbny        wordpress_php       replicated          1/1                 192.168.63.217:5000/lnmp/php:1.0
me5s3v37tzsw        wordpress_nginx     replicated          3/3                 192.168.63.217:5000/lnmp/nginx:1.0
txz5xzgnkjbc        wordpress_mysql     replicated          1/1                 192.168.63.217:5000/lnmp/nginx:1.0

6、可以看到worepress 这个调度的stack已经起起来了,因为是与Docker swarm结合,所以我们也可以用Docker swarm 形式来查看和管理:

[[email protected] stack]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE
hx5zabzybbny        wordpress_php       replicated          1/1                 192.168.63.217:5000/lnmp/php:1.0
me5s3v37tzsw        wordpress_nginx     replicated          3/3                 192.168.63.217:5000/lnmp/nginx:1.0
txz5xzgnkjbc        wordpress_mysql     replicated          1/1                 192.168.63.217:5000/lnmp/nginx:1.0
[[email protected] stack]# docker service ps wordpress_nginx
ID                  NAME                IMAGE                                NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
9pcbe6zvjoa5        wordpress_nginx.1   192.168.63.217:5000/lnmp/nginx:1.0   master              Running             Running 4 minutes ago                       
ode397gc036g        wordpress_nginx.2   192.168.63.217:5000/lnmp/nginx:1.0   node2               Running             Running 4 minutes ago                       
76tznesy3bm8        wordpress_nginx.3   192.168.63.217:5000/lnmp/nginx:1.0   node1               Running             Running 4 minutes ago

7、都起起来了,我们访问一下web界面看一下服务是否正常:

到处已经完成了这个管理,我们可以看到Docker 社区的集群软件在不断的成熟和完善,期待Docker 推出更好更实用的功能。

时间: 2024-08-06 03:42:50

Docker compose v3版本构建跨主机容器编排构建wordpress集群的相关文章

Docker跨主机容器互传数据问题及解决方法

目前我这里docker主要使用1.5版本,用途是给研发.运维做测试环境,给游戏与平台业务做生产应用,昨天接到某游戏研发反馈,2个不同宿主机进行数据同步的时候,出现以下错误 orrupted MAC on input. Disconnecting: Packet corrupt lost connection 经过谷歌搜索发现问题原因是 "Corrupted MAC on input" This situation happens when the packet is decrypted

如何在一台ESXi主机上搭建一整套VSAN集群的环境

从上周起,我开始翻译一本新书.IT类中文书籍的翻译往往有一个术语的问题,如何选择最准确的中文术语,让读者清楚明白而且在实际操作和配置的时候不至于误解,是一件不那么容易的事情.一个简单的例子就是cluster,中文可以译作"集群"或者"群集".这两者本身都广为使用,而且是完全相同的意思.我查了一下中文亚马逊书店,136本IT类中文图书用了"集群",29本用了"群集".看上去"集群"更为普及一些,而且我本人也习

构建高可用的LVS负载均衡集群 入门篇

一.LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org.现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能. LVS 集群采用IP负载和基于内容请求分

构建高可用的LVS负载均衡集群 进阶篇

一.lvs组件介绍 lvs的组件由两部分组成:工作在内核空间的ipvs模块和工作在用户空间ipvsadm工具.其中ipvsadm是规则生成工具,而ipvs是一个使规则生效的工具. 二.ipvsadm详解 构建高可用的LVS负载均衡集群 进阶篇,布布扣,bubuko.com

实战案例:构建docker容器集群 (解决方案一:使用自定义网桥连接跨主机容器)

一.实验环境虚拟机a两块网卡    eth0   eth1 (IP地址static或者dhcp)虚拟机b两块网卡    eth0   eth1 (IP地址static或者dhcp) 二.在两台虚拟机上配置网桥虚拟机a操作:apt-get install bridge-utilsvim /etc/network/interfaces auto eth0iface eth0 inet dhcp auto eth1iface eth1 inet dhcp auto br0iface br0 inet

跨主机容器间通讯解决方案

1.docker集群间容器是否可以通信. 创建容器服务来测试:docker service create --name tomcat1 --replicas 2 192.168.56.200:5000/tomcat 测试结果ping不通. 2.docker 在早前的时候没有考虑跨主机的容器通信,这个特性直到 docker 1.9 才出现.在此之前,如果希望位于不同主机的容器能够通信,一般有几种方法:使用端口映射:直接把容器的服务端口映射到主机上,主机直接通过映射出来的端口通信把容器放到主机所在的

跨主机容器之间通信实现方式:etcd+flanned

一.环境说明 node-1: 10.0.0.168node-2: 10.0.0.169node-3: 10.0.0.170 二.初始化环境 1.hostnamectl --static set-hostname hostname 2./etc/hosts 10.0.0.168 node-1 10.0.0.169 node-2 10.0.0.170 node-3 三.安装etcd集群 1.在每台机器上 yum install -y etcd 2.配置 /etc/etcd/etcd.conf (a)

Docker容器之Compose编排、consul集群、template模板

docker compose容器编排 (1)docker compose的前身Fig,它是一个定义及运行多个docker容器的工具(2)使用docker compose不再需要使用shell脚本启动容器(3)docker compose非常适合组合使用多个容器进行开发的场景 YAML是一种标记语言很直观的数据序列化格式 文件格式及编写注意事项: 不支持制表符tab键缩进,需要使用空格缩进 通常开头缩进2个空格 字符后缩进1个空格,如冒号,逗号,横杆 用井号注释 如果包含特殊字符用单引号引起来 布

docker容器中搭建kafka集群环境

Kafka集群管理.状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一.软件环境: zookeeper集群需要超过半数的的node存活才能对外服务,所以服务器的数量应该是2*N+1,这里使用3台node进行搭建zookeeper集群. 1. 3台linux服务器都使用docker容器创建,ip地址分别为 NodeA:172.17.0.10 NodeB:172.17.0.11 NodeC:172.17.0.12 2. zookeeper的doc