Microsoft が管理するセキュリティで保護された専用 Redis キャッシュへのアクセスを提供する Azure サービス。
こんにちは Kana Suzuki ,
Microsoft Q&Aをご利用いただきありがとうございます!
翻訳にはGoogle翻訳を使用しています。文法的な誤りがありましたらご容赦ください。
Azure Cache for Redis インスタンスのポート 6380 への Test-NetConnection が失敗する場合、ネットワークレベルのブロックが原因である可能性が高く、ファイアウォール規則、プライベートエンドポイントと競合するパブリックネットワークアクセス設定、またはローカルのグローバルIPアドレスがIP制限に含まれていないことが考えられます。プライベートエンドポイント設定で「パブリックネットワークアクセス」を有効にしている場合でも、ファイアウォールでSSLポート6380へのパブリックエンドポイントアクセスに対して、ローカルマシンの正確なIPアドレスを明示的に許可する必要があります。
確認すべき主要設定
AzureポータルでRedisキャッシュリソースを開き、まず「設定」>「ファイアウォール」で、ローカルマシンのパブリックIPv4アドレス(curl ifconfig.meまたはwhatismyip.comで取得できます)が許可範囲としてリストされていることを確認してください。規則が有効になるまでには約1分かかる場合があります。次に、「プライベートエンドポイント」>「設定」に移動し、「パブリックネットワークアクセス」が完全に有効になっていることを確認してください。プライベートエンドポイントはデフォルトでパブリックアクセスが無効になっています。非SSLポート6379はテスト用に既に有効になっていますが、SSLポート6380を優先してください。また、NSGはプライベートエンドポイントのトラフィックには影響しないことに注意してください。
これらの接続テストを実行する
変更後、Test-NetConnection <resource>.redis.cache.windows.net -Port 6380 をホスト名を使用して再試行してください(IPアドレスは使用しないでください)。代替手段として、Microsoft SysinternalsからPSpingを取得し、psping -q <resource>.redis.cache.windows.net:6380 を実行してパケット損失を確認するか、redis-cli -h <resource>.redis.cache.windows.net -p 6379 ping を使用して非SSL接続をテストしてください(PONGが返されるはずです)。nslookup <resource>.redis.cache.windows.net も実行してください。ローカルマシンからパブリックIPアドレスに解決される必要があり、プライベートIPアドレスに解決されてはいけません。
ローカル接続コード
PowerShellまたはPythonでStackExchange.Redisを使用して接続するには、次のようにします。まず、az keyvault secret showまたはSDKを使用してKey Vaultからプライマリキーを取得します(Key Vaultファイアウォールは別途確認が必要です)。Add-Type -Path "path\to\StackExchange.Redis.dll"; $conn = [StackExchange.Redis.ConnectionMultiplexer]::Connect("<resource>.redis.cache.windows.net:6380,password={KeyVaultSecret},ssl=True,allowAdmin=True"); $cache = $conn.GetDatabase(); $cache.StringSet("test","value"); $cache.StringGet("test").
それでも失敗する場合は、
キャッシュのメトリックで「接続済みクライアント」または「エラー(フェールオーバー)」の急増を確認し、パブリック接続のみのテストのためにプライベートエンドポイントを一時的に削除/再作成してみてください。Azureアクティビティログでブロックされている項目を確認し、必要に応じて診断情報とともにサポートチケットを起票してください。