質問

ここで、以下の

いデータベースのセットアップ database.mywebsite.com, を解決するIP 111.111.1.1, ながら、地元のDNSサーバのネットワーク.

私は多くのASP、ASP.NET およびサポートを利用したアプリケーションの接続文字列を活用し database.mywebsite.com として、サーバの名前、実行中のすべての内部ネットワーク.

その後のボックスのデータベースの金型のスイッチしたボックスIP 222.222.2.2.

そこで、更新、DNSのための database.mywebsite.com ポー 222.222.2.2.

すべてのアプリやコンピュータ走行してキャッシュの解決IPアドレスとは何ですか。

いと仮定しています。

あらゆる提案に "なIPを変更するスイッチボックス" ないものとして歓迎できないことな側面の状況は、残念ながら、現在のマシン名のボックス、刻々と変化する時間で金型及びすべてのアプリなど。って更新する、新しい機械の名前です。これは痛い。

役に立ちましたか?

解決

DNSはマシンのローカルにキャッシュされていない場合でも、

、それはおそらく、少なくともしばらくの間、マシンとネームサーバ間のDNSのチェーンに沿ってどこかにキャッシュされます。私の理解では、このような状況は通常、あなただけの新しいマシン111.111.1.1を行うIP引継ぎで処理されるです。

serverfaultのための

おそらく質問ます。

他のヒント

あなたがDNS TTL(生存時間)のために

探している私は、私の意見では、アプリケーションがTTLの最大値のためにIPをキャッシュすることができる...と思います。私はいくつかのアプリケーションは、/技術が実際に長くそれをキャッシュするかもしれないことが怖い(私の意見ではagian完全に間違っている)

各マシンには、IPアドレスをキャッシュします。

それがキャッシュされる時間の長さは、TTL(生存時間)です。これは、あなたのDNSサーバー上の設定である、あなたがそれを設定した場合、非常に低い5分は、その後、あなたがあることまで、かなりquiklyランニング示して言います。ハックのビットが、それは動作するはずです。

はい、他のコメントが、これはホスト名database.mywebsite.comのDNS TTLセットが何であるかを制御することで正しいます。

あなたは時間の最大量は、あなたがセカンダリアドレスへの切り替えを行った後、あなたのプライマリアドレス(111.111.1.1)に障害が発生した場合のを待つために喜んでいるかを決定する必要があります。下の設定は、あなたの迅速な回復時間を与えますが、クライアントがより頻繁に彼らのキャッシュを更新するためにそれを再クエリする必要がありますので、また、お使いのDNSサーバへの負荷や帯域幅を増加します。

あなたは、デフォルトのTTL時間と残りのTTL時間はあなたが照会されているDNSサーバのためのものであるかを確認するためにあなたのcmdプロンプトから-dオプションを使用して、nslookupコマンドを使用することができます。

%> nslookup -d google.com

あなたは、彼らがはっきりする前に言及していない二つの理由のために換金されていることを前提とすべきです

OSファミリーの1 - 多くの「現代」のバージョンでは、DNSキャッシュを行います。 2 - 多くのアプリケーションでは、DNSキャッシュを行うか、ライブ接続および/または新しい接続を開くに貧しいエラー/障害検出を持っています。これはおそらく、データベースクライアントが含まれます。

また、これはおそらく十分に文書ではありません。私はいくつかのグーグルをした、とMySQLのためにこれを見つけます:

<のhref = "http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-connecting-connection-string.html#connector-net-programming-connecting-errors" rel = "nofollowをnoreferrer"> http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-connecting-connection-string.html#connector-net-programming-connecting-errors

これは明らかに、この点でその動作を説明していません。

私は最後の数週間のために、アプリケーションプールのリサイクルの機能と実行を無効にしたWebサイトと同様の問題がありました。時には、クラスタ化されたSQL Serverのボックスが再起動してしまうと、何らかの理由で、私のSqlConnectionのは、再接続されませんでした。私はエラーを取得しました。

  

ネットワーク関連またはインスタンス固有   確立中にエラーが発生しました   SQL Serverへの接続。サーバー   見つからないか、アクセスできませんでした。   インスタンス名があることを確認します   正しいとSQL Serverがあること   リモート許可するように設定   接続。 (プロバイダ:名前付きパイプ   プロバイダ、エラー:40 - 開くことができませんでした   SQL Serverへの接続)

サーバーがあった - と実行 - 私はちょうどアプリケーションプールをリサイクルした場合、実際には、アプリが正常に動作します - !私はアプリプールをリサイクル好きではありません。

接続プール内に保持されていた接続は何とか古い接続情報を使用していた、そしてそれは、古いIPアドレスだったかもしれません。これは、すぐにキャッシュのいくつかの並べ替えがクリアされると、アプリが正常に動作しますので、DNS情報をキャッシュしているように見えることを、ポスターの質問に非常に似ているようだものです。

これは、私はそれを解決する方法である - 再作成するプール内のすべての接続を強制的に:

Try
    ' Example: SqlDependency, but this could also be any SqlConnection.Open call
    Dim result As Boolean = SqlClient.SqlDependency.Start(ConnStr)
Catch sqlex As SqlClient.SqlException
    SqlClient.SqlConnection.ClearAllPools()
End Try

コードサンプルがちょうど煮ダウンの基本である! - それはあなたの状況に応じて微調整する必要があります。

DNSはキャッシュされますが、間違ったIPアドレスに解決する任意のサーバのために、サーバーとIPのHOSTSファイルをすぐに更新する必要があります更新することができます。あなたは、データベース・サーバーにアクセスするサーバの限られた量を持っている場合、これは解決策になる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top