[[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 パッケージをインストールします。 -
# 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' ;
注: 使用するには、bindパッケージをコントロールノードの外部にインストールする必要があります。リモートネームサービス制御(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" ; }; -
};
option セクションで、以下を追加します。 -
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.key とrndc.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/
Designate サービスの設定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] セクションで、ワーカー モデルを有効にします。 -
enabled = True -
notify = True
[storage:sqlalchemy] セクションで、データベース アクセスを構成します。 -
[ storage : sqlalchemy ] -
connection = mysql + pymysql : //designate:rhlab123@{{ CONTROLLER_SERVER_IP }}/designate
Designate データベースにデータを入力します。 -
# su - s / bin / sh - c "designate-manage database sync" designate
2. 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
指定プールを埋める: -
su - s / bin / sh - c "designate-manage pool update" designate
3. 指定センターと API サービスを開始します。 -
systemctl enable -- now designate - central designate - api
4. Designate サービスが実行されていることを確認します。 -
# openstack dns service list -
+--------------+--------+-------+--------------+ -
| service_name | status | stats | capabilities | -
+--------------+--------+-------+--------------+ -
| central | UP | - | - | -
| api | UP | - | - | -
| mdns | UP | - | - | -
| worker | UP | - | - | -
| producer | UP | - | - | -
+--------------+--------+-------+--------------+
外部 DNS を使用した OpenStack Neutron の設定1. Designate サービス用に 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] セクションを追加します。 -
[ 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. neutron.conf のdns_domain を編集します。 -
dns_domain = rhlab . dev .
再起動: -
# systemctl restart neutron -*
5. /etc/neutron/plugins/ml2/ml2_conf.ini のコンポーネント レイヤー 2 (ML2) にdns を追加します。 -
extension_drivers = port_security , qos , dns
6. Designate で領域を追加する: -
# openstack zone create – email = admin@rhlab . dev rhlab . dev .
rhlab.dev 領域にレコードを追加します。 -
# openstack recordset create -- record '192.168.1.230' -- type A rhlab . dev . Test
Designate がインストールされ、構成されました。 |