ローカルインターフェイス上のDNSサーバー、またはプログラマと管理者の間を愛するシンプルなパス

私には、約40のLinuxサーバーと複数のPHPプログラマーの従属異種ネットワークがあります。 長い間、私はデータベース、memcached、redis、およびsphinxサーバーへの接続を単一の構成統一ファイルに転送するように要求しました。 しかし今日、素晴らしいアイデアが生まれました。 これは、作業中のサーバーをすばやくオン/オフできず、技術サポートにアップグレード虐殺を提供できないことが原因でした。 もちろん、サーバーの数が少ないときは数時間待つことができ、お茶を飲んだり、愛する人とチャットしたりできますが、これにより、多数のマシンで作業することが非常に難しくなります。



アイデアは次のとおりです。各ローカルマシンに、すべての内部リソースを記述するゾーンを委任します。記録の有効期間はわずか数秒です。 変更が発生した場合、新しい鉄片をクラスターに追加し、古い鉄片をオフにし、既存のクラスターのアドレスを変更するなど-dns-masterサーバー上のゾーンファイルを編集して、スレーブ、つまり作業中のマシンにアップロードするだけです。 個人的には、そのアイデアはそのシンプルさにおいて依然として素晴らしいようです。



技術的な実装は非常に簡単です。数行の設定を行います。数十台のサーバーを持つ管理者は、何が何であるかをよく理解しているようですが、最初のリクエストで詳細を説明します。



ゾーンに美しい名前を付け、新しいDNSマスターとなるサーバーに委任します。

[root@isp4 manualzone]# cat corp.ru |grep service.noc service.noc NS admin.service.noc admin.service.noc IN A AA.BB.CC.74
      
      







新しいサーバーで:

named.conf:



 acl "trust" { 127.0.0.1; AA.BB.CC.0/24; }; options { check-names master ignore; allow-transfer { any; }; allow-notify { any; }; allow-query { any; }; directory "/var/lib/named"; dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; listen-on { AA.BB.CC.74; 127.0.0.1; }; query-source address * port 53; transfer-source * port 53; notify-source * port 53; notify yes; disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; };
      
      







もちろん、ゾーンファイルには、関心のあるすべてのサービスが記述されています。 エントリの有効期間を、ニーズに合わせて調整することを忘れないでください。

 SER34:/var/lib/named/master # cat service.noc.corp.ru $TTL 5 @ 5 IN SOA admin.service.noc.corp.ru. root.service.noc.corp.ru. ( 2012082004 ; serial 5s ; refresh 15s ; retry 7d ; expire 5s ; minimum ttl ) IN A AA.BB.CC.0 IN NS admin.service.noc.corp.ru. IN NS W02.service.noc.corp.ru. ADMIN IN A AA.BB.CC.74 W02 IN A AA.BB.CC.22 ;WEB WEBNODE IN A AA.BB.CC.0 WEBNODE IN A AA.BB.CC.1 WEBNODE IN A AA.BB.CC.2 WEBNODE IN A AA.BB.CC.3 WEBNODE IN A AA.BB.CC.4 WEBNODE IN A AA.BB.CC.5 WEBNODE IN A AA.BB.CC.6 WEBNODE IN A AA.BB.CC.7 ;MYSQL REPLICATE CLUSER MYSQLCLUSTER00 IN A AA.BB.CC.50 MYSQLCLUSTER00 IN A AA.BB.CC.51 MYSQLCLUSTER00 IN A AA.BB.CC.52 MYSQLCLUSTER00 IN A AA.BB.CC.53 ;MYSQL MASTER ADMIN MYSQLCLUSTER_ADMIN IN A AA.BB.CC.70 ;MYSQL MASTER INTERACTIVE MYSQLCLUSTER_INTERACTIVE IN A AA.BB.CC.54 ;MYSQL MASTER_ONE MYSQLCLUSTER_ONE IN A AA.BB.CC.55 ;SPHINX CLUSTER01 SPHINX_CLUSTER00 IN A AA.BB.CC.56 SPHINX_CLUSTER01 IN A AA.BB.CC.57 SPHINX_CLUSTER02 IN A AA.BB.CC.58
      
      







さて、ここで私たちはスレーブに行き、ローカルインターフェース上で名前を上げます(結局、サーバー自体以外は誰も必要としません)そして最小限の設定で。

named.conf

 options { allow-update { AA.BB.CC.74; }; directory "/var/lib/named"; dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; listen-on port 53 { 127.0.0.1; }; allow-query { 127.0.0.1; }; notify no; disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; }; zone "service.noc.corp.ru" { type slave; file "slave/service.noc.corp.ru"; masters { AA.BB.CC.74; }; };
      
      







その後、/ etc / resolv.confに書き込みます

 SRV03:/var/lib/named/slave # cat /etc/resolv.conf search noc.corp.ru nameserver 127.0.0.1
      
      







そしてもちろんチェック:



 SRV03:/var/lib/named/slave # nslookup > webnode.service Server: 127.0.0.1 Address: 127.0.0.1#53 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.22 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.23 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.24 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.25 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.26 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.27 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.20 Name: webnode.service.noc.corp.ru Address: AA.BB.CC.21
      
      







そして、小さくても手入れの行き届いたサーバーパークのすべてのノードで実行します。 尊敬されるプログラマーが、5分間で多数の構成を実行し、天びんの1つまたは別のノードをオフにする時間を見つけることを考えずに生活を楽しんでいます。



PS。 バランサとプロキシが使用されない理由を尋ねないでください。これにはアーキテクチャ上の理由があります。

PPS 最初にシステム自体をセットアップするよりも多くの時間をこの記事の執筆に費やしました。 すべてのIPアドレス、ホスト名、および構成ファイルは実際に基づいており、パフォーマンスがテストされています。



All Articles