OpenStack Designate系统架构分析

2023-05-16

前言

OpenStack提供了云计算数据中心所必不可少的用户认证和授权、计算、存储、网络等功能,网上已经有不少的文章介绍这些功能的配置、架构分析以及代码详解。但是,针对OpenStack Designate所提供的DNSaaS服务,却只有Designate项目主页上一篇很简单的文档介绍其安装、架构和API列表。由于Designate项目还处于孵化阶段,文档的更新和维护并不是特别及时,本系列文章将试图解释Designate架构、安装、配置、以及探讨更深层次的设计细节,算是填补一下空白吧。这篇文章将是该系列的第1篇,着重介绍Designate的整体架构以及各个功能模块,了解各个功能模块之间如何协调工作。

Designate项目背景介绍

大型数据中心都提供了云域名系统,如Amazon的AWS Route53,Google的Cloud DNS, Rackspace也提供了Cloud DNS。这些域名系统都能够让用户将自己的域名托管到云服务商的数据中心域名系统中,用户无需自己租赁设备构建自己的DNS系统,降低了运维和管理成本。

OpenStack Designate提供了DNSaaS(DNS即服务)的功能,其目标就是要赋予OpenStack提供这种云域名系统的能力,云服务商可以使用Designate就能够很容易建造一个云域名管理系统来托管租户的公有域名。

Designate目前尚处于孵化阶段,曾经使用过Moniker这个名字,主要由HP贡献到OpenStack开源社区。到目前(2015年5月)为止,已经发布了stable/kilo版本,项目源代码托管在GitHub上(https://github.com/openstack/designate)。

Designate整体架构

Designate从kilo版本,软件架构发生了很大的变化,引入了pool manager机制,对DNS服务器进行池化管理。同时通过MiniDNS进行DNS区域和资源记录同步。下图给出了Designate的功能模块图,各模块之间通过消息队列进行通信。

Designate功能模块图

  • API:接收来自远端用户的HTTP/HTTPS请求,通过Keystone验证远端用户的合法性,将HTTP/HTTPS请求传递给Central模块。
  • Central:业务逻辑处理核心。响应API请求以及处理Sink所监听到的来自Nova和Neutron的特定通知事件。同时会存取数据库,对业务逻辑处理所产生的数据进行持久化存储。
  • Pool Manager:连接后端驱动,管理DNS服务器池,与MiniDNS配合同步DNS服务器的域名以及资源记录等数据。
  • MiniDNS:实现了标准的DNS Notify和Zone Transfer的处理,后面将用一个例子介绍Pool Manager和MiniDNS如何配合实现域名配置与域名记录同步的工作原理。
  • Backend:后端驱动,已经支持多种DNS后端服务器,包括BIND、PowerDNS、MySQL BIND等。
  • Sink:监听来自Nova和Neutron的某些事件,用于自动生成域名资源记录,比如当监听到Nova的compute.instance.create.end事件通知后,自动创建一条对应于刚创建的实例的A记录;当监听到Nuetron的floatingip.update.end事件通知后,自动更新一条相应的A记录。

Desingate各个功能模块之间的通信使用AMQP消息队列机制。AMQP消息队列接收来自各个功能模块的RPC请求,并将RPC请求投递到目标功能模块,作为联络各个功能模块的神经中枢。

DNS服务器的池化管理

Designate kilo版本所引入的pool manager机制将DNS服务器群划分成多个服务器池(pool),如下图所示,每个服务器池可以配置包含1台或多台DNS服务器。而且,池中的DNS服务器选型还可以不同,也就是说在一个服务器池中,可以有1台BIND服务器,还可以有1台PowerDNS服务器,这是完全支持的。

DNS服务器池的分割及DNS域的委托

服务器池的引入对于构建大规模的云级DNS系统是非常高效的,优点是显而易见的。

  1. 细化域名托管的颗粒度。用户请求托管的域名可以委派到某一个服务器池,而不需要在所有服务器上管理用户的域名和资源记录,降低了管理和运维的复杂度。例如,abc.com委派给pool 1的DNS服务器来管理,xyz.com委派到pool N的DNS服务器来管理,……
  2. 每个服务器池可以包含多台DNS服务器,实现了高可用性和冗余备份。
  3. 服务器池的划分不受地域的限制,可以将分布在不同地域的DNS服务器划归到同一个池中,通过GLB和anycast路由技术可以实现就近DNS查询和负载均衡,加快DNS查询速度。

MiniDNS:Hidden Master设计

Hidden Master是DNS网络安全管理系统设计中所推荐的一种最佳实践。主DNS服务器“隐藏”在内网防火墙背后,负责DNS域名资源的管理并同步变更到从DNS服务器;从DNS服务器部署在DMZ区域,对外提供DNS查询服务。由于主DNS服务器不接受DNS查询,增强了安全性。

Designate MiniDNS功能模块就采用了Hidden Master的设计思想。所有托管到Designate中的DNS域都将MiniDNS视为主DNS服务器,而其被委托的DNS服务器都作为从DNS服务器。MiniDNS实现了标准的DNS Notify和Zone Transfer协议,负责同步DNS域名资源记录到从DNS服务器上。

下面,我们以创建一个DNS域名为例来详细介绍MiniDNS的工作过程。

Created with Raphaël 2.1.0 API API Central Central Pool Manager Pool Manager Backend Backend DNS Server DNS Server MiniDNS MiniDNS 1. 创建example.com域 2a. 写数据库 2b. 创建example.com域 3a. 创建example.com域 3b. 创建example.com, Master是MiniDNS 4. 请求更新example.com域 5. DNS Notify 6. 开始同步 从数据库中读取NS和SOA记录 7. Zone Transfer

序列图给出了简要的过程描述。详细的文字说明如下:
1. 首先,用户通过Desingate API创建一个example.com的DNS域;
2. Designate API将请求传递给Central,Central先将example.com域保存到数据库,接着发送RPC请求给Pool Manager;
3. Pool Manager收到来自Central的创建域名的请求之后,调用DNS后端驱动,在该域名被委托的服务器池中的所有服务器中创建example.com域。同时在这些服务器中,指定example.com的master服务器是MiniDNS;
4. Pool Manager完成所有从服务器上example.com域的创建之后,发送RPC请求给MiniDNS。
5. MiniDNS收到Pool Manager的RPC请求之后,向从服务器发送DNS Notify消息,告诉从服务器example.com有资源更新。
6. 从服务器收到DNS Notify消息后,要求主从数据库启动Zone Transfer,域迁移的方式可以是AXFR,也可以是IXFR。
7. 主服务器从数据库中读取为example.com域自动创建的SOA和NS记录,并将SOA和NS记录传送到从服务器。
后续任何对example.com域的变更操作都会遵循上述过程,由MiniDNS将变更同步到Designate所委派管理example.com域的DNS服务器上。

结束语

本文简单介绍了Designate所提供的DNSaaS的系统框架及其各个功能组件,在了解了Designate系统架构之后,该系列的第2篇文章将介绍Designate的安装、配置以及DNS服务器的部署。


欢迎转载,转载请说明原处!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenStack Designate系统架构分析 的相关文章

  • Mybatis-plus扩展

    这玩意类似于mp自带的basemapper Copyright c 2011 2020 baomidou jobob 64 qq com lt p gt Licensed under the Apache License Version 2
  • Photoshop中的“磁性套索”背后算法的OpenCV实现

    本文由Markdown语法编辑器编辑完成 1 PS中的磁性套索工具简介 xff1a 本示例是基于Photoshop CS4的工具栏 xff1a 2 磁性套索工具背后的算法Livewire原理 xff1a 3 Livewire Segment
  • 轻量化网络mobileNet与ShuffleNet

    摘要 最近出了一篇旷视科技的孙剑团队出了一篇关于利用Channel Shuffle实现的卷积网络优化 ShuffleNet 我关注了一下 xff0c 原理相当简单 它只是为了解决分组卷积时 xff0c 不同feature maps分组之间的
  • 人脸比对(1:N)

    第 1章 前言 设计出人脸1 xff1a N xff0c 随着N的增大准确率降低最小的解决方案具有很强的现实意义 人脸1 xff1a N的框架大致分为 xff1a 人脸检测 人脸对齐 人脸映射与人脸识别LOSS的设计 xff0c 结构如下图
  • 商家招牌的分类与检测

    现实生活中的招牌各种各样 xff0c 千变万化 针对初赛 xff0c 在现实世界中 xff0c 选取100类常见的招牌信息 xff0c 如肯德基 麦当劳 耐克等 将最终的分类结果上传到比赛平台 数据典型图像 a 样本类别多样性 b 每类样本
  • TensorRT简介--高性能深度学习支持引擎

    上文简单提到了TensorRT的基础与onnx转换 xff1a 基于TensorRT的神经网络推理与加速 xff1a https blog csdn net intflojx article details 81712651 后面看到老板的
  • raspberry install mysql-connector-python

    wget http cdn mysql com Downloads Connector Python mysql connector python 1 0 11 zip unzip mysql connector python 1 0 11
  • ubuntu安装TensorFlow(支持不同版本)

    CUDA 43 CUDNN准备 xff1a 1 安装NVIDIA驱动 xff08 1 xff09 查询NVIDIA驱动 首先去官网 http www nvidia com Download index aspx lang 61 en us
  • 基于变换不变低秩纹理(TILT)的图像校正(附代码)

    原理简介 事实上 xff0c 对于未加旋转的图像 xff0c 由于图像的对称性与自相似性 xff0c 我们可以将其看作是一个带噪声的低秩矩阵 当图像由端正发生旋转时 xff0c 图像的对称性和规律性就会被破坏 xff0c 也就是说各行像素间
  • 最小可觉察误差(JND)与图像压缩

    1 JND算法背景 意义 1算法的概述 最小可觉察误差 JND Just Noticeable Distortion 用于表示人眼不能察觉的最大图像失真 xff0c 体现了人眼对图像改变的容忍度 在图像处理领域 xff0c JND 可以用来
  • 彩色图像压缩(颜色量化)

    调色板色度压缩 调色板的概述 大多数彩色图像采集设备及图像处理软件都采用 24 位真彩色图像数据结构记录图像信息 xff0c 即以红 xff08 R xff09 绿 xff08 G xff09 蓝 xff08 B xff09 彩色模式记录色
  • SSD论文解读

    1 论文简述 题目 SSD Single Shot MultiBox Detector 作者 Wei Liu Dragomir Anguelov Dumitru Erhan Christian Szegedy Scott Reed Chen
  • FaceNet项目实践

    一 论文的原理与复现 1 论文复现 Database xff1a LFW db xff08 论文采用 xff0c rgb图算是较大的典型数据集 xff09 LFW数据库 总共有 13233 张 JPEG 格式图片 xff0c 属于 5749
  • 深度学习领域最新的技术(CV、NLP)

    人工智能正在日益渗透到所有的技术领域 而深度学习 DL 是目前最活跃的分支 最近几年 xff0c DL取得了许多重要进展 其中一些因为事件跟大众关系密切而引人瞩目 xff0c 而有的虽然低调但意义重大 深度学习从业人员应该保持足够的嗅觉 x
  • Linux文件名称乱码GBK转UTF8重命名

    因Java项目运行于Linux之上 xff0c 系统字符集为en US UTF 8 xff08 可通过locale命令查看 xff09 xff0c 而项目Java启动参数设置字符集为GBK 通过上传功能上传的附件文件名称为GBK格式 xff
  • Linux系列讲解 —— 对装有Ubuntu18.04系统的硬盘进行数据迁移

    目录 0 背景介绍1 参照旧硬盘的分区对新硬盘进行分区2 将旧硬盘分区数据迁移到新硬盘对应分区中补充 xff1a 1 新硬盘启动有问题时的对策 需要启动U盘 0 背景介绍 现有一块装有ubuntu系统的旧硬盘 sda xff0c 电脑主机的
  • GPG错误:没有公钥无法验证签名的解决办法

    GPG错误 xff1a 没有公钥无法验证签名的解决办法 sudo apt key adv keyserver hkp keyserver ubuntu com 80 recv 后面加入密钥 xff0c 就能导入公钥了
  • linux中添加环境变量

    linux中添加环境变量 一般是在 etc profile中添加环境 xff0c 但是建议在 etc profile d 下创建一个以 sh结尾的文件 vim etc profil d my env sh 输入i进入编辑模式 eg xff1
  • snprintf函数用法及与sprintf比较

    int snprintf char restrict buf size t n const char restrict format 函数说明 最多从源串中拷贝n xff0d 1个字符到目标串中 xff0c 然后再在后面加一个0 所以如果目
  • gin跨域时Get,Post正常Put,Delete被阻止的问题解决

    问题表现 同一个项目请求同一个服务时 xff0c Get和Post请求正常 xff0c 但是Put和Delete一直报跨域错误的问题 Access to XMLHttpRequest at 39 http 127 0 0 1 8011 ap

随机推荐

  • iOS绘制仪表盘,游标沿圆形轨迹移动动画

    最近碰到一个需求 xff0c 需要画一个仪表盘的页面 图上所示 计算角度 圆弧部分还好 xff0c 用CAShapeLayer 43 UIBezierPath曲线 xff0c 只要确定好圆心部分和左右两边的角度就行 这里正好说明一下 voi
  • [iOS] 如何改变一个控制器的大小?

    iOS 如何改变一个控制器的大小 1 改变控制器的VIew大小 这是只能改变控制器里面View的大小 并不会对控制器本身的显示做出视觉改变 2 改变控制的大小 方法 span class hljs comment 重置控制器的大小 span
  • 控件:UIControl 我在UITextFiled输入事件调用到

    下列事件为基类UIControl所支持 xff0c 除非另有说明 xff0c 也适用于所有控件 UIControlEventTouchDown 单点触摸按下事件 xff1a 用户点触屏幕 xff0c 或者又有新手指落下的时候 UIContr
  • iOS抖音点赞动画实现

    前言 hi 大家好 又跟大家见面了 今天给大家分享的是抖音的点赞动画的实现 废话不多说上图 本篇文章主要包含技术点 CAShapeLayer和贝赛尔曲线绘制三角形 组合动画的时间技巧我习惯写完文章的demo都附在文章底部 如果不想看原理的小
  • 必读!!只需10分钟,NAS变身赚钱神器!

    有很多朋友现在家里都有NAS xff0c 今天教大家如何利用NAS的闲置资源薅羊毛 NAS我们正常的用途是存储资料 xff0c 通过网络传输实现多设备文件互通 xff0c 但是在大部分情况下 xff0c 我们的宽带和NAS机能处于闲置状态
  • 如何利用电脑榨干闲置的带宽资源?

    电脑现在是每个家庭的必需品 xff0c 大部分人对电脑的使用方法主要是办公和游戏 xff0c 除了这两个用途外 xff0c 其实大部分人的电脑是处于闲置状态 那么 xff0c 电脑的闲置闲置时间还能做些什么呢 xff1f 今天给大家介绍一个
  • 如何善用家中闲置的带宽资源赚钱(2020版)

    CDN的全称是Content Delivery Network xff0c 即内容分发网络 xff0c 依靠部署在各地的边缘服务器 xff0c 通过中心平台的负载均衡 内容分发 调度等功能模块 xff0c 使用户就近获取所需内容 xff0c
  • 一招将闲置宽带完美利用起来

    随着我们生活水平的提高以及国家对信息化建设的推动 xff0c 大部分家庭的宽带已经进入了高速时代 xff0c 100 200M到处可见 xff0c 甚至于500M也不是什么新鲜事儿了 xff0c 宽带的速率是提高了 xff0c 不过问题也来
  • 十一、 Debian忘记密码重置

    其方式是在GRUB引导菜单下按 e 进入编辑模式直接修改用户密码 重启VPS xff0c 可以在面板重启也可以在VNC上面使用发送 CTRL 43 ALT 43 DEL 按钮直接重启 xff0c 在图示处按 e 键 xff08 若出现BIO
  • 加入共享宽带,让你的闲置宽带循环利用再变现

    共享经济是近些年来发展的一个热点名词 xff0c 因此大家也会看到一些非常多的共享产品出现在市面上 比如说大家熟悉的共享单车 xff0c 共享汽车共享充电宝等等 xff0c 但是不知道大家有没有听说过共享宽带呢 xff1f 宽带几乎是家家户
  • 一招让NAS自给自足

    网络带来了许多便利 xff0c 但又给生活带来了很多烦恼 xff0c 比如微信文档总是过期 xff0c 关键内容经常找不到 xff0c 照片备份太散乱 最近听朋友说听说前任离婚了 xff0c 我突然想重温下与她昨日的温情 xff0c 可是翻
  • 百度网盘撸用户羊毛是怎么一回事

    最近百度网盘事件闹得沸沸扬扬 xff0c 很多吃瓜小伙伴对这次事件的来龙去买不太清楚 xff0c 今天就给大家八一八百度网盘如何反撸用户引发众怒 百度对于该计划的说明 xff1a 用户参加该计划可贡献闲置网络带宽和电脑存储空间给百度 xff
  • 业务流程节点信息提示

    xfeff xfeff 该模块中主要是为了明确用户操作 让用户具体的知道该进行哪一步操作 xff0c 在登陆系统后 xff0c 系统首页中会有下面类似的流程图 xff1a 当用户完成一项操作后 xff0c 要根据流程提示其他用户进行下一步操
  • UbuntuWSL操作PA的BUG记录——AM_HOME环境变量的设定

    2021年5月更 xff0c 发现WSL2是真的香 xff0c 下次还用 x1f604 2021年4月 血亏 xff0c 建议老实用虚拟机做 xff0c WSL还是有很多未完善的地方 xff0c 不适合新手瞎折腾 问题描述 xff1a 当使
  • windows11编译OpenCV4.5.0 with CUDA(附注意事项)

    windows11编译OpenCV4 5 0 with CUDA 从OpenCV4 2 0 版本开始允许使用 Nvidia GPU 来加速推理 本文介绍最近使用windows11系统编译带CUDA的OpenCV4 5 0的过程 文中使用 特
  • OpenCV—矩阵数据类型转换cv::convertTo

    OpenCV 矩阵数据类型转换cv convertTo 函数 void convertTo OutputArray m int rtype double alpha 61 1 double beta 61 0 const 参数 m 目标矩阵
  • Mysql LIMIT使用

    原文出处 xff1a http www jb51 net article 62851 htm Mysql中limit的用法 xff1a 在我们使用查询语句的时候 xff0c 经常要返回前几条或者中间某几行数据 xff0c 这个时候怎么办呢
  • cookies的理解与chrome查看cookie

    Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存 xff0c 或是从客户端的硬盘读取数据的一种技术 Cookies是当你浏览某网站时 xff0c 由Web服务器置于你硬盘上的一个非常小的文本文件 xff0c 它可以记录
  • 【Qt】Qt多线程开发—实现多线程设计的四种方法

    Qt 使用Qt实现多线程设计的四种方法 文章目录 Qt 使用Qt实现多线程设计的四种方法一 写在前面二 方法一 QThread xff1a 带有可选事件循环的底层API三 方法二 QThreadPool和QRunnable xff1a 重用
  • OpenStack Designate系统架构分析

    前言 OpenStack提供了云计算数据中心所必不可少的用户认证和授权 计算 存储 网络等功能 xff0c 网上已经有不少的文章介绍这些功能的配置 架构分析以及代码详解 但是 针对OpenStack Designate所提供的DNSaaS服