現象記述
現象1:CVMを使用して、クラウドデータベースに自動的に割り当てられたプライベートネットワークアドレスを通じてTencent Cloud 分散型キャッシュデータベースに接続すると、接続に失敗します。具体的な接続方法については、接続インスタンスを参照してください。 現象2:Distributed Cacheコンソールにログインし、インスタンスリストで、ターゲットインスタンスの操作列にあるログインをクリックすると、DMCプラットフォームにジャンプし、Tencent Cloud 分散型キャッシュデータベースに接続しますが、接続に失敗します。下図に示す通りです。 考えられる原因
初めてデータベースに接続した際に失敗する場合、考えられる原因は以下の通りです:
ポートの問題です。
ネットワーク設定の問題またはセキュリティグループの設定ミスです。
パスワードの問題です。
インスタンスの実行中に突然接続に失敗した場合、考えられる原因は以下の通りです:
接続数が上限に達しました。
メモリが満杯になるか、またはシャードが満杯になります。
HA切り替え、サービス利用不可、読み取り専用レプリカの切り替え、読み取り専用レプリカのサービス利用不可などが発生します。
クライアント側の問題で、考えられる原因は以下の通りです:
接続プールのパラメータ設定が不合理です。
接続リークが発生しています。
処理手順
ステップ1:telnetを使用してTencent Cloud 分散型キャッシュデータベースポートへ正常にアクセスできるか確認する
多くのお客様が遭遇する接続失敗や接続不可などの問題は、コマンドラインツールおよびtelnetを使用して問題の範囲を絞り込むことができます。
[root@VM-4-10-centos ~]# telnet 10.x.x.34 6379
Trying 10.x.x.34...
Connected to 10.x.x.34.
Escape character is '^]'.
上記のとおり、接続成功のプロンプトは、Tencent Cloud 分散型キャッシュデータベースインスタンスのポートが正常にアクセス可能であることを示します。ポートが正常な場合は、ステップ2に進み、ネットワークの問題を調査してください。 ステップ2:ネットワーク設定の問題かどうかを切り分ける
CVMとデータベースは、必ず同じアカウントの同じVPC内、または同じクラシックネットワーク内に存在する必要があります。これにより、プライベートネットワークで直接相互接続できます。以下の状況では、接続に失敗する可能性があります。
CVMはVPCを使用し、Tencent Cloud 分散型キャッシュデータベースはクラシックネットワークを使用しています。Tencent Cloud 分散型キャッシュデータベースをクラシックネットワークからVPCネットワークに切り替えることをお勧めします。詳細については、ネットワークの設定を参照してください。 CVMはクラシックネットワークを使用し、Tencent Cloud 分散型キャッシュデータベースはVPCを使用しています。CVMをクラシックネットワークからVPCネットワークに切り替えることをお勧めします。詳細については、プライベートネットワークサービスの切り替えを参照してください。 CVMとTencent Cloud 分散型キャッシュデータベースは同一リージョン内にありますが、異なるVPCネットワークに属しています。Tencent Cloud 分散型キャッシュデータベースをCVMが存在するVPCネットワークに移行することをお勧めします。詳細については、ネットワークの設定を参照してください。 CVMとTencent Cloud 分散型キャッシュデータベースは同一リージョン内になく、異なるVPCネットワークに属しています。2つのVPCネットワーク間にCCNを確立することをお勧めします。 CVMとTencent Cloud 分散型キャッシュデータベースのアカウントが異なり、異なるVPCネットワークに属しています。2つのVPCネットワーク間にCCNを確立することをお勧めします。 ステップ3:セキュリティグループの問題かどうかを確認する
CVMとTencent Cloud 分散型キャッシュデータベースのセキュリティグループ設定に誤りがある場合、CVMがTencent Cloud 分散型キャッシュデータベースに接続できなくなります。
CVMセキュリティグループの設定ミス
CVMを使用してTencent Cloud 分散型キャッシュデータベースに接続する場合は、CVMセキュリティグループでアウトバウンドルールを設定する必要があります。アウトバウンドルールのターゲット設定が0.0.0.0/0ではなく、かつプロトコルポートがALLではない場合、Tencent Cloud 分散型キャッシュデータベースのIPアドレスとポートをアウトバウンドルールに追加する必要があります。
1. セキュリティグループコンソールにログインし、セキュリティグループリストでCVMにバインドされているセキュリティグループを見つけ、セキュリティグループ名をクリックして、CVMにバインドされているセキュリティグループの詳細ページに進みます。 2. アウトバウンドルールタブを選択し、ルールを追加をクリックします。
タイプでカスタムを選択します。
ターゲットにTencent Cloud 分散型キャッシュデータベースのIPアドレス(セグメント)を入力します。
プロトコルポートにTencent Cloud 分散型キャッシュデータベースのプライベートポートを入力します。
ポリシーで許可を選択します。
Tencent Cloud 分散型キャッシュデータベースセキュリティグループの設定ミス
指定したCVMでTencent Cloud 分散型キャッシュデータベースインスタンスに接続する場合は、Tencent Cloud 分散型キャッシュデータベースセキュリティグループでインバウンドルールを設定する必要があります。インバウンドルールのソース設定が0.0.0.0/0ではなく、かつプロトコルポートがALLではない場合、CVMのIPアドレスとポートをインバウンドルールに追加する必要があります。
1. セキュリティグループコンソールにログインし、セキュリティグループリストでTencent Cloud 分散型キャッシュデータベースインスタンスにバインドされているセキュリティグループを見つけ、セキュリティグループ名をクリックして、Tencent Cloud 分散型キャッシュデータベースにバインドされているセキュリティグループの詳細ページに進みます。 2. インバウンドルールタブを選択し、ルールを追加をクリックします。
3. 接続を許可するIPアドレス(セグメント)と開放する必要があるポート情報(Tencent Cloud 分散型キャッシュデータベースプライベートポート)を入力し、許可を選択します。
タイプでカスタムを選択します。
ソースにCVMのIPアドレス(セグメント)を入力します。
プロトコルポートにTencent Cloud 分散型キャッシュデータベースのプライベートポートを入力します。
ポリシーで許可を選択します。
注意:
Tencent Cloud 分散型キャッシュデータベース内网のデフォルトポートは6379です。また、カスタムポートもサポートされています。デフォルトポート番号を変更した場合、セキュリティグループでTencent Cloud 分散型キャッシュデータベース新しいポート情報を開放する必要があります。
セキュリティグループのインバウンドルールでTencent Cloud 分散型キャッシュデータベースインスタンスの6379ポートを開放する必要があります。
ステップ4:パスワードの問題かどうかを確認する
infoコマンドを実行してテストを行います。実行結果が以下のように表示された場合、Tencent Cloud 分散型キャッシュデータベースパスワードに問題はありません。
[root@SNG-Qcloud /data/home/rickyu]# redis-cli -h 10.x.x.34 -p 6379 -a password
10.x.x.2:6379> info cpu
# CPU
used_cpu_sys:1623.176000
used_cpu_user:4649.572000
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000
如果执行提示NOAUTH Authentication required.代表密码错误。
10.x.x.31:6379> info memory
NOAUTH Authentication required.
10.x.x.31:6379>
ステップ5:メモリ使用量またはシャード書き込み量が上限に達したことによる接続失敗かどうかを確認する
ビジネスで以下のエラーメッセージが表示された場合。
"-READONLY You can't write against a read only slave.\\r\\n"
Distributed Cacheコンソールにログインし、インスタンスリストで対象インスタンスを見つけ、インスタンスIDをクリックしてシステム監視ページに入り、指標ドロップダウンリストでメモリ使用率を選択し、インスタンスのメモリ使用率が上限に達しているかどうかを確認します。 メモリが満杯の状態で書き込みに失敗した場合は、以下の操作を行う必要があります。
データベースの淘汰ポリシーを変更します。パラメータ設定でパラメータmaxmemory-policyをallkeys-lruまたはvolatile-lruに調整します。具体的な操作については、インスタンスパラメータの管理を参照してください。 注意:
淘汰ポリシーをallkeys-lruに調整すると、業務データが破損する可能性があります。実際のニーズに応じて評価してください。
ステップ6:接続数クォータ不足かどうかを確認する
監視指標の接続使用率とは、クライアントがインスタンスに接続するTCP接続数とインスタンスの最大接続数の割合を指します。この指標が継続的に高い場合は、現在のデータベース接続数クォータが不足していることを示しており、最大接続数を調整する必要があります。
問題の現象
エラーメッセージは以下の通りです:
ERR max number of clients reached
解決方法
1. Distributed Cacheコンソールにログインし、右側のインスタンスリストページ上部で地域を選択します。インスタンスリストで対象インスタンスを探し、青い文字のインスタンスIDをクリックしてインスタンス詳細ページに入り、システム監視タブをクリックし、監視指標タブを選択して監視データを確認します。ビュードロップダウンリストでインスタンス監視を選択し、指標で接続使用率を選択して、その監視ビューが継続的に高いかどうかを確認します。 2. 接続使用率が継続的に高い場合は、最大接続数を調整し、接続数の設定仕様を変更してください。具体的な操作については、接続数の調整を参照してください。 ステップ7:HA切り替え、サービス停止、読み取り専用レプリカの切り替え、読み取り専用レプリカのサービス停止などが発生したかどうかを確認する
ある特定の時点で接続異常や大量のアクセスエラーおよび低速クエリが発見された場合、または同時にTCOPイベントアラートを受信し、異常イベントが発生した場合は、オンラインカスタマーサービスに連絡してサポートを受けてください。 ステップ8:Jedisコネクションプールを使用している場合、クライアントのコネクションプール設定が適切かどうかを確認する
問題の現象
接続プールの利用可能な接続数が枯渇し、古い接続が適時に解放されない場合、新しく作成される接続は失敗し、クライアントに以下のエラーメッセージが表示されます。
JedisConnectionException: Could not get a resource from the pool
解決方法
1. クライアントで以下のコマンドを使用して、現在インスタンスの6379ポートにアクセスしている接続数を確認します。クライアントの接続数が接続プールに設定されたmaxTotal値に近い場合、接続失敗の問題が発生します。
netstat -an | grep 6379 | grep ESTABLISHED | wc -l
2. Java接続サンプルを参照して、jedis.close()を呼び出して古い接続を解放しているかどうかを確認し、接続リークを回避してください。
3. 古い接続がすべて解放されている場合、ビジネスの同時実行数が多い状況では、maxTotalパラメータ値を増やす必要があります。
説明:
各クライアント接続プールのmaxTotal値 × クライアント数 = Tencent Cloud 分散型キャッシュデータベースの最大接続数。
詳細情報
ネットワークタイプ/VPCの判断方法
プライベートネットワークアドレスを使用してクラウドデータベースに接続する場合、CVMとTencent Cloud 分散型キャッシュデータベースは同一アカウントであり、かつ同一のVPC内、または同一の基礎ネットワーク内に存在する必要があります。
説明:
インスタンスリストのネットワークに、すべて基礎ネットワークと表示されるか、またはすべてVPCと表示される場合、CVMとTencent Cloud 分散型キャッシュデータベースは同じネットワークタイプであることを示します。
インスタンスリストのネットワークに、すべて同じVPCと表示される場合(同一リージョンであることが保証されます)、CVMとTencent Cloud 分散型キャッシュデータベースは同一のVPCであることを示します。
CVMネットワークタイプの確認
確認Tencent Cloud 分散型キャッシュデータベースネットワークタイプ
外部アドレスを有効にして外部ネットワークアクセスを実現する
Tencent Cloud 分散型キャッシュデータベースは現在、コンソールでパブリックネットワークアドレスを手動で有効化し、Redisインスタンスへのパブリックネットワークアクセスを実現することをサポートしています。具体的な操作については、パブリックネットワークアドレスの構成をご参照ください。