本ドキュメントでは、クラシックネットワークエンドポイントを保持したまま、ApsaraDB for RedisインスタンスのネットワークタイプをコンソールとAPIを通してVPCネットワークに切り替える方法について説明します。 クラシックネットワークエンドポイントには有効期限があります。 必要に応じて有効期限を指定することができます。 指定した期限に達すと、クラシックネットワークエンドポイントはシステムにより自動的に削除されます。 エンドポイントが削除される前に、通知メッセージが届きます。
前提
-
インスタンスのネットワークタイプがクラシックネットワークであることが必要です。
-
Redisインスタンスが配置されているゾーンには、使用可能なVPCとVSスイッチがあります。 詳細は次を参照してくださいVPCとVSwitchの作成。
コンソールでネットワークタイプを変更します。
- Redisコンソールにログインします。
- インスタンスが配置されたリージョンを選択します。
- 対象インスタンスのIDをクリックします。
- インスタンス情報ページで、VPCへ切り替えをクリックします。
- 表示されるダイアログボックスで、次の手順に従って操作してください:
- 対象VPCとVSwitchを選択します。
- クラシックネットワークエンドポイントを保持するように選択し、期限を指定します。
注 クラシックネットワークエンドポイントを保持すると、クラシックネットワークのECSインスタンスが引き続きデータベースにアクセスでき、サービスに影響はありません。 クラシックネットワークエンドポイントが期限切れになると、システムにより自動的削除され、クラシックネットワークエンドポイント経由でのデータベースアクセスはできなくなります。
- OKをクリックします。
- インスタンス情報ページで、更新をクリックしてVPCエンドポイントとクラシックネットワークエンドポイントを確認できます。
有効期限の変更
クラシックネットワークエンドポイントの保持期間を設定後、有効期限が切れる前にコンソールを使用して保持期間を延長することができます。
ハイブリッドアクセス期間中は、必要に応じてクラシックネットワークエンドポイントの保持期間をいつでも変更できます。 たとえば、クラシックネットワークエンドポイントが2017年8月18日までに期限切れになるように設定されています、2017年8月15日にその有効期限を14日後に変更した場合、エンドポイントのリリース日は2017年8月29日になります。
- Redisコンソールにログインします。
- 対象インスタンスが配置されたリージョンを選択します。
- 対象インスタンスのIDをクリックします。
- 保持中のクラシックネットワーク接続アドレスセクションで、有効期限を変更をクリックします。
- 表示されるダイアログボックスで、新しい有効期限を選択してOKをクリックします。
APIを通してのネットワークタイプの変更
- SDKをダウンロードします。 ( ApsaraDB for MemcacheのSDKは、ApsaraDB for RedisのSDKと同じです)。
- SwitchNetworkAPIを呼び出してネットワークタイプを変更します。
リクエストパラメータ
名前 データ型 必須 説明 Action String はい 実行する操作。 有効値: SwitchNetwork
InstanceId String はい インスタンスのID。 TargetNetworkType String はい インスタンスのネットワークタイプ。 - VPC: VPC
- Classic:クラシックネットワーク
VPCId String いいえ VPCのID。 VSwitchId String いいえ VSwitchのID。
VPCのIDが指定されている場合、このパラメータも指定する必要があります。
RetainClassic String いいえ クラシックネットワークエンドポイントを保持するかどうか。 デフォルト値は Falseです:- True:保持する
- False:保持しない
ClassicExpiredDays String いいえ クラシックネットワークエンドポイントの保持期間。 最短1日、最長120日。デフォルト値は7日。
RetainClassicがTrueに設定されている場合、このパラメータを指定する必要があります。
リターンパラメータ名前 データ型 説明 RequestId String リクエストのID。 TaskId String タスクのID。 コード例
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.r_kvstore.model.v20150101. SwitchNetworkRequest; import com.aliyuncs.r_kvstore.model.v20150101. SwitchNetworkResponse; Import org. JUnit. test; /** * Created by wb259286 on 2017/6/9. */ public class SwitchNetworkTest { @Test public void switchNetwork_success() { SwitchNetworkRequest request=new SwitchNetworkRequest(); request.setInstanceId("<インスタンスID>"); request.setTargetNetworkType("VPC"); request.setVpcId("<VpcId:TargetNetworkTypeはVPCである場合、このパラメータは必須>"); request.setVSwitchId("<VSwitchId:TargetNetworkTypeはVPCである場合、このパラメータは必須>"); request.setRetainClassic("<クラシックネットワークエンドポイントを保持するかどうか。>"); request.setClassicExpiredDays("クラシックネットワークエンドポイントの保持期間"); IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<お客様のAK>", "<お客様のSecurity>"); IAcsClient client = new DefaultAcsClient(profile); try { SwitchNetworkResponse response = client.getAcsResponse(request); System.out.println(response.getRequestId()); }catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } }
- DescribeDBInstanceNetInfoAPIを呼び出し、クラシックネットワークエンドポイント及びVPCエンドポイントを確認します。
リクエストパラメータ
名前 データ型 必須 説明 Action String はい 実行する操作。 有効値: DescribeDBInstanceNetInfo
InstanceId String はい インスタンスのID。 リターンパラメータ名前 データ型 説明 NetInfoItems List インスタンスの接続情報。 InstanceNetworkType String インスタンスのネットワークタイプ。 -
VPC:VPCネットワークのインスタンス。
-
Classic:クラシックネットワークのインスタンス。
InstanceNetInfo名前 データ型 説明 ConnectionString String DNSの接続文字列。 IPAddress String IPアドレス。 IPType String クラシックネットワークインスタンスのIPタイプ。Inner | Public。
VPCネットワークインスタンスのIPタイプ。Private | Public。
Port String ポート情報 VPCId String VPCのID。 VSwitchId String VSwitchのID。 ExpiredTime String 期限切れ日時。 コード例import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.r_kvstore.model.v20150101. DescribeDBInstanceNetInfoRequest; import com.aliyuncs.r_kvstore.model.v20150101. DescribeDBInstanceNetInfoResponse; import org.junit.Test; /** * */ public class DescribeDBInstanceNetInfoTest { @Test public void describeDBInstanceNetInfo_success() { DescribeDBInstanceNetInfoRequest request=new DescribeDBInstanceNetInfoRequest(); request.setInstanceId("<インスタンスID>"); IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<お客様のAK>", "<お客様のSecurity>"); IAcsClient client = new DefaultAcsClient(profile); try { DescribeDBInstanceNetInfoResponse response = client.getAcsResponse(request); System.out.println(response.getRequestId()); }catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } }
-
APIを通してのクラシックネットワークエンドポイントの有効期限の変更
- SDKのURLをクリックしてSDKをダウンロードします。 (ApsaraDB for MemcacheのSDKはApsaraDB for RedisのSDKと同じです。)
- ModifyInstanceNetExpireTimeAPIを呼び出し、ネットワークタイプを変更します。
リクエストパラメータ
名前 データ型 必須 説明 Action String はい 実行する操作。 有効値: ModifyInstanceNetExpireTime
.InstanceId String はい インスタンスのID。 ConnectionString String はい クラシックネットワークのエンドポイント。 ClassicExpiredDays Interger はい 有効期限を選択します。
有効値:14/30/60/120。
リターンパラメータ名前 データ型 説明 RequestId String リクエストのID。 コード例
public static void main(String[] args) { ModifyInstanceNetExpireTimeRequest request = new ModifyInstanceNetExpireTimeRequest(); request.setClassicExpiredDays(3); request.setConnectionString("<URLの文字列>"); request.setInstanceId("<インスタンスID>"); IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<お客様のak>", "<お客様のsk>"); IAcsClient client = new DefaultAcsClient(profile); try { ModifyInstanceNetExpireTimeResponse response = client.getAcsResponse(request); for (NetInfoItem item:response.getNetInfoItems()) { System.out.println(item.getConnectionString()); System.out.println(item.getPort()); System.out.println(item.getDBInstanceNetType()); System.out.println(item.getIPAddress()); System.out.println(item.getExpiredTime()); } } catch (ServerException e) { e.printStackTrace(); } } catch (ClientException e) { e.printStackTrace(); } }