本文檔介紹了如何通過控制台和API將ApsaraDB for Redis的網路類型切換至專有網路,同時保留經典網路的訪問地址。經典網路的訪問地址有保留時間限制,您可以根據需要指定保留期限。到期後,經典網路地址會自動被系統刪除。

前提條件

在開始切換前,確認當前執行個體是否具備以下切換條件:
  • 確認當前網路類型是否為經典網路。

  • 確認在當前資料庫執行個體可用性區域下是否有可用的VPC和交換器。詳情參見建立專有網路和交換器

通過控制台切換網路類型

  1. 登入ApsaraDB for Redis管理主控台。
  2. 選擇目標執行個體所在地域。
  3. 單擊目標執行個體的ID。
  4. 執行個體資訊頁面,單擊切換為專有網路
  5. 在彈出的對話方塊中,執行以下操作:
    1. 選擇切換的目標專有網路和交換器。
    2. 選擇保留經典網路地址並選擇保留時長。
      说明
      選擇保留經典網路後,經典網路下的ECS仍可訪問資料,對業務無影響。當經典網路地址到期後,系統會自動刪除經典網路地址,您將無法通過經典網路地址訪問資料庫。
    3. 單擊確定
  6. 執行個體資訊頁面,單擊刷新查看專有網路和經典網的訪問地址。


通過控制台修改經典網路內網地址使用到期日

設定經典網路訪問地址的保留時間後,您可以在過期前通過控制台延長其保留時間。

在混訪期間,您可以根據需求隨時調整保留原經典網路的時間,過期時間會從變更日期重新開始計時。例如,原經典網路的內網地址會在2017年8月18日過期,但您在2017年8月15日將過期時間變更為14天后,則原經典網路的內網地址將會在2017年8月29日被釋放。

  1. 登入ApsaraDB for Redis管理主控台。
  2. 選擇目標執行個體所在地域。
  3. 單擊目標執行個體的ID。
  4. 預留的經典IP地址區域,單擊修改過期時間
  5. 在彈出的對話方塊中,選擇新的過期時間,然後單擊確定

通過API切換網路類型

  1. 單擊SDK連結下載相關SDK。(ApsaraDB for Memcache和Redis版的SDK相同。)
  2. 調用SwitchNetwork介面進行網路切換。
    請求參數說明
    名稱 類型 是否必須 說明
    Action String 系統規定參數,取值:

    SwitchNetwork

    InstanceId String 執行個體 ID。
    TargetNetworkType String 執行個體的網路類型:
    • VPC:專有網路
    • Classic:經典網路
    VPCId String 專有網路的ID。
    VSwitchId String

    交換器的ID。

    如果指定了VPC ID,則該參數也必須指定。

    RetainClassic String
    是否保留經典網路地址,預設 False
    • True:保留
    • False:不保留
    ClassicExpiredDays String

    經典網路位址保留區的天數,最短1天,最長120天,預設7天。

    若選擇保留經典網路地址,則該參數必傳。

    返回參數說明
    參數 類型 說明
    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("<是否保留CLASSIC的網路連結,True保留,False不保留>");
             request.setClassicExpiredDays("保留CLASSIC的網路連結的天數");
             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();
             }
         }
     }
  3. 調用DescribeDBInstanceNetInfo介面查看經典網路和專有網路的訪問地址。

    請求參數

    名稱 類型 是否必須 說明
    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 交換器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修改經典網路內網地址使用到期日

  1. 單擊SDK連結下載相關SDK。(ApsaraDB for Memcache和Redis版的SDK相同。)
  2. 調用ModifyInstanceNetExpireTime介面進行網路切換。
    請求參數說明
    名稱 類型 是否必須 說明
    Action String 系統規定參數,取值:

    ModifyInstanceNetExpireTime

    InstanceId String 執行個體ID。
    ConnectionString String 經典網路的訪問網域名稱。
    ClassicExpiredDays Integer

    選擇保留時長。

    取值:14、30、60或120

    返回參數
    參數 類型 說明
    RequestId String 請求ID。

    參考代碼

    public static void main(String[] args) {
         ModifyInstanceNetExpireTimeRequest request = new ModifyInstanceNetExpireTimeRequest();
         request.setClassicExpiredDays(3);
         request.setConnectionString("<連結字元串>");
         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();
         }
     }