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

推薦する

タオバオはO2Oに力を入れている:タオディアンディアンがテイクアウトサービスを開始

新浪科技は11月6日午前、アリババの「淘店店」事業部門が北京、上海、広州など19都市で携帯電話による...

3か月で3,000アクセスの女性向けウェブサイトを構築した方法と経験

陸松松は以前、自身のブログに2つの記事を寄稿しており、そのうちの1つは「女性向けウェブサイトが月に数...

raksmart - 香港で30%オフ/米国CN2で40%オフ/新しい100G高防御/10Gbps帯域幅

ベテランホスティングプロバイダー raksmart の 5 月のプロモーションが早くも開始されました...

早く来なさい! Amazon クラウド テクノロジー AI カンファレンス オープンソース スペシャル セッションが盛り上がりを見せる

人間の知能をシミュレートし、拡張し、拡大するにはどうすればいいのでしょうか?私: 人工知能!データか...

感謝祭、海外ホストを超格安で購入するためのチュートリアル、初心者向けの質問

11月27日は感謝祭です! Host Cat は、外国のドメイン名、外国の仮想ホスト、外国の VPS...

大規模分散ウェブサイトアーキテクチャ: 分散システムにおけるキャッシュの応用

キャッシュは分散システムの重要なコンポーネントであり、主に高同時実行性およびビッグデータ シナリオで...

Sangfor AC は SASE を全面的に採用し、IDC のセキュリティ コンテンツ管理市場シェアで 12 年連続第 1 位を獲得

ACアップグレードから1年後、SangforはSASEベースの回答シートを納品しました少し前にIDC...

フルーツO2Oマイクロストアシステムを開発するには?

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

ウェブサイトの微調整は不可欠であり、コンバージョンの向上が鍵となる

ご存知のとおり、企業ウェブサイトではコンバージョン率が鍵となります。トラフィックは非常に重要ですが、...

YourLastHost - $12/年/VPS/512m メモリ/75g ハードドライブ/3CPU/1.5T トラフィック

YourLastHost では、安価な OVZ 仮想 VPS を 2 つ提供しています。提供される ...

2019 年にクラウド IT インフラストラクチャの需要が変動し続ける理由

調査によると、エンタープライズ ハイブリッド クラウド環境に導入されるサーバー、ディスク ストレージ...

現代のKubernetesテストの5つの課題

コンテナ化からマイクロサービスまで、リモートワーク、アジャイルチーム、クラウドネイティブの採用により...

目を覚ましてください!検索エンジンの不正行為防止の時代が到来しました

XiayipaiのSEO担当者Lian Zichao氏は、5月23日以降、Baiduの検索エンジンで...