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

企业网站群建设方案苏州搜索引擎优化

企业网站群建设方案,苏州搜索引擎优化,圆通在线客服系统,无锡企业网站制作哪家好《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章继续提供测试案例: 基于veth pair、namespace以及路由技术,实现跨主机命名空间之间的通信 1、网络拓扑如下 2、网络拓扑构建…

《零入门kubernetes网络实战》视频专栏地址
https://www.ixigua.com/7193641905282875942

本篇文章视频地址(稍后上传)


本篇文章继续提供测试案例:
基于veth pair、namespace以及路由技术,实现跨主机命名空间之间的通信

1、网络拓扑如下

在这里插入图片描述

2、网络拓扑构建

2.1、第1步:在master上执行下面的命令

ip netns add ns1ip link add veth1a type veth peer name veth1bip link set veth1a netns ns1ip netns exec ns1 ip addr add 10.244.1.2/24 dev veth1a
ip netns exec ns1 ip link set veth1a up
ip addr add 10.244.1.3/24 dev veth1b
ip link set veth1b upip netns exec ns1 route add default gw 10.244.1.3
ip route add 10.244.2.0/24 via 10.211.55.123echo 1 > /proc/sys/net/ipv4/ip_forward

在这里插入图片描述

route -n
ip netns exec ns2 route -n

2.2、第2步:在slave上执行下面的命令

ip netns add ns2ip link add veth2a type veth peer name veth2bip link set veth2a netns ns2ip netns exec ns2 ip addr add 10.244.2.2/24 dev veth2a
ip netns exec ns2 ip link set veth2a up
ip addr add 10.244.2.3/24 dev veth2b
ip link set veth2b upip netns exec ns2 route add default gw 10.244.2.3
ip route add 10.244.1.0/24 via 10.211.55.122echo 1 > /proc/sys/net/ipv4/ip_forward

在这里插入图片描述

route -n
ip netns exec ns2 route -n

3、跨主机通信测试

登录到master节点上,进行跨主机通信测试

测试两种协议,ICMP协议和HTTP协议。

3.1、测试案例1:在master节点上跨主机ping slave节点上ns2里的veth2a网卡

针对ICMP协议,进行测试。

ip netns exec ns1 ping 10.244.2.2

在这里插入图片描述

3.2、测试案例2:在master节点上跨主机远程访问slave节点上ns2里的http-web服务

针对HTTP协议,进行测试。

3.2.1、http-web服务代码

提供一个http-web服务,代码如下

package mainimport ("encoding/json""fmt""net/http"
)type Stu struct {Age intMsg string
}const ip = "10.244.2.2"func sayHello(w http.ResponseWriter, r *http.Request) {stu := Stu{Age: 12, Msg: "hello world! this is Veth pair Test!"}stuJson, e := json.Marshal(&stu)if e != nil {panic(e)}w.Write(stuJson)fmt.Printf("Reply MSG:%v\tlen(Msg):%d\n", string(stuJson), len(stuJson))
}func main() {http.HandleFunc("/", sayHello)fmt.Printf(fmt.Sprintf("App URL: http://%s:%d\n", ip, 9090))err := http.ListenAndServe(fmt.Sprintf("%s:%d", ip, 9090), nil)if err != nil {fmt.Printf("http server failed, err:%v\n", err)return}
}

在这里插入图片描述

本地编译,上传到slave服务器上

build:CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o http-web main.goscp:scp http-web root@10.211.55.123:/rootall:make build && make scp

在本地执行

make all

即可。

3.2.2、namespace 隔离说明(为什么在ns2命名空间里可以访问本地宿主机的文件)

说明一点:

namespace仅仅是对网络资源的隔离,

namespace隔离的网络跟宿主机的网络是互不影响的。

但是,在namespace里是可以访问本地的宿主机的。

如下:

在这里插入图片描述

3.2.3、在slave节点上,ns2命名空间里启动http-web服务

ip netns exec ns2 ./http-web 

在这里插入图片描述

3.2.4、在master节点上,ns1去测试ns2里的http-web服务

ip netns exec ns1 ip a sip netns exec ns1 curl 10.244.2.2:9090

在这里插入图片描述

4、原理介绍

4.1、测试用例中可以实现跨主机通信的原理?

观察网络拓扑创建命令,似乎跟以前差不多。

只是新增了一条路由而已,如下:

ip route add 10.244.2.0/24 via 10.211.55.123

就可以实现跨主机通信了。

主要原因是:

  • 将每个节点作为路由器来使用了。
    • 如,将master节点,slave节点分别作为路由器来使用。
  • 既然是将节点作为路由器来使用,那么,当节点如master节点收到数据包后,对数据包进行一层一层的解析,依次获取目的MAC地址,发现MAC地址是自己的MAC地址,继续获取目的IP地址,
  • 查询本地的路由表,判断是否有去往目的地址的路由
    • 如果有,就将此数据包转发到此路由上
    • 如果没有,就采取其他策略,如丢弃。
  • 当然,存在目标路由的话,还不行,还要查看iptables规则,查看FORWARD是否允许转发。

4.2、如何将一个linxu服务器作为路由器使用呢?

配置如下命令即可

echo 1 > /proc/sys/net/ipv4/ip_forward

准确的说:

配置完成后,服务器就具备了路由器的路由转发功能了。

4.3、具体如何使用呢?

4.3.1、将Linux服务器作为路由器的注意点

在这里插入图片描述

对比下,下面的图,可能更熟悉
在这里插入图片描述

假设将整个master节点作为一个私有网络,该私有网络的网段是10.244.1.0/24;

eth0作为该私有网络的网关。

slave节点同样的道理;

那么,该私有网络的数据包要访问slave节点的私有网络时,master节点的私有网络的数据包得通过本节点的

网关eth0进行发送,下一条地址就是slave节点的私有网络的网关,即10.211.55.123

同样的道理,slave节点的私有网络要想访问master节点的私有网络的原理是一样的。

也就是说,服务节点master有点类似于路由器的功能,实现了数据包的跨网络的路由转发的能力。

因此,将Linux服务器作为路由器有一个暗含要求:
节点必须在同一个网段呢。

4.3.2、具体设置路由

在master节点上,假设10.244.1.0/24网段的数据包的目的地址是10.244.2.0/24
那么,需要在master节点上,添加的路由是

ip route add 10.244.2.0/24 via 10.211.55.123

在这里插入图片描述

在slave节点上,假设10.244.2.0/24网段的数据包的目的地址是10.244.1.0/24
那么,需要在slavae节点上,添加的路由是

ip route add 10.244.1.0/24 via 10.211.55.122

5、传输过程,数据包的报文内容变化

5.1、在master节点上,抓取veth1b网卡的数据包

tcpdump -nn -i veth1b -w icmp-veth1b.pcap

在这里插入图片描述

5.2、在master节点上,抓取eth0网卡的数据包

tcpdump -nn icmp -i eth0 -w icmp-eth0.pcap

在这里插入图片描述

5.3、根据抓包情况,分析一下报文

在这里插入图片描述

直接路由转发数据包的方式,性能比较高。

不像vxlan模式没有经过额外的封包,解封包过程。

6、整个传输过程,经历过哪些iptables规则链

为了验证测试,分别在master节点、slave上添加日志埋点;

此过程,需要使用到rsyslog服务

6.1、在master节点上安装rsyslog服务

yum -y install rsyslog

6.1.1、更新配置文件

echo "kern.*     /var/log/iptables.log" >> /etc/rsyslog.conf 

在这里插入图片描述

.*,表示所有等级的消息都添加到iptables.log文件里

信息等级的指定方式

  • .XXX,表示 大于XXX级别的信息
  • .=XXX,表示等于XXX级别的信息
    • 如,kern.=notice /var/log/iptables.log, 将notice以上的信息添加到iptables.log里
  • .!XXX, 表示在XXX之外的等级信息

6.1.2、重启rsyslog服务

systemctl restart rsyslogsystemctl status  rsyslog

在这里插入图片描述

6.2、在slave节点上安装rsyslog服务

可完全参考master节点安装过程

6.3、添加针对icmp协议的DNAT规则

如果测试的是tcp服务的协议的话,添加日志埋点时,可能存在测试不足的情况。

因为tcp协议,除了我们自己测试在用外,其他服务也可能在用tcp服务等等吧。

因此,这里使用icmp协议来测试。

(因为测试环境只有我们在用icmp协议,可以唯一确定,然后将规则链的匹配条件设置到最大)

6.4、添加日志埋点

6.4.1、在master节点上,添加日志埋点

将当前的日志统计清零

iptables -t nat -Z
iptables -t filter -Z

插入日志埋点前,先查看一下,当前的现状

iptables -t nat -nvL PREROUTING --line-number
iptables -t filter -nvL FORWARD --line-number
iptables -t nat -nvL POSTROUTING --line-number

插入日志埋点

iptables -t nat -I PREROUTING -p icmp -j LOG --log-prefix "Nat-PREROUTING-1-"
iptables -t filter -A FORWARD -p icmp -j LOG --log-prefix "Filter-FORWARD-1-"
iptables -t nat -I POSTROUTING -p icmp -j LOG --log-prefix "Nat-POSTROUTING-1-"

在这里插入图片描述

实时查看日志

tail -f /var/log/iptables.log

6.4.2、在slave节点上,添加日志埋点

将当前的日志统计清零

iptables -t nat -Z
iptables -t filter -Z

插入日志埋点前,先查看一下,当前的现状

iptables -t nat -nvL PREROUTING --line-number
iptables -t filter -nvL FORWARD --line-number
iptables -t nat -nvL POSTROUTING --line-number

插入日志埋点

iptables -t nat -I PREROUTING -p icmp -j LOG --log-prefix "Nat-PREROUTING-1-"
iptables -t filter -A FORWARD -p icmp -j LOG --log-prefix "Filter-FORWARD-1-"
iptables -t nat -I POSTROUTING -p icmp -j LOG --log-prefix "Nat-POSTROUTING-1-"

slave节点上的日志埋点跟master节点是一样的

6.5、第1次请求时,经过的iptables规则链

在这里插入图片描述

6.6、第1次反馈时,经过的iptables规则链

在这里插入图片描述

反馈时,只经过了FORWARD链。

6.7、第2次以及以后的请求、反馈时,经过的iptables规则链

在这里插入图片描述

请求、反馈时,只经过了FORWARD链。

7、总结

本机主要是利用了Linux服务器可以作为路由器转发功能,这一特点

实现了不同宿主机上不同命名空间的跨主机通信

这种方式,性能比较高。

当然,要求是必须是宿主机在同一个网段。

如果,你已经理解了本文的测试方案,那么,

恭喜你了!

flannel中的Host-gw模式的核心,你已经掌握了。


点击 下面 返回 专栏目录

<<零入门kubernetes网络实战>>技术专栏之文章目录

http://www.hrbkazy.com/news/33863.html

相关文章:

  • 山西建设工程备案网站网络推广公司官网
  • 深圳在建高铁站百度小说app下载
  • 黑龙江交通基础设施建设网站广州白云区最新信息
  • 如何做网站推广页面友情链接格式
  • 敦煌做网站 条件google谷歌搜索引擎
  • 我的免费网是个什么网站网络营销机构官方网站
  • 做资料分享网站有哪些独立站怎么搭建
  • aspcms手机网站源码网络营销郑州优化推广公司
  • 哪个网站可以做魔方图片企业宣传网站
  • 网站开发维护运维江苏网站建设制作
  • 在百度做网站需要什么资料nba在线直播免费观看直播
  • 做网站淮南高级seo是什么职位
  • 贵州两学一做网站合肥网络营销公司
  • 网站做哪些比较赚钱网页设计需要学什么
  • 义乌门户网站建设资源搜索引擎
  • 北京网站设计优选刻开发外包网站
  • 深圳优秀网站建设公司百度推广优化
  • 英雄联盟网站建设广告软文范例大全100
  • wordpress响应式网站模板下载百度sem是什么意思
  • 用手机制作word文档的app整站优化工具
  • 做招商加盟的网站网上销售方法
  • 网站怎么做才能将名声打响营销网络怎么写
  • 资源网站排名优化seo搜索引擎优化的概念是什么
  • 个人网站做镜像如何实现网站的快速排名
  • 网站建设定制友情链接网站
  • 公司做网站让拍照备案推广自己的网站
  • 龙胜网站建设公司免费建站模板
  • 杭州网站建设V芯ee8888e精准客源
  • 如何做网站的内容云搜索引擎
  • 短信轰炸网站开发怎么优化网络