您当前的位置: 首页 >  ar

陈橙橙丶

暂无认证

  • 5浏览

    0关注

    107博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【docker的那些事】搭建Swarm集群

陈橙橙丶 发布时间:2022-03-30 23:24:34 ,浏览量:5

前言

前面我们对docker compose进行了介绍和使用,然而docker compose比较适用于单机的环境下,对于多机的环境下docker也提供了对应的能力,首先我们得准备三台服务器,任意三台可以互相访问的服务器都行。

搭建swarm集群

选择一台服务器为manger。

manager node也可以作为worker node提供服务

查看ip 在这里插入图片描述 执行:

docker swarm init --advertise-addr=你的ip

此处注意控制台的打印信息 在这里插入图片描述

进入另外两个worker服务器,分别执行

docker swarm join --token SWMTKN-1-5id7urk9xw4az24taxiqhipjz5s9rbwgiblgpl6qmnu3frqt5k-1ycqd8krdfqz2m4mciunzvpow ip:2377

看看控制台打印 在这里插入图片描述 完成之后在manager查看节点信息,发现集群node正常创建

docker node ls

在这里插入图片描述 可以将worker提升成manager,从而保证manager的高可用,当manger不可用时,设置的节点可以竞选leader

docker node promote tmtlpvxrt6dldkv8r96v5iaur

#降级可以用
docker node demote tmtlpvxrt6dldkv8r96v5iaur

在这里插入图片描述 至此swarm搭建的就完成了,我们在来看看swarm的使用

swarm使用 service

创建一个service

docker service create --name my-tomcat tomcat

查看当前swarm的service

docker service ls

在这里插入图片描述 查看service的启动日志

docker service logs my-tomcat

查看service详情

docker service inspect my-tomcat

查看my-tomcat运行在哪个node上

docker service ps my-tomcat

在这里插入图片描述 水平扩展service

docker service scale my-tomcat=3

docker service ls

docker service ps my-tomcat

在这里插入图片描述 注意:这里如果某个节点的container挂掉了他会自动扩展。

删除service

docker service rm my-tomcat
多机通信overlay网络

场景:使用workpress+mysql实现个人博客搭建

传统手动方式实现
#创建mysql容器。
docker run -d --name mysql   -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=examplepass -e MYSQL_DATABASE=db_wordpress mysql:5.6

#创建wordpress容器[将wordpress的80端口映射到centos的8080端口]
docker run -d --name wordpress --link mysql -e WORDPRESS_DB_HOST=mysql:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=examplepass -e WORDPRESS_DB_NAME=db_wordpress -p 8080:80 wordpress

#查看默认bridge的网络,可以发现两个容器都在其中
docker network inspect bridge


#访问测试
ip[centos]:8080
使用docker compose创建
#创建wordpress-mysql文件夹
mkdir -p /tmp/wordpress-mysql

cd /tmp/wordpress-mysql

#创建docker-compose.yml文件
version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:
#根据docker-compose.yml文件创建service
docker-compose up -d

#访问测试
ip[centos]:8080

Swarm中实现

创建一个overlay网络,用于docker swarm中多机通信

docker network create -d overlay my-overlay-net

注意:此时我们是在主节点中创建的这个网络因此我们使用 docker network ls的时候此时在子节点中是看不到这个网络的。

在这里插入图片描述 在主节点创建mysql的service

#创建service
docker service create --name mysql --mount type=volume,source=v1,destination=/var/lib/mysql --env MYSQL_ROOT_PASSWORD=examplepass --env MYSQL_DATABASE=db_wordpress --network my-overlay-net mysql:5.6

#查看service
docker service ls
docker service ps mysql

在这里插入图片描述

在这里插入图片描述 运气不是很好,mysql的container部署在了leader节点上,我们来对他进行扩容尝试。

docker service scale mysql=2

在这里我想表达的是,因为刚刚我们创建了my-overlay-net的这个网络,并且在子节点中我们是看不到这个网络,因此,如果我们刚刚创建的service不是部署在leader节点上,而是在worker节点上,那么在worker节点上,其实是可以看到这个my-overlay-net网络的,我们等待扩容结束。

在这里插入图片描述

完成之后,我们通过 docker network ls发现在该机器上运行了一个service也看到了我们自定义的网络。

创建wordpress的service

docker service create --name wordpress --env WORDPRESS_DB_USER=root --env WORDPRESS_DB_PASSWORD=examplepass --env WORDPRESS_DB_HOST=mysql:3306 --env WORDPRESS_DB_NAME=db_wordpress -p 8080:80 --network my-overlay-net wordpress

访问 ip:8080

在这里插入图片描述 此时你会发现使用 三个节点的任意一个 ip:8080都能够访问。

关注
打赏
1648473527
查看更多评论
立即登录/注册

微信扫码登录

0.0718s