問題インデックス
分散キャッシュデータベースインスタンスにどのように接続しますか?
分散キャッシュデータベースは、クライアントツール、DMC、および多言語SDKなどのさまざまな方法で接続できます。
内部ネットワーク接続
同一VPC内のCVMを介してインスタンスに接続する場合、遅延は通常1ms未満です。接続方法は以下の通りです:
redis-cli -h <インスタンスの内部ネットワークアドレス> -p <ポート> -a <パスワード>
外部ネットワーク接続
ローカル環境またはTencent Cloud以外の環境からインスタンスにアクセスする必要がある場合は、コンソールで外部ネットワークアクセスアドレスを有効にできます。セキュリティ上の理由から、外部ネットワーク接続には以下の対策を併用することをお勧めします:
セキュリティグループルールを設定し、特定のIPセグメントからのアクセスのみを許可してください。
SSL暗号化転送を有効にして、データ転送のセキュリティを確保します。
強力なパスワードポリシーを使用し、定期的にパスワードを変更してください。
可視化ツール接続
Redis Desktop Managerなどの可視化ツールを使用してインスタンスを管理できます。使用する必要がある場合は、CVMをジャンプホストとして使用して外部に接続アドレスを提供できます。
説明:
外部ネットワーク接続では追加のネットワーク遅延が発生するため、本番環境では内部ネットワーク接続を優先的に使用することをお勧めします。多言語接続SDKの例については、データベースインスタンスへの接続を参照してください。 CVMとインスタンス間でプライベートネットワークを使用して接続できますか?
可能ですが、同時に以下の条件を満たす必要があります:
CVMとデータベースインスタンスは同じアカウントに属します。
両方が同じVPC内にあるか(同じリージョンであることが保証されます)、または両方とも基礎ネットワーク内にあります。
CVMのネットワーク情報は、CVMコンソールのインスタンス一覧または詳細ページで確認できます。分散キャッシュデータベースインスタンスのネットワーク情報は、Redisコンソールのインスタンス一覧または詳細ページで確認できます。 CVMとインスタンスが同じVPC内にない場合、どうすればよいですか?
CCNを使用してインスタンスに接続できます。異なるVPC(同一アカウント/異なるアカウント、同一リージョン/異なるリージョンを含む)にあるCVMとデータベースは、いずれもCCNを介して内部ネットワーク接続を実現できます。
CVMとインスタンスが異なるリージョンにある場合、プライベートネットワークで直接アクセスできますか?
いいえ。異なるリージョンは異なるVPCネットワークに属するため、直接内部ネットワークでアクセスすることはできません。2つのVPCネットワーク間にCCNを確立して相互接続を実現することをお勧めします。
同一リージョン内の異なるアベイラビリティーゾーン間で、プライベートネットワークを使用して接続できますか?
同じVPC内にあるかどうかを確認する必要があります:
同じVPCの異なるアベイラビリティーゾーンにある場合は、内部ネットワークで相互接続できます。
異なるVPC(VPC1とVPC2など)の場合は、直接内部ネットワークで相互接続できません。CCNを使用するか、ネットワークを変更して解決する必要があります。
異なるアカウントのCVMとインスタンス間で、プライベートネットワークで直接接続できますか?
いいえ。異なるアカウントのリソースは異なるVPC内にあり、直接内部ネットワークで接続することはできません。CCNを使用してアカウント間のVPC相互接続を実現することをお勧めします。
外部ネットワークからインスタンスに接続できない場合のトラブルシューティング方法は?
外部ネットワークからインスタンスに接続できない場合は、以下の手順に従って1つずつ切り分けを行ってください:
1. インスタンスで外部ネットワークアクセスアドレスが有効になっていることを確認します。Redisコンソールにログインし、インスタンス詳細ページのネットワーク情報で外部ネットワークアドレスが有効になっているかどうかを確認します。 2. セキュリティグループルールで外部ネットワークIPからのアクセスが許可されているかどうかを確認します。セキュリティグループのインバウンドルールでクライアントIPとインスタンスポート(デフォルト6379)が許可されていることを確認します。
3. クライアントが所在するネットワークが公衆ネットワークにアクセスできるかどうかを確認します。telnet <外部ネットワークアドレス> <ポート>を試して、ネットワーク接続性をテストできます。
4. 接続コマンド内のパスワード形式が正しいことを確認します。インスタンスでパスワードなしアクセスが設定されている場合は、-aパラメータは不要です。パスワードが設定されている場合、標準アーキテクチャの形式は-a <パスワード>であり、クラスタアーキテクチャのマルチアカウントモードの形式は-a <アカウント名>:<パスワード>です。
インスタンスのポート接続性をどのように確認しますか?
telnetコマンドを使用してポート接続性を検出できます:
telnet <インスタンスアドレス> <ポート>
接続が成功した場合は、ポートに到達可能であることを示します。接続がタイムアウトした場合や拒否された場合は、セキュリティグループルールとネットワーク構成を確認してください。
インスタンスのデータ転送セキュリティをどのように確保しますか?
分散キャッシュデータベースは多層的なデータセキュリティ保護メカニズムを提供します:
ネットワーク分離
インスタンスはユーザーのVPCプライベートネットワークにデプロイされ、ネットワーク分離によってインスタンスは指定されたVPC内のリソースにのみ表示され、外部ネットワークから直接アクセスすることはできません。
アクセス制御
セキュリティグループ:セキュリティグループルールを設定し、インスタンスにアクセスできるIPアドレスとポート範囲を正確に制御できます。
パスワード認証:インスタンスパスワードの設定またはパスワードなしアクセスをサポートし、クラスタアーキテクチャはマルチアカウント権限制御をサポートします。
危険コマンドの無効化:コンソールでFLUSHALL、KEYSなどの危険コマンドを無効化し、誤操作によるデータ損失を防ぐことができます。
転送暗号化
SSL/TLS暗号化接続を有効にし、クライアントとインスタンス間のデータ転送を暗号化することで、転送中のデータの盗聴や改ざんを防ぎます。金融、政府機関など、データ転送のセキュリティに厳格な要件があるシーンに適しています。
クライアントがインスタンスに接続できない場合の体系的なトラブルシューティング方法は?
クライアントがインスタンスに接続できない場合は、以下の順序で体系的に切り分けを行うことを推奨します:
ステップ1:インスタンスの状態を確認します
コンソールにログインし、インスタンスが実行中状態であるかどうかを確認します。インスタンスの状態が隔離中、回収済み、または作成中の場合、接続を確立できません。
ステップ2:接続アドレスとポートを確認します
接続コマンドで使用するIPアドレスとポートが、インスタンス詳細ページに表示されているものと一致していることを確認してください:
内部ネットワークアクセスには内部アドレスを使用し、外部ネットワークアクセスには外部アドレスを使用します。
デフォルトポートは6379です。ポートを変更した場合は、実際のポートを使用してください。
クラスタアーキテクチャでは、ノード直結アドレスではなくProxyアドレスを使用してください。
ステップ3:ネットワーク接続性を確認します
クライアントからtelnet <インスタンスアドレス> <ポート>を実行して、ポートが到達可能かどうかをテストします。
telnetが通じない場合は、セキュリティグループのインバウンドルールでクライアントIPとインスタンスポートが許可されているかどうかを確認してください。
クライアントとインスタンスが同じVPC内にあることを確認してください(またはCCN経由で接続済みであることを確認してください)。
ステップ4:認証情報を確認します
パスワード形式が正しいかどうかを確認します。クラスタアーキテクチャのマルチアカウントモードでの形式は<アカウント名>:<パスワード>です。
インスタンスでパスワードなしアクセスが有効になっている場合、接続コマンドに-aパラメータは不要です。
アカウントが無効化または削除されていないことを確認してください。
ステップ5:接続数上限を確認します
コンソールからインスタンスの現在の接続数を確認し、上限に達しているかどうかを確認します。
接続数が上限に達している場合は、接続リークが存在するかどうかを確認するか、接続数上限を拡張してください。
ステップ6:クライアント設定を確認します
クライアントSDKのバージョンがRedisエンジンのバージョンと互換性があることを確認してください。
クライアントに接続タイムアウトと再試行メカニズムが設定されているかどうかを確認してください。
DNS解決が正常であることを確認してください(ドメイン名で接続する場合)。
詳細については、接続異常をご参照ください。一般的なエラーコードと対処方法: |
Connection refused
| ポートが開放されていないか、インスタンスに異常があります。 | インスタンスの状態とセキュリティグループルールを確認してください。 |
Connection timed out
| ネットワークが不通です。 | VPC/セキュリティグループ/CCNの設定を確認してください。 |
NOAUTH Authentication required
| パスワードが提供されていません。 | -aパラメータが正しいかどうかを確認してください。
|
ERR invalid password
| パスワードが間違っています。 | パスワードをリセットするか、アカウント形式を確認してください。 |
ERR max number of clients reached
| 接続数が上限を超えています。 | アイドル接続を解放するか、拡張してください。 |
クライアント接続プールはどのように設定しますか?
接続プールを適切に構成することは、接続の安定性とパフォーマンスを確保するための鍵です。以下は、一般的なクライアント接続プールの推奨パラメータです:
Jedis接続プール設定例:
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(200);
config.setMaxIdle(200);
config.setMinIdle(10);
config.setBlockWhenExhausted(true);
config.setMaxWaitMillis(3000);
config.setTestOnBorrow(true);
config.setTestWhileIdle(true);
config.setTimeBetweenEvictionRunsMillis(30000);
Lettuce接続プール設定の推奨事項:
GenericObjectPoolConfig<StatefulRedisConnection<String, String>> poolConfig =
new GenericObjectPoolConfig<>();
poolConfig.setMaxTotal(50);
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(5);
設定上の注意事項:
インスタンス接続数の上限を超えないでください:クラスタアーキテクチャのデフォルト接続数上限 = 10000 × シャード数(単一シャードは最大40000まで引き上げ可能です)。標準アーキテクチャは仕様に応じて接続数上限が10000 - 40000の間です。クライアントの総接続数がこの上限を超えないようにしてください。
接続リークを避ける:必ずfinallyブロックまたはtry-with-resourcesで接続を返却してください。
接続タイムアウト設定:接続タイムアウトは2 - 3秒に設定することを推奨します。読み取りタイムアウトはビジネスの最悪応答時間に基づいて設定します(例:5秒)。
本番環境でSSLを有効化する:インスタンスでSSL暗号化が有効になっている場合、接続プール設定でSSLパラメータを有効にする必要があります。
SSL/TLS暗号化接続を有効にする方法は?
SSL/TLS暗号化は、クライアントとインスタンス間のデータ転送を暗号化し、中間者攻撃やデータ盗聴を防ぐことができます。有効化方法および接続例については、SSL暗号化を参照してください。