当前位置: 首页 > news >正文

岳阳网站优化电子工程专辑

岳阳网站优化,电子工程专辑,监控设备公司企业网站源码,免费设计在线生成Docker Swarm Ingress网络是Docker集群中的一种网络模式#xff0c;它允许在Swarm集群中运行的服务通过一个公共的入口点进行访问。Ingress网络将外部流量路由到Swarm集群中的适当服务#xff0c;并提供负载均衡和服务发现功能。 在Docker Swarm中#xff0c;Ingress网络使…Docker Swarm Ingress网络是Docker集群中的一种网络模式它允许在Swarm集群中运行的服务通过一个公共的入口点进行访问。Ingress网络将外部流量路由到Swarm集群中的适当服务并提供负载均衡和服务发现功能。 在Docker Swarm中Ingress网络使用了一种称为Routing Mesh的技术。Routing Mesh通过在Swarm集群的每个节点上创建一组代理来实现负载均衡和服务发现。这些代理将外部流量路由到适当的服务并自动处理服务的扩展和缩减。 ingress routing mesh是docker swarm网络里最复杂的一部分内容包括多方面的内容 iptables的Destination NAT流量转发Linux bridge, network namespace使用IPVS技术做负载均衡包括容器间的通信overlay和入方向流量的端口转发 主机规划 node1172.19.177.14角色为Leadernode2172.19.188.123角色为Worker $ sudo docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION u36el9nkyamqgihcwj5yk4cwe * node1 Ready Active Leader 24.0.2 0e8q2v9glvt56jbk9mpbkhc9l node2 Ready Active 24.0.2service创建 创建一个service名为web 通过-p把端口映射出来 $ sudo docker service create --name web -p 8080:80 --replicas 2 containous/whoami j2bzt3mi7yedm4um6g5o96ndd overall progress: 2 out of 2 tasks 1/2: running [] 2/2: running []我们使用的镜像containous/whoami是一个简单的web服务能返回服务器的hostname和基本的网络信息比如IP地址。 查询service $ sudo docker service ps web ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS q9s4ggh2oaq2 web.1 containous/whoami:latest node2 Running Running 14 seconds ago 1vomhe5jo3hq web.2 containous/whoami:latest node1 Running Running 14 seconds agoservice的访问 8080这个端口到底映射到哪里了尝试访问两个swarm节点的IP加端口8080 $ curl 172.19.177.14:8080 Hostname: 3a0d0ab2c13b IP: 127.0.0.1 IP: 10.0.0.5 IP: 172.20.0.3 RemoteAddr: 10.0.0.2:51986 GET / HTTP/1.1 Host: 172.19.177.14:8080 User-Agent: curl/7.58.0 Accept: */*$ curl 172.19.188.123:8080 Hostname: 1356383a5cdc IP: 127.0.0.1 IP: 10.0.0.6 IP: 172.18.0.3 RemoteAddr: 10.0.0.3:58008 GET / HTTP/1.1 Host: 172.19.188.123:8080 User-Agent: curl/7.58.0 Accept: */*可以看到两个节点的8080端口都可以访问并且回应的容器是不同的hostname也就是有负载均衡的效果。 ingress数据包的走向 以node1节点为例来看看数据到底是如何达到service中的container $ sudo iptables -nvL -t nat Chain PREROUTING (policy ACCEPT 2583 packets, 256K bytes)pkts bytes target prot opt in out source destination7447 447K DOCKER-INGRESS all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL 17212 1036K DOCKER all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCALChain INPUT (policy ACCEPT 1830 packets, 114K bytes)pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 1816 packets, 110K bytes)pkts bytes target prot opt in out source destination147 10427 DOCKER-INGRESS all -- * * 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL0 0 DOCKER all -- * * 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCALChain POSTROUTING (policy ACCEPT 1816 packets, 110K bytes)pkts bytes target prot opt in out source destination7 420 MASQUERADE all -- * docker_gwbridge 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match src-type LOCAL0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/08 672 MASQUERADE all -- * !docker_gwbridge 172.18.0.0/16 0.0.0.0/0Chain DOCKER (2 references)pkts bytes target prot opt in out source destination0 0 RETURN all -- docker0 * 0.0.0.0/0 0.0.0.0/00 0 RETURN all -- docker_gwbridge * 0.0.0.0/0 0.0.0.0/0Chain DOCKER-INGRESS (2 references)pkts bytes target prot opt in out source destination2 120 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 to:172.18.0.2:80807587 457K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0外部访问的流量首先进入nat表的PREROUTING链PREROUTING链的第一条规则会将所有的流量转发至DOCKER-INGRESS自定义链在DOCKER-INGRESS链中可以看到一条DNAT的规则所有访问本地8080端口的流量都被转发到 172.18.0.2:8080。 那么这个172.18.0.2是谁的ip呢 查看docker_gwbridge网桥详情 首先172.18.0.0/16这个网段是网桥docker_gwbridge的所以这个地址肯定是连在了docker_gwbridge上。 $ sudo docker network inspect docker_gwbridge [{Name: docker_gwbridge,Id: 06c86fd2ac810906cc53669d4a1f01c0036fb3b7a35863f23a898a7a7faa5dfd,Created: 2023-11-17T09:07:00.959710462Z,Scope: local,Driver: bridge,EnableIPv6: false,IPAM: {Driver: default,Options: null,Config: [{Subnet: 172.18.0.0/16,Gateway: 172.18.0.1}]},Internal: false,Attachable: false,Ingress: false,ConfigFrom: {Network: },ConfigOnly: false,Containers: {1356383a5cdcd023acb9fc5090d983be4717161ef6e8416b38070f84e2d38b72: {Name: gateway_7e04894d7701,EndpointID: 9cda42b1d59f9643905169f92fd2d24c62c8d451096c4c002c8c5c0733d3c50e,MacAddress: 02:42:ac:12:00:03,IPv4Address: 172.18.0.3/16,IPv6Address: },ingress-sbox: {Name: gateway_ingress-sbox,EndpointID: 5011de467d80ba0f1bc9b97b6625f2dc6104cc4913495fe84af9e27661df0730,MacAddress: 02:42:ac:12:00:02,IPv4Address: 172.18.0.2/16,IPv6Address: }},Options: {com.docker.network.bridge.enable_icc: false,com.docker.network.bridge.enable_ip_masquerade: true,com.docker.network.bridge.name: docker_gwbridge},Labels: {}} ]可以看到除了容器web.2gateway_7e04894d7701连接到docker_gwbridge这个网桥上还有一个叫ingress-sbox的容器也连接了docker_gwbridge它的IP地址是172.18.0.2/16。 ingress-sbox网络命名空间 这个ingress-sbox其实并不是一个容器而是一个网络命名空间(network namespace), 我们可以通过下面的方式进入到这个命名空间 $ sudo ls /run/docker/netns/ 1-m4np8jn3j5 7e04894d7701 ingress_sbox$ sudo nsenter --net/run/docker/netns/ingress_sbox ip addr 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever 119: eth0if120: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1450 qdisc noqueue state UP group defaultlink/ether 02:42:0a:00:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0inet 10.0.0.2/24 brd 10.0.0.255 scope global eth0valid_lft forever preferred_lft foreverinet 10.0.0.4/32 scope global eth0valid_lft forever preferred_lft forever 121: eth1if122: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 1inet 172.18.0.2/16 brd 172.18.255.255 scope global eth1valid_lft forever preferred_lft forever通过查看IP地址发现这个命名空间连接了两个网络一个eth1是连接了docker_gwbridge另外一个eth0连接了ingress这个网络。 ingress-sbox对流量的处理 前面我们已经看到访问宿主机的8080端口宿主机会将流量转发到ingress-sbox172.18.0.2的8080端口接下来看下ingress-sbox对流量是怎么处理的 $ sudo nsenter --net/run/docker/netns/ingress_sbox iptables -nvL -t mangle Chain PREROUTING (policy ACCEPT 20 packets, 1820 bytes)pkts bytes target prot opt in out source destination12 804 MARK tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 MARK set 0x10fChain INPUT (policy ACCEPT 12 packets, 804 bytes)pkts bytes target prot opt in out source destination0 0 MARK all -- * * 0.0.0.0/0 10.0.0.4 MARK set 0x10fChain FORWARD (policy ACCEPT 8 packets, 1016 bytes)pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 12 packets, 804 bytes)pkts bytes target prot opt in out source destinationChain POSTROUTING (policy ACCEPT 20 packets, 1820 bytes)pkts bytes target prot opt in out source destinationMARK是iptables的一个目标用于给数据包打上指定mark我们可以看到ingress-sbox对8080端口的流量打上MARK为0x10f对应的十进制为271。 由于ingress_sbox会通过ipvs负载转发数据包到某个容器的虚拟ip上即Routing Mesh路由转发故需要通过ipvsadm指令查看对应的路由结果。 此时我们查看ipvs负载路由通过命令ipvsadm可以发现标记位271会将数据包轮询(rr)发送到10.0.0.5和10.0.0.6这两个IP地址。 $ sudo nsenter --net/run/docker/netns/ingress_sbox ipvsadm IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn FWM 271 rr- 10.0.0.5:0 Masq 1 0 0- 10.0.0.6:0 Masq 1 0 0接下来就是10.0.0.2和10.0.0.5或10.0.0.6这两个容器之间的通讯了参考上节的overlay网络通讯。
http://www.yutouwan.com/news/9668/

相关文章:

  • 公司网站模板 免费英特尔网站开发框架
  • 深圳龙华住房和建设局网站西安建设工程交易中心官网
  • html5 网站 源码如何开发微信公众平台
  • 主机屋网站在那注册前端 模板 网站
  • 做一个像美团的网站需要多少钱免费的设计素材网
  • 长沙建设局网站网站搜索栏怎么做
  • 有关房地产开发建设的网站品牌建设的内容
  • 深圳网站建设需要多少钱1688一件代发详细步骤
  • 河南省城乡和住房建设厅网站湖北省建设厅网站查询
  • 云南电子政务网站建设免费地方门户网站源码
  • 榆林做网站需要注意的几点个人社保缴费基数查询
  • 做海报的参考网站成都高端网站建设公司
  • 建站公司网站社区个人网页制作总结
  • 做网站哪些网络公司好青海网站设计高端
  • 企业网站最底下做的是什么西安网站建设易网宣
  • 如何快速建设推广网站网页美工设计总结
  • 网站建设过程中应该注意的事项有wordpress宽度
  • php网站开发薪资 深圳瑞安市公用建设局网站
  • 网页设计构建的基本流程郑州网站建设专业乐云seo
  • 网站建设专业公司稻香村网站建设
  • 自己做网站的图片wordpress 搬家 密码
  • 网站空间便宜自学网站开发多久
  • 怎样提交网站地图广州软件开发外包公司
  • 新闻型网站建设电子商务书店网站设计实验
  • 网站建设标书样本现在公司做各网站要多少钱
  • 电子商务网站建设关于实验室建设的英文网站
  • 鞍山公司网站建设seo软件简单易排名稳定
  • 北京欢迎您网站建设网站建设竞价托管服务
  • 快速做网站服务好wordpress 元描述
  • 网站开发属于软件设计嘛淘宝关键词搜索量查询工具