复制vmware overLay网络无法ping通 ping www.baidu.com可以

因为忘记关闭防火墙了!!!!!    要永久关闭!!

 

修改hostname

https://blog.csdn.net/qq_27327261/article/details/109100219

 

关闭防火墙

https://blog.csdn.net/qq_27327261/article/details/109099020

 

1) 初始化swarm

docker swarm init
# Swarm initialized: current node (0r4xjgtu4nd9txrsbfn1lo5gu) is now a manager.
# 
# To add a worker to this swarm, run the following command:
# 
#     docker swarm join \
#     --token SWMTKN-1-0q35cj5j0va82a0t3mhkbesirqb6lqgqlkmznbwx1ojbou4u75-ejrors77ezcw25nmy9g90u9a0 \
#     172.16.0.226:2377
# 
# To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

 

2)创建overlay网络

docker network create -d overlay --attachable prod-overlay

 

3)创建10个overlay容器

docker service create -td --name c --replicas 10 --network prod-overlay busybox

 

4)不同虚拟机的容器ping一下是可以ping通的

docker exec    c.1.0d5lp95bt73ou3t18zky09qc5    ping     c.3.e9blo0rq21tnppvkmg66nsygi

 

 

 

 

 

 

 

https://blog.csdn.net/mylitboy/article/details/106369721

Docker Swarm实现跨宿主机容器间访问

麦粒橙 2020-05-27 06:05:47  264  收藏 1

分类专栏: Docker 文章标签: docker swarm

版权

使用Docker Swarm实现跨宿主机容器间访问

背景:

在SerA服务器,运行了一个任务调度系统xxl容器ConA。
在SerB服务器,运行了一个SpringBoot服务ConB,注册到任务调度系统中。

在任务调度系统中,看到的调度器节点IP是SerB服务器分配给ConB容器的IP地址。 导致任务调度系统调度失败,提示ConB地址链接不上。

分析下来,是由于ConA和ConB是跨宿主机的容器,无法通信。

网上看到了很多方案,包括Overlay网络、OpenvSwitch、consul方案等,最终使用Docker Swarm解决了,发现很简单,过程如下。

1. 初始化swarm

在主节点运行docker swarm init,初始化swarm。

docker swarm init
# Swarm initialized: current node (0r4xjgtu4nd9txrsbfn1lo5gu) is now a manager.
# 
# To add a worker to this swarm, run the following command:
# 
#     docker swarm join \
#     --token SWMTKN-1-0q35cj5j0va82a0t3mhkbesirqb6lqgqlkmznbwx1ojbou4u75-ejrors77ezcw25nmy9g90u9a0 \
#     172.16.0.226:2377
# 
# To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

2. 创建Overlay网络

在主节点,创建overlay模式网络。

docker network create --driver=overlay --gateway 192.168.1.1 --subnet 192.168.1.0/24 --attachable my_network
# m3k69pn88gtre361upi

可以通过docker network ls命令,查看网络列表。

docker network ls
# NETWORK ID          NAME                DRIVER              SCOPE
# acaeb6e14a1e        bridge              bridge              local
# a8e5fdd055b9        docker_gwbridge     bridge              local
# b50eb414bcb4        host                host                local
# om6lst4j52go        ingress             overlay             swarm
# m3k69pn88gtr        my_network          overlay             swarm
# 0c76adacfcfc        none                null                local

3. 子节点加入集群

复制上面初始化swarm命令结果中的语句,在子节点运行即可。

docker swarm join \--token SWMTKN-1-va82a0t3mhkbesirqb6lqgqlkmznbwxu4u75-ejrors790u9a0 \172.16.0.226:2377
# This node joined a swarm as a worker.

可以在主节点,通过docker node ls命令,查看节点列表。

docker node ls
# ID                         HOSTNAME          STATUS  AVAILABILITY  MANAGER STATUS
# 0r4xjgtu4nd9tsbfn1lo5gu *  ecs-01            Ready   Active        Leader
# s67afk1e9nx0174yeqff6g2    ecs.h02           Ready   Active        

4. 运行容器加入网络

在容器运行命令中,加入--network my_network --ip 192.168.1.123即可。

docker run -it -d --network my_network --ip 192.168.1.123 ubuntu

 

 

 

 

 

https://chanjarster.github.io/post/docker-overlay-network/

一种生产环境Docker Overlay Network的配置方案

January 9, 2019

 

介绍一种生产环境Docker overlay network的配置方案。

概要

先讲一下生产环境中的问题:

  • 有多个Docker host,希望能够通过Docker swarm连接起来。
  • Docker swarm只适合于无状态应用,不适合有状态应用。
  • 因此生产环境中会同时存在
    1. 无状态应用:利用docker service create/docker stack deploy创建的。
    2. 有状态应用:利用docker run/docker compose up创建的。
  • 希望两种应用能够连接到同一个overlay网络,在网络内部能够通过
    1. tasks.<service-name> DNS name 连接到无状态应用(见Container discovery)
    2. <container-name> DNS name 连接到有状态应用

解决办法:

  1. 创建attachable的overlay network
  2. 有状态应用挂到这个overlay network上
  3. 无状态应用也挂到这个overlay network上

步骤

到manager节点上创建attachable的overlay network,名字叫做prod-overlay:

docker network create -d overlay --attachable prod-overlay

在manager节点上查看这个网络是否创建成功:

$ docker network lsNETWORK ID          NAME                DRIVER              SCOPE
fbfde97ed12a        bridge              bridge              local
73ab6bbac970        docker_gwbridge     bridge              local
a2adb3de5f7a        host                host                local
nm7pgzuh6ww4        ingress             overlay             swarm
638e550dab67        none                null                local
qqf78g8iio10        prod-overlay        overlay             swarm

在worker节点上查看这个网络,这时你看不到这个网络,不过不要担心,当后面在worker节点上创建工作负载后就能看到了:

$ docker network lsNETWORK ID          NAME                DRIVER              SCOPE
fbfde97ed12a        bridge              bridge              local
73ab6bbac970        docker_gwbridge     bridge              local
a2adb3de5f7a        host                host                local
nm7pgzuh6ww4        ingress             overlay             swarm
638e550dab67        none                null                local

在manager上创建容器c1,挂到prod-overlay network上:

docker run --name c1 --network prod-overlay -itd busybox

在worker上创建容器c2,挂到prod-overlay network上:

docker run --name c2 --network prod-overlay -itd busybox

在manager上创建service c,挂到prod-overlay network上:

docker service create -td --name c --replicas 2 --network prod-overlay busybox

验证

查看worker节点的network

之前在worker节点上没有看到prod-overlay network,现在你应该可以看见了:

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
01180b9d4833        bridge              bridge              local
cd94df435afc        docker_gwbridge     bridge              local
74721e7670eb        host                host                local
nm7pgzuh6ww4        ingress             overlay             swarm
32e6853ea78d        none                null                local
dw8kd2nb2yl3        prod-overlay        overlay             swarm

确认容器可以互ping

到manager节点上,让c1 ping c2

$ docker exec c1 ping -c 2 c2
PING c2 (10.0.2.2): 56 data bytes
64 bytes from 10.0.2.2: seq=0 ttl=64 time=0.682 ms
64 bytes from 10.0.2.2: seq=1 ttl=64 time=0.652 ms

到manager节点上,让c1 ping tasks.ctasks.c是之前创建的service c的DNS name:

$ docker exec c1 ping -c 2 tasks.c
PING tasks.c (10.0.2.8): 56 data bytes
64 bytes from 10.0.2.8: seq=0 ttl=64 time=2.772 ms
64 bytes from 10.0.2.8: seq=1 ttl=64 time=0.694 ms

到manager节点上,让c1 查询 tasks.c的DNS name,可以看到tasks.c有两条记录:

$ docker exec c1 nslookup -type=a tasks.c
Server:		127.0.0.11
Address:	127.0.0.11:53Non-authoritative answer:
Name:	tasks.c
Address: 10.0.2.7
Name:	tasks.c
Address: 10.0.2.8

到manager节点上,查看service c的task,看到有c.1c.2两个task,分别部署在两个节点上:

$ docker service ps c
ID            NAME  IMAGE           NODE            DESIRED STATE  CURRENT STATE           ERROR  PORTS
p5n70vhtnz2f  c.1   busybox:latest  docker-learn-1  Running        Running 17 minutes ago
byuoox1t7cve  c.2   busybox:latest  docker-learn-2  Running        Running 17 minutes ago

c.1 task所在的节点上,查看task c.1的容器名:

$ docker ps -f name=c.1
CONTAINER ID  IMAGE           COMMAND  CREATED         STATUS         PORTS  NAMES
795a3bd3c20a  busybox:latest  "sh"     21 minutes ago  Up 21 minutes         c.1.p5n70vhtnz2f5q8p2pcvbyfmw

然后在c1里ping task c.1的容器名:

$ docker exec c1 ping -c 2 c.1.p5n70vhtnz2f5q8p2pcvbyfmw
PING c.1.p5n70vhtnz2f5q8p2pcvbyfmw (10.0.2.7): 56 data bytes
64 bytes from 10.0.2.7: seq=0 ttl=64 time=0.198 ms
64 bytes from 10.0.2.7: seq=1 ttl=64 time=0.128 ms

你同样可以:

  • c2里:
    1. ping c1
    2. ping tasks.c
    3. ping task c.1c.2的容器
  • 在task c.1c.2的容器里:
    1. ping c1c2
    2. ping tasks.c
    3. ping task c.1c.2的容器

注意

通过docker run / docker compose up创建的容器的名字,要保证在整个集群里是唯一的。docker 不会帮你检查名称冲突的情况,如果名称冲突了那么会得到错误的DNS结果。

参考资料

  • Use overlay networks
  • Use an overlay network for standalone containers
  • Docker Reference Architecture: Designing Scalable, Portable Docker Container Networks

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/327293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2016.NET Core相关内容回顾

每一年的脚步的确是快&#xff0c;转眼间马上就2017。.NET Core 2014年宣布开源以来&#xff0c;在2016年发布了第一个版本&#xff0c;2017年将发布第二个版本&#xff0c;在这新年之际&#xff0c;我们回顾2016年&#xff0c;新的一年&#xff0c;带着理想和抱负继续出发。 1…

微服务化的数据库设计与读写分离

转载自 微服务化的数据库设计与读写分离 数据库永远是应用最关键的一环&#xff0c;同时越到高并发阶段&#xff0c;数据库往往成为瓶颈&#xff0c;如果数据库表和索引不在一开始就进行良好的设计&#xff0c;则后期数据库横向扩展&#xff0c;分库分表都会遇到困难。 对于…

centos7 切换中文输入法 无需安装

*************** 当你发现自己的才华撑不起野心时&#xff0c;就请安静下来学习吧&#xff01;***************

Consul 服务注册与服务发现

1. 服务注册 对 Consul 进行服务注册之前&#xff0c;需要先部署一个服务站点&#xff0c;我们可以使用 ASP.NET Core 创建 Web 应用程序&#xff0c;并且部署到 Ubuntu 服务器上。 ASP.NET Core Hell World 应用程序示例代码&#xff0c;只需要三个文件&#xff0c;Startup.cs…

tar (child): .tgz\r:无法 open: 没有那个文件或目录

Linux下运行bash脚本显示“: /usr/bin/env: "bash\r": 没有那个文件或目录 程序员小熊 2017-12-18 14:45:45 18395 收藏 7 分类专栏&#xff1a; Linux 版权 用 ./ 运行bash脚本文件出现 报错信息 /usr/bin/env: "bash\r": 没有那个文件或目录 错误原…

Entity Framework Core 1.1 升级通告

Entity Framework Core&#xff08;EF Core&#xff09;是一个轻量级的&#xff0c;可扩展和实体框架的跨平台版本。今天&#xff0c;我们宣布 Entity Framewor Core 1.1 正式可用了。 EF Core 和 .NET Core 遵循相同的发行周期。每2个月不断的改进和每6个月的新功能发布。这是…

聊聊微服务架构及分布式事务解决方案

转载自 聊聊微服务架构及分布式事务解决方案 分布式事务场景如何设计系统架构及解决数据一致性问题&#xff0c;个人理解最终方案把握以下原则就可以了&#xff0c;那就是&#xff1a;大事务小事务&#xff08;原子事务&#xff09;异步&#xff08;消息通知&#xff09;&am…

使用熔断器设计模式保护软件

作为软件开发人员&#xff0c;我们的生活是快节奏的&#xff0c;我们采用的是敏捷软件开发方法&#xff0c;迭代式的开发我们软件功能&#xff0c;开发完成提交测试&#xff0c;通过了QA的测试后被部署到生产环境&#xff0c;然后可怕的事情在生产环境里发生了&#xff0c;生产…

hql投影查询之—— [Ljava.lang.Object; cannot be cast to cn.bdqn.guanMingSys.entity.Notice

最近在做项目中遇到一个简单的问题&#xff0c;但是解决了好久&#xff0c;问题就是投影查询。 先来看看出现的异常&#xff1a; java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to cn.bdqn.guanMingSys.entity.Notice at cn.bdqn.guanMingSys.dao.i…

架构师之路:从码农到架构师你差了哪些

转载自 架构师之路&#xff1a;从码农到架构师你差了哪些 Web应用&#xff0c;最常见的研发语言是Java和PHP。 后端服务&#xff0c;最常见的研发语言是Java和C/C。 大数据&#xff0c;最常见的研发语言是Java和Python。 可以说&#xff0c;Java是现阶段中国互联网公司中&…

Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制

将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题&#xff0c;就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现。SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字&#xff0c;它表明数据库中数…

干货 | Tomcat 连接数与线程池详解

转载自 干货 | Tomcat 连接数与线程池详解 前言 在使用tomcat时&#xff0c;经常会遇到连接数、线程数之类的配置问题&#xff0c;要真正理解这些概念&#xff0c;必须先了解Tomcat的连接器&#xff08;Connector&#xff09;。 在前面的文章 详解Tomcat配置文件server.xml…

120项优化: 超级爬虫Hawk 2.0重磅发布!

沙漠君在历时半年&#xff0c;修改无数bug&#xff0c;更新一票新功能后&#xff0c;在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥&#xff1f;你不知道Hawk干吗用的&#xff1f; 这是采集数据的挖掘机&#xff0c;网络猎杀的重狙&#xff01;半年多以前&#xff0c;沙漠君写…

github创建一个新的tag

https://git-scm.com/book/en/v2/Git-Basics-Tagging

phone6s home键按不动了怎么办 苹果6s home键按不动解决方法

iphone6s home键按不动了怎么办 苹果6s home键按不动解决方法 作者&#xff1a;佚名 来源&#xff1a;绿茶软件园 2016-02-15 15:53:35 iphone6s home键按不动了怎么办&#xff1f;有iphone用户遇到home键按不动了的问题&#xff0c;下文小乐哥带来苹果6s home键按不动解决方法…

开源库Magicodes.ECharts使用教程

概要 Magicodes.ECharts是心莱团队基于百度EChart封装的开源的.NET类库&#xff0c;以便让用户更快更便捷的上手开发EChart图表。本篇主要讲解Magicodes.ECharts的相关使用。 注意&#xff1a;EChart图表插件是由百度提供的一套前端图表库&#xff0c;可以流畅运行在PC端和移动…

.NET Core 2.0版本预计于2017年春季发布

微软项目经理Immo Landwerth公布了即将推出的.NET Core 2.0版本的细节&#xff0c;该版本预计于2017年春季发布。这是.NET Core平台的一个重要发布&#xff0c;因为2.0版本对.NET Core的各项功能都有显著扩展。 言归正传&#xff0c;我们来看看即将发布的.NET Core 1.0版本。按…

我是一棵“树”

转载自 我是一棵“树” 我是一颗树&#xff0c;之前我们数据结构家族中的一个小朋友——“栈” 已经给你们介绍过的我们这个家族了&#xff08;我是一个“栈”&#xff09;。之所以叫栈为小朋友&#xff0c;是因为我和他的爸爸——数组是平辈的。 之所以存在我们这样一个家庭&…