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

浏览 982

文章标签

目录

  1. 问题背景
  2. 解决思路
  3. 网络拓扑
  4. 搭建Macvlan命名空间
  5. 测试命名空间网络连通性
  6. 启动nginx服务
  7. 结语


1、问题背景

    一种多租户多Nginx集群部署的上云解决方案示意图如图1所示:


图1 一种多租户多Nginx集群部署示意图

    该方案主要包含三部分,分别为API Server,配置中心及集群部署节点,各部分实现的功能为:

  • API Server:Nginx集群服务的总入口,负责接收各类管控信息,并将请求信息解析后转发至配置中心;
  • 配置中心:负责不同租户Nginx实例的安装部署与配置管理;
  • 集群部署节点:不同租户在不同节点上部署Nginx实例,实现实例级别的高可用;

    如图1所示,要实现高可用的部署方式,就要求在每一个服务器node节点上部署的Nginx实例分属于不同的租户;要实现每个node节点的Nginx实例分属于不同的租户,就要求在node节点实现租户隔离。这里的租户隔离至少需要包含两个属性,一个是网络资源的隔离,一个是Nginx实例端口占用的隔离。


2、解决思路

为了在同一台node节点实现租户隔离,目前常见的有以下几种解决方案:

  • 物理服务器共享实例:即在一台物理服务器上部署一个共享Nginx实例,由配置中心负责管理每个租户创建的虚拟服务器端口,与物理服务器真实的监听端口之间的映射。
  • 虚拟机或容器部署:即在一台物理服务器上,部署多个虚拟机或容器,每个虚拟机或容器分属于不同的租户网络,部署各租户独享的Nginx实例;
  • 命名空间部署:即在一台物理服务器上,使用租户网络创建不同的命名空间,在命名空间中部署租户独享的Nginx实例;

这里以命名空间为例,实现一种基于Macvlan的租户隔离的Nginx集群部署实践。


3、网络拓扑


图2 基于Macvlan实现多租场景下Nginx集群部署网络拓扑示意图


    如图2所示,本示例基于BC-Linux7.6操作系统,创建了两台虚拟机node1和node2,ens33为虚拟机上的网卡。其中子网卡ens33.0为虚拟机管理网卡,子网卡ens33.01是命名空间中管理网卡,子网卡ens33.1和ens33.2为不同子网的租户业务网卡,各网卡IP地址规划如下:

管理网

租户1业务网

租户2业务网

Mac0

Mac1

Mac3

Mac5

Mac6

Mac8

Mac2

Mac7

Mac4

Mac9

100.76.8.10

100.76.8.11

100.76.8.13

100.76.8.15

100.76.8.16

100.76.8.18

192.168.1.12

192.168.1.17

172.16.2.24

172.16.2.29


下一步,我们将介绍如何搭建 macvlan 命名空间,敬请期待……



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

暂无个人介绍

关注



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

按点赞数排序

按时间排序

关于作者
加菲
这家伙很懒还未留下介绍~
3
文章
0
问答
2
粉丝
相关文章
继 基于macvlan实现多租场景下的nginx集群部署实践(一)-NGINX开源社区 续步骤1:开启混杂模式2  在node1节点创建管理网子网卡ens33.0,并配置管理网地址
点赞 1
浏览 1.1k
继 基于macvlan实现多租场景下的nginx集群部署实践(二)-NGINX开源社区 续五、启动NGINX服务  现在以node1节点Nginx1,Nginx2命名空间分别作为租户1和租户2的客户端,node2节点Nginx1,Nginx2命名空间分别作为租户1和租户2的服务端,模拟客户端请求测试。1  在node2节点分别创建租户1和租户2的静态文件2
点赞 3
浏览 1.1k
事件驱动架构非常强大,非常适合用在分布式微服务环境中。事件驱动架构提供了解耦的架构、更容易实现的可伸缩性和更高程度的弹性。 但是,与请求和应答类型的架构相比,正确使用事件驱动架构要困难得多。 在过去的
点赞 0
浏览 450