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

推薦する

キーワード最適化のヒントを共有する

検索業界全体を見てみると、トラフィックの多いキーワードは、一部の大手の古いサイトが占めています。これ...

マーケティングコンサルタントの Yin Tuochun による、ウェブサイトのコンバージョン率を向上させる実践的なヒント

トラフィックはあるが、問い合わせが少なく、コンバージョン率が低い。しかし、どこから始めればよいのか分...

「言葉にできない」tois-512m メモリ/xen/30g ハードディスク/20M 無制限/6.45 米ドル

「言葉にできない」toisLabsは2011年1月に設立され、2013年10月に運用を開始しました。...

百度の最近のアルゴリズム調整:スパム対策と業界ブランドの認証

みなさんこんにちは。私は徐子宇です。過去1か月ほどの間に、Baiduはアルゴリズムを大幅に調整し、い...

画像ネットワークの最適化とトラフィック分析

美人写真は、国内のインターネット初心者のウェブマスターに最も人気のあるウェブサイトの1つです。 良い...

パフォーマンスが最大480倍向上:Armが2つの新しいAIエッジコンピューティングチップ設計を発表

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

タオバオの売り手は小さくて美しい運営の考え方を持つべきだ

電子商取引の発展により、多くの若者がインターネット上で独自のビジネスを始めるようになりました。Tao...

第10回中国クラウドコンピューティングカンファレンスが成功裏に開催され、ZDNet編集長がサミット対話を主催した。

7月23日から25日まで、第10回中国クラウドコンピューティングカンファレンスが北京国家会議センター...

Kafka ソースコードシリーズ: Kafka を例に分散ストレージシステムを説明します

Kafka ソースコード シリーズ。Kafka 0.8.2.2 を例に説明します。目標は、Kafka...

ディーラーミーティングでのニュース配信の必要性

年末が近づくと、企業は年次総会、ディーラー会議、大晦日パーティーなど、多くのイベントを開催します。そ...

適切な基準点を見つけるための4つのポイントに基づいてウェブサイトの説明を設定する方法

多くのウェブマスターは、ウェブサイトのキーワードと説明がBaiduの検索エンジンによって排除されたか...

企業がSEO業者に全面的に頼るべきではない5つの理由

2005 年に SEO 業界が誕生して以来、自分自身や他のウェブマスターに利益をもたらすこの業界に参...

多次元分析: Traefik がクラウド ネイティブのゲートウェイとして好まれる理由

こんにちは、皆さん。私はルガです。今日は、クラウド ネイティブ エコシステムに関連するテクノロジー、...

A5 ソースコード: 2013 年 3 月に推奨された無料の Web サイト構築ソースコード

A5 Source Code は中国のウェブマスターにサービスを提供することに重点を置いており、大量...

インターネット上でブランドを宣伝するにはどうすればいいですか?

月給5,000~50,000のこれらのプロジェクトはあなたの将来です今日、小小科堂 SEO 自習ネッ...