010 docker搭建swarm集群

010 docker搭建swarm集群

1.前言

    刚开始找资料搭建时,发现网上有两种搭建方式:
    第一种:docker run –rm swarm create   一代 Swarm,也被称为 Docker Swarm

    第二种:docker swarm init    二代 Swarm,这是内置的 Swarm

    本文采用第二种方式搭建swarm集群

2.搭建

    假设有三台机器:192.168.20.201   192.168.20.202   192.168.20.203,准备用 201 作为master

    2-1创建管理节点

docker swarm init --advertise-addr 192.168.20.201

    执行完会显示token,创建工作节点时需要该token,Manager和Worker节点之间通信端口是2377

005828_BsZl_2937605.png

    2-2创建子节点

    分别在 192.168.20.202  和 192.168.20.203 上执行命令,指定IP:–advertise-addr 192.168.20.202,

我用的是三台云主机,内网不通,必须用 –advertise-addr 指定当前机器IP,否则会造成后面网络不通

docker swarm join --advertise-addr 192.168.20.202 --token 上面的token 192.168.20.202:2377
docker swarm join --advertise-addr 192.168.20.203 --token 上面的token 192.168.20.203:2377

133001_0sxl_2937605.png 

    2-3查看集群信息

    该命令只能在master上执行

docker node ls

010550_cpNd_2937605.png

    2-4查看节点IP信息

docker node inspect master
docker node inspect slave01
docker node inspect slave02

    可以分别查看swarm中各主机的IP,如果跟机器IP不一样,网络会访问不通

144201_XP81_2937605.png

3.配置跨主机网络访问

    3-1配置docker启动参数

    在 /usr/lib/systemd/system/docker.service 中找到 ExecStart=/usr/bin/dockerd 并在其后添加 :
    -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 结果如下:

135350_qH7e_2937605.png

    3-2新建overlay网络

docker network create -d overlay central

134140_PtyK_2937605.png

4.测试

    4-1从仓库拉取一个tomcat镜像

docker pull tomcat
docker tag docker.io/tomcat tomcat

    4-2启动镜像,指定网络类型

docker service create -p 8080:8080 --replicas 3 --name web --network central tomcat

140903_a4uo_2937605.png

    4-3查看相关信息

docker service ls

140935_9ZMt_2937605.png

#web为启动镜像时的名称
docker service ps web

140947_UP6U_2937605.png

    4-4查看是否在同一网络中    

docker network inspect central

    central 是我们启动服务时使用的 overlay 网络,由于服务分到了三台机器上,这三台机器都加入了central网络,这样三台主机才能互通

143641_3Nud_2937605.png

    4-4访问测试   

    分别在 三台机器上 docker ps 均能看见Tomcat项目在运行,用浏览器分别访问:192.168.20.201-3:8080 都会出现tomcat首页

    4-5主机互通测试

    分别在 master 和 slave01 执行命令,查看到二者的容器IP:

# 查看容器信息,记下这里的 CONTAINER ID 和 NAMES
docker ps
# 查看容器详细信息
docker inspect f884d3151995

145117_6o8L_2937605.png

    进入 slave02 的容器:

docker ps
docker exec -it da10f3f58af7 /bin/bash

145334_kHi3_2937605.png

    测试网络,如果能ping通,则成功,如果不成功,兄弟,那就看缘分了

# 容器IP
ping 10.0.0.17
ping 10.0.0.18
# 容器NAMES
ping web.2.yru4aykeld6h5kgg3nryw0m74
ping web.1.7gqta8k7sf8vbsvyvcxnx8vhd

  另外,docker stop其中一台机器上的服务,服务会重新自动新建一个:

011919_TkQ6_2937605.png

012214_KKHc_2937605.png

    移除运行项目,必须在master执行:

docker service rm web

4.删除swarm

    首先在所有子节点机器执行:

# 子节点退出swarm
docker swarm leave

    然后master执行:

# 主节点移除子节点
docker node rm slave01  
docker node rm slave02
# 主节点退出集群
docker swarm leave --force

 

转载于:https://my.oschina.net/u/2937605/blog/1797575

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101711.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • php数组根据某一个键值,把相同键值的合并生成一个新的二维数组

    php数组根据某一个键值,把相同键值的合并生成一个新的二维数组

  • Linux makefile 教程 非常详细,且易懂

    Linux makefile 教程 非常详细,且易懂           最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。           于是google到了以下这篇文章。通俗易懂。然后把它贴出来,方便学习。          后记,看完发现这篇文章和《Linux环境下的C编程指南》的makefile一章所讲述的惊人的相似,只是这篇文章从一个实例切

  • 全球vps交流网站超级vps管理器_phpyun采集

    全球vps交流网站超级vps管理器_phpyun采集今天在写《请珍惜免费资源》这篇文章的时候无意中又发现一款无限流量免费PHP空间「FreeWebHostingArea」,搜索了一下已经有14年的时间,下面老俍就来介绍一下这款免费主机的申请及使用说明。FreeWebHostingArea是美国的一个老牌的免费空间服务商,从2005年开始提供免费PHP空间服务。距今已有14年的时间,真没想到一款免费主机能活这么长时间。FreeWe…

  • SpringBoot + Vue 开发前后端分离的旅游管理系统

    SpringBoot + Vue 开发前后端分离的旅游管理系统旅游管理系统项目简介需求分析数据库建表环境搭建引入依赖(pom.xml)配置文件(application.properties)前端页面注册功能验证码工具类项目简介所需技术栈:后端技术栈:springboot+mybatis前后端分离:axios、json前端技术栈、技术架构:Vue、node.js要求:了解Vue组件之前的知识对springboot+mybatis较熟悉开发流程:需求分析库表设计编码(项目环境搭建+编码)项目调试项目部署上线需求分析

  • 安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器

    安卓蓝牙键盘鼠标映射_蓝牙鼠标模拟器一直以来就有一种想法,就是自己写一个APP将安卓手机模拟成鼠标/键盘,应急的时候可以用来代替鼠标/键盘。之前也在国内外的网站上找了各种方案,但是这些方案不是很好,直到谷歌发布的API28后终于有了很好的解决方案。为了实现这个想法也走了不少弯路,也许方法不对吧,但看到最终完美运行的APP,心中还是很有成就感的。经测试装了此APP的手机能与几乎所有安卓手机、WIN10笔记本电脑连接并操作,苹果设备需要………

    2022年10月22日
  • python追加写入文本_python向文件中追加内容

    python追加写入文本_python向文件中追加内容withopen(‘data.txt’,’a’,encoding=’utf8′)asf:print(indexCode001,’:’,name001)f.writelines(indexCode001+”|”+name001+’\n’)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号