openstack dns_使用OpenStack Designate构建DNS即服务

2023-05-16

openstack dns

Designate是一个多租户DNS即服务,包括用于域和记录管理的REST API,用于与Neutron集成的框架以及对Bind9的集成支持。

您可能需要考虑以下DNSaaS:

  • 干净的REST API,用于管理区域和记录
  • 自动生成记录(与OpenStack集成)
  • 支持多个权威名称服务器
  • 主持多个项目/组织

本文介绍了如何在CentOS或Red Hat Enterprise Linux 7(RHEL 7)上手动安装和配置最新版本的Designate服务,但是您可以在其他发行版上使用相同的配置。

在OpenStack上安装Designate

我具有用于绑定和指定的Ansible角色,这些角色演示了GitHub存储库中的设置。

此设置假定绑定服务在OpenStack控制器节点上是外部的(即使您可以在本地安装绑定)。

  1. 安装Designate的软件包并绑定(在OpenStack控制器上):
     # yum install openstack-designate-* bind bind-utils -y 
    
  2. 创建指定数据库和用户:
    
         
         
    MariaDB [(none)]> CREATE DATABASE designate CHARACTER SET utf8 COLLATE utf8_general_ci;
           
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON designate.* TO \
    'designate'@'localhost' IDENTIFIED BY 'rhlab123';

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON designate.* TO 'designate'@'%' \
    IDENTIFIED BY 'rhlab123';

注意:必须在控制器端安装绑定程序包,远程名称守护程序控制(RNDC)才能正常运行。

配置绑定(DNS服务器)

  1. 生成RNDC文件:
    
         
         
    rndc-confgen -a -k designate -c /etc/rndc.key -r /dev/urandom

    cat <<EOF> etcrndc.conf
    include "/etc/rndc.key";
    options {
       default-key "designate";
       default-server {{ DNS_SERVER_IP }};
       default-port 953;
    };
    EOF
  2. 将以下内容添加到named.conf中
    include "/etc/rndc.key";
    controls {
            inet {{ DNS_SERVER_IP }}  allow { localhost;{{ CONTROLLER_SERVER_IP }}; } keys { "designate"; };
      };
    选项部分中,添加:
    
         
         
    options {
    ...
     allow-new-zones yes;
     request-ixfr no;
     listen-on port 53 { any; };
     recursion no;
     allow-query { 127.0.0.1; {{ CONTROLLER_SERVER_IP }}; };
    };
    添加正确的权限:
    
         
         
     chown named:named /etc/rndc.key
     chown named:named /etc/rndc.conf
     chmod 600 /etc/rndc.key
     chown -v root:named /etc/named.conf
     chmod g+w /var/named


    # systemctl restart named
    # setsebool named_write_master_zones 1
  3. rndc.keyrndc.conf推入OpenStack控制器:
     # scp -r /etc/rndc* {{ CONTROLLER_SERVER_IP }}:/etc/ 
    

创建OpenStack Designate服务和端点

输入:


   
   
# openstack user create --domain default --password-prompt designate
# openstack role add --project services --user designate admin
# openstack service create --name designate --description "DNS" dns

# openstack endpoint create --region RegionOne dns public http://{{ CONTROLLER_SERVER_IP }}:9001/
# openstack endpoint create --region RegionOne dns internal http://{{ CONTROLLER_SERVER_IP }}:9001/  
# openstack endpoint create --region RegionOne dns admin http://{{ CONTROLLER_SERVER_IP }}:9001/

配置指定服务

  1. 编辑/etc/designate/designate.conf
    • [service:api]部分中,配置auth_strategy
      
             
             
      [service:api]
      listen = 0.0.0.0:9001
      auth_strategy = keystone
      api_base_uri = http://{{ CONTROLLER_SERVER_IP }}:9001/
      enable_api_v2 = True
      enabled_extensions_v2 = quotas, reports
    • [keystone_authtoken]部分中,配置以下选项:
      
             
             
      [keystone_authtoken]
      auth_type = password
      username = designate
      password = rhlab123
      project_name = service
      project_domain_name = Default
      user_domain_name = Default
      www_authenticate_uri = http://{{ CONTROLLER_SERVER_IP }}:5000/
      auth_url = http://{{ CONTROLLER_SERVER_IP }}:5000/
    • [service:worker]部分中,启用worker模型:
      
             
             
      enabled = True
      notify = True
    • [storage:sqlalchemy]部分中,配置数据库访问权限:
      
             
             
      [storage:sqlalchemy]
      connection = mysql+pymysql://designate:rhlab123@{{ CONTROLLER_SERVER_IP }}/designate
    • 填充“指定”数据库:
       # su -s /bin/sh -c "designate-manage database sync" designate 
      
  1. 创建Designate的pools.yaml文件(具有目标和绑定详细信息):
    • 编辑/etc/designate/pools.yaml
      
             
             
      - name: default
        # The name is immutable. There will be no option to change the name after
        # creation and the only way will to change it will be to delete it
        # (and all zones associated with it) and recreate it.
        description: Default Pool

        attributes: {}

        # List out the NS records for zones hosted within this pool
        # This should be a record that is created outside of designate, that
        # points to the public IP of the controller node.
        ns_records:
          - hostname: {{Controller_FQDN}}. # Thisis mDNS
            priority: 1

        # List out the nameservers for this pool. These are the actual BIND servers.
        # We use these to verify changes have propagated to all nameservers.
        nameservers:
          - host: {{ DNS_SERVER_IP }}
            port: 53

        # List out the targets for this pool. For BIND there will be one
        # entry for each BIND server, as we have to run rndc command on each server
        targets:
          - type: bind9
            description: BIND9 Server 1

            # List out the designate-mdns servers from which BIND servers should
            # request zone transfers (AXFRs) from.
            # This should be the IP of the controller node.
            # If you have multiple controllers you can add multiple masters
            # by running designate-mdns on them, and adding them here.
            masters:
              - host: {{ CONTROLLER_SERVER_IP }}
                port: 5354

            # BIND Configuration options
            options:
              host: {{ DNS_SERVER_IP }}
              port: 53
              rndc_host: {{ DNS_SERVER_IP }}
              rndc_port: 953
              rndc_key_file: /etc/rndc.key
              rndc_config_file: /etc/rndc.conf
    • 填充Designate的池:
       su -s /bin/sh -c "designate-manage pool update" designate 
      
  1. 开始指定中央和API服务:
     systemctl enable --now designate-central designate-api 
    
  2. 验证Designate的服务是否正常运行:
    
         
         
    # openstack dns service list

    +--------------+--------+-------+--------------+
    | service_name | status | stats | capabilities |
    +--------------+--------+-------+--------------+
    | central      | UP     | -     | -            |
    | api          | UP     | -     | -            |
    | mdns         | UP     | -     | -            |
    | worker       | UP     | -     | -            |
    | producer     | UP     | -     | -            |
    +--------------+--------+-------+--------------+

使用外部DNS配置OpenStack Neutron

  1. 为指定服务配置iptables:
    
         
         
    # iptables -I INPUT -p tcp -m multiport --dports 9001 -m comment --comment "designate incoming" -j ACCEPT
           
    # iptables -I INPUT -p tcp -m multiport --dports 5354 -m comment --comment "Designate mdns incoming" -j ACCEPT
           
    # iptables -I INPUT -p tcp -m multiport --dports 53 -m comment --comment "bind incoming" -j ACCEPT
           
           
    # iptables -I INPUT -p udp -m multiport --dports 53 -m comment --comment "bind/powerdns incoming" -j ACCEPT
           
    # iptables -I INPUT -p tcp -m multiport --dports 953 -m comment --comment "rndc incoming - bind only" -j ACCEPT
           
    # service iptables save; service iptables restart
    # setsebool named_write_master_zones 1
  2. 编辑/etc/neutron/neutron.conf[default]部分:
     external_dns_driver = designate 
    
  3. /_etc/_neutron/neutron.conf中添加[指定]部分:
    
         
         
    [designate]
    url = http://{{ CONTROLLER_SERVER_IP }}:9001/v2  ## This end point of designate
    auth_type = password
    auth_url = http://{{ CONTROLLER_SERVER_IP }}:5000
    username = designate
    password = rhlab123
    project_name = services
    project_domain_name = Default
    user_domain_name = Default
    allow_reverse_dns_lookup = True
    ipv4_ptr_zone_prefix_size = 24
    ipv6_ptr_zone_prefix_size = 116
  4. 编辑dns_domain的neutron.conf:
    
         
         
    dns_domain = rhlab.dev.

    # systemctl restart neutron-*
  5. dns添加到/etc/neutron/plugins/ml2/ml2_conf.ini中的Modular Layer 2(ML2)驱动程序列表中
     extension_drivers=port_security,qos,dns 
    
  6. 在“指定”中添加区域
     # openstack zone create –email=admin@rhlab.dev rhlab.dev.  
    rhlab.dev区域添加新记录:
     # openstack recordset create --record '192.168.1.230' --type A rhlab.dev. Test 
    

现在应安装并配置“指定”。

翻译自: https://opensource.com/article/19/4/getting-started-openstack-designate

openstack dns

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

openstack dns_使用OpenStack Designate构建DNS即服务 的相关文章

  • Python使用高德地图绘制经纬度坐标位置

    span class token keyword import span numpy span class token keyword as span np span class token keyword import span foli
  • 激光雷达扫描频率、角分辨率、帧率与采样率的计算方法

    给个面子 xff0c 点赞转发评论 xff0c 哈哈 xff01 扫描频率是转速的意思 xff0c 10Hz就是一秒转10圈 激光雷达输出的图像也被称为 点云 图像 xff0c 相邻两个点之间的夹角就是角分辨率 一幅点云图像代表一帧 xff
  • 完美解决requirements.txt无法使用的问题

    生成requirement txt文件 pip freeze span class token operator gt span requirement span class token punctuation span txt 查看req
  • 完美解决XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root‘

    警告 xff1a 对Linux不熟悉的人慎重使用 xff0c 为了保险起见 xff0c 你最好选择docker下的容器linux系统开发 xff0c 如果在容器内也出现如下的问题 xff0c 解决方法如下 xff1a 警告或报错问题 xff
  • 下载安装scala

    下载安装scala链接 xff1a https docs scala lang org getting started index html 或者 xff1a https www scala lang org download 2 12 8
  • about:blank_关于Blank –什么是:blank意味着什么,您应该摆脱它吗?

    about blank Have you ever tried to go to a web page and instead see 34 about blank 34 displayed in the address bar where
  • 剖析NoSQL数据库与MySQL数据库

    NoSQL数据库与MySQL数据库是两种不同类型的数据库管理系统 它们具有不同的特点和应用场景 下面我将详细介绍它们的优势和应用区别 MySQL数据库是一种关系型数据库管理系统 RDBMS 它使用结构化查询语言 SQL 进行数据管理 它采用
  • Linux安装NoSQL数据库

    安装NoSQL数据库的方法因具体数据库而异 下面以几种常见的NoSQL数据库为例 介绍它们的安装方法 MongoDB MongoDB提供了多个平台上的安装方式 包括二进制安装包 apt和yum安装等 具体可以参考MongoDB的官方文档 以
  • .vue 怎么变成 .js,我们来试一试!看完会更懂 Vue 吗?

    本文是基于Vite 43 AntDesignVue打造业务组件库 1 专栏第 12 篇 xff0c 坚持就是胜利 xff01 接着上篇说 xff0c 交付一个 vue 组件不仅需要解析 DSL xff0c 还要处理 JS TS xff0c
  • C 练习2

    define CRT SECURE NO WARNINGS include lt stdio h gt include lt stdlib h gt include lt string h gt 题目 xff1a 企业发放的奖金根据利润提成
  • PCB走线注意事项

    资料来源于瑞芯微电子 晶振布线 xff1a 在设计印刷电路板时 xff1a 保持晶体尽可能靠近可编程芯片晶体引脚 xff0c 保持走线长度短和小 xff0c 以减少电容器负载和防止不必要的噪音辐射 将所有信号从晶体和X1和X2引脚下面走线应
  • C语言 十进制转 二进制 八进制 十六进制

    整体源码 xff1a span class token macro property span class token directive hash span span class token directive keyword inclu
  • Kubuntu 安装fcitx 5

    kubuntu 22 04 安装fcitx5 一 安装前 xff1a 更新软件源 xff0c 不然下载会随缘中断 找到这个文件夹 etc apt 修改sources list 将所有的 http cn archive ubuntu com
  • 在学习opencv 多通道变单通道时 自己出现的一点错误

    include 34 stdafx h 34 include 34 highgui h 34 include 34 cv h 34 int main IplImage str1 str2 str3 str1 61 cvLoadImage 3
  • 计蒜客-1189-树根

    数根可以通过把一个数的各个位上的数字加起来得到 如果得到的数是一位数 xff0c 那么这个数就是数根 如果结果是两位数或者包括更多位的数字 xff0c 那么再把这些数字加起来 如此进行下去 xff0c 直到得到是一位数为止 比如 xff0c
  • HTTP——CDN简单认识

    贴一个B站地址 Up主讲的不错 以下内容是个人整理 CDN CDN Content Delivery Network 内容分发网络 CDN的必要性 服务器 包括云服务器 一定有一个物理位置 访问服务器的客户端如果距离服务器太远 或者服务器附
  • twitter闪退解决办法_那么我们如何解决Twitter? 用户界面改造将是一个不错的起点。...

    twitter闪退解决办法 by Daryll Santos 达里尔 桑托斯 Daryll Santos 那么我们如何解决Twitter xff1f 用户界面改造将是一个不错的起点 So how do we fix Twitter A us
  • MySQL分组查询,获取分组后数据

    MySQL分组查询 xff0c 获取分组后数据 MySQL分组查询 xff0c 将其它列的数据 xff0c 合并到一行展示 xff0c 可以设置去重 xff0c 设置去重 xff0c 设置排序 xff0c 截取指定条数 创建表结构 CREA
  • 解决的问题记录(持续更新)

    1 Ubuntu Server2020 4 树莓派WiringPi的安装与编译 链接 http i lckiss com p span class token operator 61 span span class token number
  • Microsoft Edge浏览器文件保存位置记录

    现在流行的Windows 10操作系统基本上都是使用Edge浏览器了 xff0c 作为一个重要的在线下载工具 xff0c 我得知道他把我下载的文件保存到什么地方去了 下面就记录下这两天观察到的 1 要是直接点击下载 xff0c 另存为xxx

随机推荐

  • python--排错--AttributeError: 'str' object has no attribute 'decode',关于python3的字符串

    AttributeError 39 str 39 object has no attribute 39 decode 39 一般是因为str的类型本身不是bytes xff0c 所以不能解码 两个概念 普通str xff1a 可理解的语义
  • Java向高级进阶(Java开发1-3年的仔看过来)

    遇到技术瓶颈 xff1f 在开发过程你是否觉得自己很多想法可是很难实现 xff1f 就算能实现但是实现的过程却很low xff1f 感觉自己开发几年一直在面向需求开发 xff0c 说好的面向对象开发呢 xff1f xff1f xff1f x
  • vue项目引用图标font-awesome提示错误

    vue引入font awesome图标样式一直报错 如图 xff1a 提示安装 xff1a npm install save font awesome scss font awesom 可以是安装之后还是报错 原来搞错顺序了 xff0c 要
  • IDEA 自动生成类注释和方法注释 (超舒服,超详细篇)

    目录 生成类注释生成类注释模板 生成方法注释生成方法注释模板方式注释的使用 很舒服的 xff0c 很详细的教程步骤 生成类注释 File gt Settings PreferencesEditor gt File and Code Temp
  • springboot项目解决扛住瞬间千次重复提交问题

    前言 在实际的开发项目中 一个对外暴露的接口往往会面临很多次请求 xff0c 我们来解释一下幂等的概念 xff1a 任意多次执行所产生的影响均与一次执行的影响相同 按照这个含义 xff0c 最终的含义就是 对数据库的影响只能是一次性的 xf
  • spring-boot mybatis-plus集成 代码自动生成 和 自定义生成代码 (简单,方便 易理解)

    mybatis plus自定义生成代码 导包在yml配置mybaits plus创建CodeGeneration java类测试看效果图 前言 xff1a 之前都是通过配置generatorConfig xml文件实现自动生成代码 xff0
  • 多线程之间如何实现通信,基础版(示例说明)

    多线程之间如何实现通信 什么是多线程之间通讯 xff1f 多线程之间通讯需求代码实现基本实现 什么是多线程之间通讯 xff1f 多线程之间通讯 xff0c 其实就是多个线程在操作同一个资源 xff0c 但是操作的动作不同 多线程之间通讯需求
  • 简单总结ConcurrentHashMap

    ConcurrentHashMap的概念 哈希算法 xff08 hash algorithm xff09 xff1a 是一种将任意内容的输入转换成相同长度输出的加密方式 xff0c 其输出被称为哈希值 HashMap与HashTable 因
  • openstack负载均衡_使用OpenStack Trove和Manila扩展DBaaS工作负载

    openstack负载均衡 稳定的数据库是任何企业应用程序中最常需要的组件之一 xff0c 而OpenStack背后的开发社区正在努力确保在开源云中使用数据库是一种简单 xff0c 可靠和高效的体验 Tesora的Amrith Kumar
  • 线程池原理分析(附线程池原理图)

    目录 什么是线程池使用线程池的好处线程池的作用线程池创建的四种方式重点介绍newFixedThreadPool线程池 线程池原理解析合理配置线程池大小 线程池就是这么简单 什么是线程池 线程池其实就是将多个线程对象放到一个容器当中 使用线程
  • Java反射机制,通过反射机制手写一个spring ioc框架

    Java基础 xff1a 反射机制 什么是反射Java反射机制的作用Java反射机制如何禁止Java反射机制的应用Java反射机制 常用 Api通过反射机制手写 spring ioc 示例 什么是SpringIOC什么是SpringIOC底
  • Java之设计模式(一): 单例模式

    单例模式 什么是单例模式 xff1f 单例模式应用场景饿汉式懒汉式静态内部类总结 设计模式 xff08 Design pattern xff09 是一套被反复使用 多数人知晓的 经过分类编目的 代码设计经验的总结 使用设计模式是为了可重用代
  • Java内存结构:基本概念

    基本概念 Java内存结构方法区 xff1a 堆 xff1a 栈 xff1a 内地方法栈 xff1a PC寄存器 xff1a 执行引擎 xff1a 垃圾回收机制 前言 面试经常被问到JAVA内存模型和Java内存结构的区别 JAVA内存模型
  • Java内存结构:jvm调优 堆调优

    堆 什么是堆堆结构图堆的参数配置设置最大堆内存设置新生代与老年代优化参数设置新生代比例参数内存溢出解决办法 什么是堆 是new创建出来的对象或数组存放在堆中 堆结构图 堆的参数配置 XX 43 PrintGC 每次触发GC的时候打印相关日志
  • springboot 2.3之后消失的hibernate-validator

    spirngboot升级到2 3之后 xff0c hibernate validator消失 项目升级到springboot2 3之后 xff0c 参数校验的注解报错 xff0c 发现spring boot starter web的依赖项已
  • CentOS7.6下MySQL8.0 tar.xz 安装详解

    安装详解 环境准备下载安装包安装步骤创建mysql用户更改目录权限初始化mysql设置环境变量添加开机自启动启动MYSQL服务登陆MYSQL修改密码修改公网访问设置防火墙 环境准备 1 由于Centos7自带Mariadb xff0c 卸载
  • Linux 防火墙 常用命令 基于Centos7

    常用操作 firewalld的基本使用服务之间的常用命令配置firewalld cmd firewalld的基本使用 启动 xff1a systemctl start firewalld 关闭 xff1a systemctl stop fi
  • MySQL主从复制和读写分离

    MySQL主从复制和读写分离 MySQL主从复制的好处主从复制的概念与作用主从复制的原理主从复制与读写分离的关系主从复制的配置修改主 master 服务器主服务器给从服务器账号授权修改从 slave 服务器连接主服务器开始同步操作 MySQ
  • java:组织机构树实现名称模糊查询

    在开发的很多场景中 xff0c 需要我们对树形结构进行模糊查询 xff0c 这个时候就需要用到递归来实现定位 xff0c 效果如下图 xff1a 话不多说 xff0c 直接上代码吧 xff1a 首先是对json的实例化对象处理 public
  • openstack dns_使用OpenStack Designate构建DNS即服务

    openstack dns Designate是一个多租户DNS即服务 xff0c 包括用于域和记录管理的REST API xff0c 用于与Neutron集成的框架以及对Bind9的集成支持 您可能需要考虑以下DNSaaS xff1a 干