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 はどのように変化するのでしょうか?

推薦する

hostyun: 中秋節 VPS イベント、全品 12% オフ、すべてのハイエンド ライン、オプションには香港/韓国/日本/米国/ロシアが含まれます

Hostyunは特別な中秋節イベントを開始しました: (1) すべてのデータセンターのすべてのVPS...

ウェブサイト訪問者のニーズを理解するために必要なこと

中国のウェブサイトユーザーを見ると、多くのウェブサイト運営者がホームページを中心に考えていることがわ...

コインの裏側:ハイブリッドクラウドの成長痛

人がいるところに市場がある。市場があるところにクラウド コンピューティングがあります。クラウド コン...

hivalidity: インド VPS (ムンバイ、ノイダ)\米国 VPS\ドイツ VPS、月額 5 ドル、1Gbps 帯域幅

2009 年に設立されたインド企業である hivalidity は、ドメイン名、仮想ホスティング、V...

広告規制違反のため、Chromeの検索ランキングが60日間低下

北京時間1月4日、海外メディアの報道によると、Google Chromeブラウザは自社の検索広告規制...

成功するウェブサイト運営の3つのポイント

この間、張立と彼の友人である恵州SEOブロガーの葉建輝は新しいウェブサイトを立ち上げる計画を立ててい...

ワールドカップがマーケティング戦争を引き起こした。ハイセンスはCポジションでどのようにデビューするのだろうか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています2018年...

エッジからクラウドへの進化における4つの課題

世界中の組織は、毎日生成される前例のない量のデータによってますます困難に直面しています。モノのインタ...

VMware、分散型マルチクラウド企業の接続と保護を実現する仮想クラウド ネットワークのイノベーションを発表

VMware は今週の VMworld 2020 で、顧客が最新のネットワークを構築して現在および将...

WeiboマーケティングでSinaとTencentを行き来する方法

Weibo は現在、非常に人気があります。Weibo マーケティングはプロモーターの生活に浸透してお...

シーメンスはRed Hat OpenShiftで工場エッジのイノベーションを加速

オープンソース ソリューションの世界的な大手プロバイダーである Red Hat は本日、シーメンスが...

Ceph オブジェクト ストレージに基づくハイブリッド クラウド メカニズムの詳細な分析

1. 背景クラウド コンピューティングの発展の勢いに乗って、Ceph が今日最も注目されているソフト...

Sina Web サイトをセットアップするために必要な証明書の数を数えてください。

要約: 著者は、Sina.com が設立以来取得する必要があったさまざまな証明書とライセンスを列挙し...

あなたがSEO初心者なら、冷酷さが足りないならSEO業界に参入しないでください

SEO とは何でしょうか? 記事を書いて投稿に返信するだけではないでしょうか? SEO 業界に不慣れ...