背景
それはすべて、1年前にシステムの信頼性を改善することを考え、一般的な最適化プロセスのために、DNSホスティングがかなり低いTTL、たとえば5分を維持するのにかかったという事実から始まりました。 残念ながら、ドメインが登録されDNSゾーンが保持されているResellerClubは、そのような機会を提供していません。 別の方法を探して、ドメインネームシステムを使用すると、サーバー間でトラフィックのバランスを取るだけでなく、たとえばDDoS攻撃中にトラフィックをフィルタリングできることが明らかになりました。 昨年、私たちは提案の分析を実施し、Habréに関する研究とテストの結果を公開しました。
市場を調査する過程で、実際には2種類のオファーがあることがわかりました:適切な価格(1か月あたり1ドルから3ドル)でのDNSホスティングの最も単純なバージョンと、ジオターゲティングなどの追加料金がかなり高いDNSホスティングです。 シンプルなホスティングを手頃な価格で提供するオプションもありますが、明らかな理由により、考慮しませんでした。 彼らが見つけられなかったのは、すべての機能を適切な価格で提供するDNSホスティングサービスです。 そのため、このようなプロジェクトを自分で
分析
私たちはプロジェクトの開発に真剣に取り組み、競争のより詳細な分析から始めました。 提案の大半は、1か月に1〜3ドルでパッケージ(1ドメイン+最大100レコード+最大100万件のリクエスト)になりました。 技術面では、ほとんどのオプションが一般的なレコードタイプ、通常のラウンドロビン、最低1〜5分のTTLのサポートを提供します。 競争力のあるプラットフォームにサービスを提供するサーバーの数は、1から15まで異なります(AmazonのRoute 53を除く)。
同様のサービスですが、ジオターゲティング、高度なバランシング、API、およびその他の設備をサポートしているため、すでにはるかに高価であり、たとえばダインでは195ドルからです。 特定のパッケージのコストを計算すると、パッケージで同じサービスセット(1ドメイン+ 100レコード+ 100万リクエスト)をたった2ドルで提供できるという結論に達しました。
この奇跡を達成するには?
テクニック
もちろん、私たちはダンピングを処理するつもりはありません。 宣言された価値の範囲内で必要なレベルのサービスを提供するには、適切な技術プラットフォームを選択する必要があり、私たちの選択は、最近私たちのプロジェクトにますます導入している技術にかかっていました。 データストレージには、NoSQLソリューションのCouchDBを選択しました。これにより、DNSサーバーのレプリケーションの問題を同時に解決できました。 「マスター-マスター」レプリケーションは既にCouchDBレベルで実装されているため、各DNSサーバーは他のサーバーについて何も知らなくても自律的にマスターとして動作できます。 とりわけ、このソリューションは、DNSレベルでの「マスタースレーブ」関係を排除するため、システムの全体的な安定性を向上させます。つまり、ウィザードがクラッシュしても問題は発生しません。 私たちのアーキテクチャでは、すべてのサーバーがマスターであり、プラットフォームのうち少なくとも1つが利用可能であればプラットフォームは機能します。
実際、データベースとしてCouchDBを選択すると、 couchness.comプロジェクト自体の名前が決まります 。
近年の伝統によれば、このサイトはDjangoで作成されており、開発者の1人の内部ライブラリを使用してCouchDBを操作しています。
DNSサーバーの役割で、いくつかのオプションを試し、CouchDBデータベースのすべてのユーザーにバインディングを作成しましたが、最終的には最適なオプションとしてPowerDNSに決めました。
TKの分析と記述からプロジェクトの完了までに多くの時間が経過しましたが、現時点では、機能の大部分が既に実装されており、残りのタスクでアクティブな作業が進行中です。 現時点では、プロジェクトが起動し、次の機能をサポートしています。
1. IDN、IPv6、多くの一般的なレコードタイプのサポート。
2.ラウンドロビンおよび負荷分散(個々のレコードの「重み」を指定する機能を備えたラウンドロビンの事実に基づき)。
3. 5ノード。プロジェクトの成長に伴い、その数は常に増加します。 私たちの目標は、その数を数十にすることです。これにより、プラットフォームのアーキテクチャを考えると、安定性が向上するだけです。
4.ロシア語およびロシアの支払いシステムのサポート-PayPal /クレジットカードがないために西洋のソリューションを使用できなかった人向け。
5. 1秒からのTTL(単純に不可能です)。
開発中
1. API、すぐに。
2.地域ターゲティング(場所に応じてユーザーを異なるサーバーに誘導する)は、CDNサービスプロバイダーにとって非常に便利なソリューションです。
3. NSサーバーのジオターゲティング。 サーバー内のノードの増加に伴い、ns1とns2だけでなく、msk.ru.ns1とmsk.ru.ns2も登録できるようになり、これらのノードに「近い」ユーザーのDNSクエリが大幅に高速化されます。 主な聴衆が同じ国/都市にいる人の実際。
4.任意のバージョンに「ロールバック」して変更を表示する機能を備えたDNSゾーンのバージョンのシステム。
5. DNSゾーンのエクスポート/インポート。
その他、まだ書いていません-陰謀を守らなければなりません...
そのような機会で何ができるでしょうか?
1.サーバー間の負荷分散。ラウンドロビンのように均一ではなく、各サーバーのリソースを考慮します。 (SRVだけでなく)すべてのタイプのレコードで機能します。
2.ジオターゲティングとAPIを使用したDDoS攻撃に対する保護。これにより、ブロックや個々のIPにリアルタイムの条件を追加して、サーバーのIPではなく127.0.0.1にアクセスできるようになります。 TTLを低く設定し、攻撃がドメインに対するものである場合にのみ関連する必要がありますが、この場合の負荷の軽減には本当に役立ちます。
3.同じAPIを使用して、DNSゾーンの設定を動的に変更し、個々のレコードを完全に削除するか、バランシング中に「重み」を変更できます。 TTLが低い場合、これはほとんど瞬時に影響を与え、問題のあるサーバーからトラフィックを除去または低下させます。
現在のところ、すべての機能が一般に公開されているわけではありませんが、主な機能は正常に機能します。新しいサービスをぜひお試しください。 このタスクを容易にするために、5ドルのバウチャーを全員に配布します。これは、価格設定ポリシーを考慮すると、数か月使用するのに十分です。 バウチャーを取得するには、PMに書き込むか、Facebookのプロジェクトページ( http://www.facebook.com/couchness )で友達を作ります 。
プロジェクトに関する建設的なコメント、アイデア、または修正を事前にありがとうございます。