点赞
评论
收藏
分享
举报
基于 macvlan 实现多租场景下的 nginx 集群部署实践(二)
发表于2022-10-18 18:03

浏览 1.2k

文章标签

继 基于 macvlan 实现多租场景下的 nginx 集群部署实践(一) - NGINX开源社区 续


四、搭建Macvlan命名空间

    Macvlan技术可以在主机的一个网卡上配置多个虚拟的子网卡,这些子网卡可以配置自己独立的mac地址和IP进行通信。同时它支持VLAN,同一VLAN间的数据通信可直接二层互访,不需要使用路由。不同VLAN的租户如果需要通信,需要三层设备做路由。本文的示例中,我们以不同租户非同一网段,使用Macvlan Bridge模式为示例做简单的讲解。

步骤1:开启混杂模式

    分别在node1,node2节点开启混杂模式:

# ip link set ens33 promisc on


步骤2:分别在node节点创建管理网子接口:

    在node1节点创建管理网子网卡ens33.0,并配置管理网地址100.76.8.10:

# ip link add link ens33 dev ens33.0 type macvlan mode bridge
# ip a a 100.76.8.10/24 dev ens33.0
# ip link set ens33.0 up
# ip a


    查看node1节点ens33.0的配置详情:


    同理,在node2节点创建管理网子网卡ens33.0,并配置管理网地址100.76.8.15:

# ip link add link ens33 dev ens33.0 type macvlan mode bridge
# ip a a 100.76.8.15/24 dev ens33.0
# ip link set ens33.0 up
# ip a


    查看node2节点ens33.0的配置详情:


步骤3:分别在node节点创建2个租户命名空间并配置管理网子接口

    在node1节点创建租户1的命名空间Nginx1,创建管理网子接口ens33.01,将该子接口分配至命名空间Nginx1,并分配管理网地址100.76.8.11:

# ip link add link ens33 dev ens33.01 type macvlan mode bridge
# ip netns add Nginx1
# ip link set ens33.01 netns Nginx1
# ip netns exec Nginx1 ip a a 100.76.8.11/24 dev ens33.01
# ip netns exec Nginx1 ip link set ens33.01 up
# ip netns exec Nginx1 ip link set lo up
# ip netns exec Nginx1 ip a


    查看node1节点Nginx1命名空间管理网卡的配置详情:


    同理,在node1节点创建租户2的命名空间Nginx2,创建管理网子接口ens33.01,,将该子接口分配至命名空间Nginx2,并分配管理网地址100.76.8.13:

# ip link set ens33.01 netns Nginx2
# ip netns exec Nginx2 ip a a 100.76.8.13/24 dev ens33.01
# ip netns exec Nginx2 ip link set ens33.01 up
# ip netns exec Nginx2 ip link set lo up


    同理,在node2节点创建租户1的命名空间Nginx1,创建管理网子接口ens33.01,,将该子接口分配至命名空间Nginx1,并分配管理网地址100.76.8.16

# ip link add link ens33 dev ens33.01 type macvlan mode bridge
# ip netns add Nginx1
# ip link set ens33.01 netns Nginx1
# ip netns exec Nginx1 ip a a 100.76.8.16/24 dev ens33.01
# ip netns exec Nginx1 ip link set ens33.01 up
# ip netns exec Nginx1 ip link set lo up


    同理,在node2节点创建租户2的命名空间Nginx2,创建管理网子接口ens33.01,,将该子接口分配至命名空间Nginx2,并分配管理网地址100.76.8.18:

# ip link add link ens33 dev ens33.01 type macvlan mode bridge
# ip netns add Nginx2
# ip link set ens33.01 netns Nginx2
# ip netns exec Nginx2 ip a a 100.76.8.18/24 dev ens33.01
# ip netns exec Nginx2 ip link set ens33.01 up
# ip netns exec Nginx2 ip link set lo up


步骤4:分别在node节点2个租户命名空间配置业务网子接口

    在node1节点创建管理网子接口ens33.1,,将该子接口分配至命名空间Nginx1,并分配业务网地址192.168.1.12:

# ip link add link ens33 dev ens33.1 type macvlan mode bridge
# ip link set ens33.1 netns Nginx1
# ip netns exec Nginx1 ip a a 192.168.1.12/24 dev ens33.1
# ip netns exec Nginx1 ip link set ens33.1 up
# ip netns exec Nginx1 ip a


     查看此时node1节点Nginx1命名空间网卡信息:


    同理,在node1节点创建管理网子接口ens33.2,,将该子接口分配至命名空间Nginx2,并分配业务网地址172.16.2.24:

# ip link add link ens33 dev ens33.2 type macvlan mode bridge
# ip link set ens33.2 netns Nginx2
# ip netns exec Nginx2 ip a a 172.16.2.24/24 dev ens33.2
# ip netns exec Nginx2 ip link set ens33.2 up


    同理,在node2节点创建管理网子接口ens33.1,,将该子接口分配至命名空间Nginx1,并分配业务网地址192.168.1.17:

# ip link add link ens33 dev ens33.1 type macvlan mode bridge
# ip link set ens33.1 netns Nginx1
# ip netns exec Nginx1 ip a a 192.168.1.17/24 dev ens33.1
# ip netns exec Nginx1 ip link set ens33.1 up


    同理,在node2节点创建管理网子接口ens33.2,,将该子接口分配至命名空间Nginx2,并分配业务网地址172.16.2.29:

# ip link add link ens33 dev ens33.2 type macvlan mode bridge
# ip link set ens33.2 netns Nginx2
# ip netns exec Nginx2 ip a a 172.16.2.29/24 dev ens33.2
# ip netns exec Nginx2 ip link set ens33.2 up


五、测试命名空间网络连通性

    如(上一篇)图2所示,node1,node2节点和Nginx1,Nginx2命名空间分别配置了管理网卡,在实际应用中,配置中心可通过管理网,将配置请求下发至不同租户的命名空间。

    Node1,node2节点上不同租户的Nginx1,Nginx2命名空间分别配置了各自的业务网卡,同一租户下不同节点的Nginx命名空间可以通过各自的业务网卡互通。

    下面我们分别测试下管理网与业务网的连通性。

步骤1:测试node节点之间管理网的连通性

    在node1节点上ping node2节点管理子网卡的IP:100.76.8.15:

# ping 100.76.8.15 -c 2


可正常ping通:


步骤2:测试node节点与命名空间之间管理网的连通性

    在node1节点上ping node1节点Nginx1命名空间的管理子网卡的IP:100.76.8.11:

# ping 100.76.8.11 -c 2


可正常ping通:


    在node1节点上ping node2节点Nginx2命名空间的管理子网卡的IP:100.76.8.18

# ping 100.76.8.18 -c 2


可正常ping通:


步骤3:测试node节点之间同一个租户命名空间之间业务网的连通性

    在node1节点Nginx1命名空间ping node2节点Nginx1的命名空间业务网卡IP:192.168.1.17

# ip netns exec Nginx1 ping 192.168.1.17 -c 2


可正常ping通:


    在node2节点Nginx2命名空间ping node1节点Nginx2的命名空间业务网卡IP:172.16.2.24

# ip netns exec Nginx2 ping 172.16.2.24 -c 2


可正常ping通:


下一步,我们将介绍如何启动 NGINX 服务,敬请期待……


已修改于2023-03-08 21:37
本作品系原创
创作不易,留下一份鼓励
加菲

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
加菲
这家伙很懒还未留下介绍~
3
文章
0
问答
2
粉丝
相关文章
目录问题背景解决思路网络拓扑搭建Macvlan命名空间测试命名空间网络连通性启动nginx服务结语1、问题背景  一种多租户多Nginx集群部署的上云解决方案示意图如图1所示:图1一种多租户多Nginx集群部署示意图  该方案主要包含三部分,分别为APIServer,配置中心及集群部署节点,各部分实现的功能为:APIServer:Nginx集群服务的总入口,负责接收各类管控信息,并将请求信息解析后转发至配置中心;配置中心:负责不同租户Nginx实例的安装部署与配置管理;集群部署节点:不同租户在不同节点上部署Nginx实例,实现实例级别的高可用;  如图1所示,要实现高可用的部署方式,就要求在每一个服务器node节点上部署的Nginx实例分属于不同的租户;要实现每个node节点的Nginx实例分属于不同的租户,就要求在node节点实现租户隔离。这里的租户隔离至少需要包含两个属性,一个是网络资源的隔离,一个是Nginx实例端口占用的隔离。2、解决思路为了在同一台node节点实现租户隔离,目前常见的有以下几
点赞 1
浏览 1.1k
继 基于macvlan实现多租场景下的nginx集群部署实践(二)-NGINX开源社区 续五、启动NGINX服务  现在以node1节点Nginx1,Nginx2命名空间分别作为租户1和租户2的客户端,node2节点Nginx1,Nginx2命名空间分别作为租户1和租户2的服务端,模拟客户端请求测试。1  在node2节点分别创建租户1和租户2的静态文件2
点赞 3
浏览 1.2k
【版本更新】NGINX JavaScript (NJS) 版本更新到 0.8.2,该版本引入了 console 对象及多种 console 方法,扩展了 fs 模块,添加了 fs.existsSync( ) 方法。访问 NGINX 中文官方开源社区(nginx.org.cn)了解详情。
点赞 0
浏览 589