OpenStack Designate を使用した DNS as a Service (DNSaaS) の構築

OpenStack Designate を使用した DNS as a Service (DNSaaS) の構築

[[265096]]

OpenStack 用のマルチテナント DNS as a Service (DNSaaS) である Designate をインストールして構成する方法を学びます。

Designate は、ドメイン名とレコード管理用の REST API と、Neutron と統合して Bind9 をサポートするフレームワークを含む、マルチテナントの DNS サービスです。

DNSaaS は以下を提供できます。

  • ゾーンとレコードを管理するためのクリーンなREST API
  • レコードの自動生成(OpenStack統合)
  • 複数の権威ネームサーバーのサポート
  • 複数のプロジェクト/組織をホストできる

Designateのアーキテクチャ

この記事では、CentOS および RHEL に現在のバージョンの Designate を手動でインストールして構成する方法について説明しますが、同じ構成を他のディストリビューションでも使用できます。

OpenStack に Designate をインストールする

私の GitHub リポジトリに、Ansible の bind および Designate ロールのサンプル設定を配置しました。

このセットアップでは、bing サービスが OpenStack コントローラー ノードの外部にインストールされていることを前提としています (bind をローカルにインストールできる場合でも)。

1. OpenStack コントロール ノードに Designate パッケージと bind パッケージをインストールします。

  1. # yum install openstack - designate -* bind bind - utils - y

2. 指定データベースとユーザーを作成します。

  1. MariaDB [( none )]> CREATE DATABASE designate CHARACTER SET utf8 COLLATE utf8_general_ci ;
  2. MariaDB [( none )]> GRANT ALL PRIVILEGES ON designate .* TO \
  3. 'designate' @ 'localhost' IDENTIFIED BY 'rhlab123' ;
  4. MariaDB [( none )]> GRANT ALL PRIVILEGES ON designate .* TO 'designate' @ '%' \
  5. IDENTIFIED BY 'rhlab123' ;

注: 使用するには、bindパッケージをコントロールノードの外部にインストールする必要があります。リモートネームサービス制御リモート名デーモン制御(RNDC) は正常に機能しています。

バインド(DNSサーバー)を構成する

1. RNDC ファイルを生成します。

  1. rndc - confgen - a - k designate - c / etc / rndc . key - r / dev / urandom
  2. cat << EOF > etcrndc . conf
  3. include "/etc/rndc.key" ;
  4. options {
  5. default - key "designate" ;
  6. default - server {{ DNS_SERVER_IP }};
  7. default - port 953 ;
  8. };
  9. EOF

2. named.confに次の設定を追加します。

  1. include "/etc/rndc.key" ;
  2. controls {
  3. inet {{ DNS_SERVER_IP }} allow { localhost ;{{ CONTROLLER_SERVER_IP }}; } keys { "designate" ; };
  4. };

optionセクションで、以下を追加します。

  1. options {
  2. ...
  3. allow - new - zones yes ;
  4. request - ixfr no ;
  5. listen - on port 53 { any ; };
  6. recursion no ;
  7. allow - query { 127.0 . 0.1 ; {{ CONTROLLER_SERVER_IP }}; };
  8. };

正しい権限を追加します:

  1. chown named : named / etc / rndc . key
  2. chown named : named / etc / rndc . conf
  3. chmod 600 / etc / rndc . key
  4. chown - v root : named / etc / named . conf
  5. chmod g + w / var / named
  6. # systemctl restart named
  7. # setsebool named_write_master_zones 1

3. rndc.keyrndc.confを OpenStack コントロール ノードにプッシュします。

  1. # scp - r / etc / rndc * {{ CONTROLLER_SERVER_IP }}: /etc/

OpenStack Designateサービスとエンドポイントを作成する

入力:

  1. # openstack user create -- domain default -- password - prompt designate
  2. # openstack role add -- project services -- user designate admin
  3. # openstack service create -- name designate -- description "DNS" dns
  4. # openstack endpoint create -- region RegionOne dns public http : //{{ CONTROLLER_SERVER_IP }}:9001/
  5. # openstack endpoint create -- region RegionOne dns internal http : //{{ CONTROLLER_SERVER_IP }}:9001/
  6. # openstack endpoint create -- region RegionOne dns admin http : //{{ CONTROLLER_SERVER_IP }}:9001/

Designate サービスの設定

1. /etc/designate/designate.confを編集します。

[service:api]セクションでauth_strategyを設定します。

  1. [ service : api ]
  2. listen = 0.0 . 0.0 : 9001
  3. auth_strategy = keystone
  4. api_base_uri = http : //{{ CONTROLLER_SERVER_IP }}:9001/
  5. enable_api_v2 = True
  6. enabled_extensions_v2 = quotas , reports

[keystone_authtoken]セクションで次のオプションを設定します。

  1. [ keystone_authtoken ]
  2. auth_type = password
  3. username = designate
  4. password = rhlab123
  5. project_name = service
  6. project_domain_name = Default
  7. user_domain_name = Default
  8. www_authenticate_uri = http : //{{ CONTROLLER_SERVER_IP }}:5000/
  9. auth_url = http : //{{ CONTROLLER_SERVER_IP }}:5000/

[service:worker]セクションで、ワーカー モデルを有効にします。

  1. enabled = True
  2. notify = True

[storage:sqlalchemy]セクションで、データベース アクセスを構成します。

  1. [ storage : sqlalchemy ]
  2. connection = mysql + pymysql : //designate:rhlab123@{{ CONTROLLER_SERVER_IP }}/designate

Designate データベースにデータを入力します。

  1. # su - s / bin / sh - c "designate-manage database sync" designate

2. Designate pools.yamlファイルを作成します (ターゲットとバインドの詳細を含む)。

/etc/designate/pools.yamlを編集します:

  1. - name : default
  2. # The name is immutable . There will be no option to change the name after
  3. # creation and the only way will to change it will be to delete it
  4. # ( and all zones associated with it ) and recreate it .
  5. description : Default Pool
  6. attributes : {}
  7. # List out the NS records for zones hosted within this pool
  8. # This should be a record that is created outside of designate , that
  9. # points to the public IP of the controller node .
  10. ns_records :
  11. - hostname : {{ Controller_FQDN }}. # Thisis mDNS
  12. priority : 1
  13. # List out the nameservers for this pool . These are the actual BIND servers .
  14. # We use these to verify changes have propagated to all nameservers .
  15. nameservers :
  16. - host : {{ DNS_SERVER_IP }}
  17. port : 53
  18. # List out the targets for this pool . For BIND there will be one
  19. # entry for each BIND server , as we have to run rndc command on each server
  20. targets :
  21. - type : bind9
  22. description : BIND9 Server 1
  23. # List out the designate - mdns servers from which BIND servers should
  24. # request zone transfers ( AXFRs ) from .
  25. # This should be the IP of the controller node .
  26. # If you have multiple controllers you can add multiple masters
  27. # by running designate - mdns on them , and adding them here .
  28. masters :
  29. - host : {{ CONTROLLER_SERVER_IP }}
  30. port : 5354
  31. # BIND Configuration options
  32. options :
  33. host : {{ DNS_SERVER_IP }}
  34. port : 53
  35. rndc_host : {{ DNS_SERVER_IP }}
  36. rndc_port : 953
  37. rndc_key_file : /etc/ rndc . key
  38. rndc_config_file : /etc/ rndc . conf

指定プールを埋める:

  1. su - s / bin / sh - c "designate-manage pool update" designate

3. 指定センターと API サービスを開始します。

  1. systemctl enable -- now designate - central designate - api

4. Designate サービスが実行されていることを確認します。

  1. # openstack dns service list
  2. +--------------+--------+-------+--------------+
  3. | service_name | status | stats | capabilities |
  4. +--------------+--------+-------+--------------+
  5. | central | UP | - | - |
  6. | api | UP | - | - |
  7. | mdns | UP | - | - |
  8. | worker | UP | - | - |
  9. | producer | UP | - | - |
  10. +--------------+--------+-------+--------------+

外部 DNS を使用した OpenStack Neutron の設定

1. Designate サービス用に iptables を設定します。

  1. # iptables - I INPUT - p tcp - m multiport -- dports 9001 - m comment -- comment "designate incoming" - j ACCEPT
  2. # iptables - I INPUT - p tcp - m multiport -- dports 5354 - m comment -- comment "Designate mdns incoming" - j ACCEPT
  3. # iptables - I INPUT - p tcp - m multiport -- dports 53 - m comment -- comment "bind incoming" - j ACCEPT
  4. # iptables - I INPUT - p udp - m multiport -- dports 53 - m comment -- comment "bind/powerdns incoming" - j ACCEPT
  5. # iptables - I INPUT - p tcp - m multiport -- dports 953 - m comment -- comment "rndc incoming - bind only" - j ACCEPT
  6. # service iptables save ; service iptables restart
  7. # setsebool named_write_master_zones 1

2. /etc/neutron/neutron.conf[default]セクションを編集します。

  1. external_dns_driver = designate

3. /etc/neutron/neutron.conf[designate]セクションを追加します。

  1. [ designate ]
  2. url = http : //{{ CONTROLLER_SERVER_IP }}:9001/v2 ## This end point of designate
  3. auth_type = password
  4. auth_url = http : //{{ CONTROLLER_SERVER_IP }}:5000
  5. username = designate
  6. password = rhlab123
  7. project_name = services
  8. project_domain_name = Default
  9. user_domain_name = Default
  10. allow_reverse_dns_lookup = True
  11. ipv4_ptr_zone_prefix_size = 24
  12. ipv6_ptr_zone_prefix_size = 116

4. neutron.confdns_domainを編集します。

  1. dns_domain = rhlab . dev .

再起動:

  1. # systemctl restart neutron -*

5. /etc/neutron/plugins/ml2/ml2_conf.iniのコンポーネント レイヤー 2 (ML2) にdnsを追加します。

  1. extension_drivers = port_security , qos , dns

6. Designate で領域を追加する:

  1. # openstack zone create email = admin@rhlab . dev rhlab . dev .

rhlab.dev領域にレコードを追加します。

  1. # openstack recordset create -- record '192.168.1.230' -- type A rhlab . dev . Test

Designate がインストールされ、構成されました。

<<:  詳細説明: Linuxネットワーク仮想化技術

>>:  5Gがやってきました。 IDC、エッジコンピューティング、CDN はどのように変化するのでしょうか?

推薦する

Google Drive が 4 年ぶりに値下げされ、Google One に名称が変更される

何らかの理由により、Google は最近、Google Drive クラウド ストレージ プランの名...

Docker-Composeの上級バージョンについてお話しましょう

1. 概要docker-compose プロジェクトは、docker の公式オープン ソース プロジ...

ウェブサイトのスナップショットを更新しないと、キーワードランキングの変動が大きくなる可能性がある例

Baidu Lee は公式プラットフォームで「ウェブサイトのスナップショットの更新頻度とその重みの間...

SEO担当者は検索エンジンのアップデートについて常に冷静でいるべきである

昨日、6 月 26 日、Baidu は別の大きなアップデートを行いました。このアップデートにより、当...

消費の低下とピンドゥオドゥオの台頭

この 1 万語の記事では、 Pinduoduoの財務報告、低価格商品の背後にあるロジック、製品のルー...

クラウドコンピューティングが産業企業に真の利益をもたらす方法

21 世紀に入り、産業の発展とともに、モノのインターネット、クラウド コンピューティング、ビッグ デ...

草の根9158は変革を模索:年間売上高3億元、年内に上場予定

趙南傅正君は窓の外を見つめてため息をついた。「もっと大きく成長したければ、変革しなければなりません。...

クラウド上の OLAP エンジンのクエリ パフォーマンス評価フレームワーク: 設計と実装

背景パブリック クラウドは、ユーザーに経済的で便利なコンピューティング リソースを提供するプラットフ...

hostdare-1.5$/quadranet/ロサンゼルス/512M メモリ/10g SSD/600g トラフィック

安価な VPS がお好みの方は、中国では比較的高品質である Quadranet データセンターのロサ...

外部リンクを多すぎる数投稿するとランクが下がりますか?

多くのウェブマスターの友人は、「外部リンクが多すぎると、ウェブサイトのランクが下がるのでしょうか?」...

三国志を読む:注目を浴びた鍾馗の死がなぜ目立たずに生き残ったのか?

長江は東に流れ、波はすべての英雄を洗い流します。後漢末期、漢王朝は弱体化し、軍閥は権力を争いました。...

flaunt7: 著作権保護の苦情は無視されることを明確に記載、オランダのVPS、オランダのサーバー

flaunt7 は、オフショア仮想ホスティング、オフショア VPS、オフショア独立サーバーを提供する...

テンセントクラウドが国際的なプロフェッショナルストリーミングメディア評価で認められる:3つのシナリオすべてでビデオエンコードのパフォーマンスが最適

ユニバーサルビデオの時代において、ビデオの品質、滑らかさ、帯域幅のストレージコストを決定するエンコー...

Ctrip の大量コールドデータ シナリオにおける JuiceFS の実践

著者: Miao Cheng は、Ctrip のクラウド ネイティブ R&D エンジニアであ...