本ドキュメントは、IPSec VPN トンネルと ExpressConnect を介して AWS S3 バケットのデータを Alibaba Cloud OSS バケットに移行する方法を説明します。

背景

お客様が AWS S3 から Alibaba Cloud OSS、特に国を跨いでデータを移行する場合、通常、2 つのネットワークアーキテクチャを選択できます。

  • インターネットに基づくデータ転送
  • プライベートネットワークに基づいてデータを転送します。
本ドキュメントは、プライベートネットワークのアーキテクチャに焦点を合わせています。 IPSEC VPN トンネルと Alibaba Cloud ExpressConnect 製品ポートフォリオは、内部ネットワークを通じてデータを伝送し、データ伝送のセキュリティを強化するというお客様のニーズを満たすために組み合わされています。

次の図は、全体的なネットワークアーキテクチャを示しています。



このネットワークアーキテクチャの利点は、S3 バケット内のデータが、最初に S3 バケットと同じリージョン内の Alibaba Cloud Network VPC に移動され、次にデータが Alibaba Cloud ExpressConnnect リージョン間 ExpressConnnect により、宛先リージョンの OSS バケットに再送信されることです。 このネットワークアーキテクチャは、国を跨いだデータ移行の転送速度を加速させます。

準備

次の表に、移行プロセスに関与するネットワークエンティティに関する情報を示します。

プロバイダー ネットワークエンティティ
AWS VPC in Tokyo 172.16.0.0/16
S3 bucket Endpoint s3.ap-northeast-1.amazonaws.com
S3 bucket name eric-s3-tokyo
OssImport IP address in the EC2 instance Internal IP address: 172.16.1.183 Public IP address: 3.112.29.59
Customer Gateway with Strongswan Public IP address: 3.112.29.59
Alibaba Cloud VPN Gateway Public IP address: 47.74.46.62
VPC in Tokyo Japan 172.24.0.0/16
Subnet in VPC@Tokyo Japan 172.24.0.0/20
VPC in Shanghai China 172.19.0.0/16
Subnet in VPC@Shanghai China 172.19.48.0/20
OSS bucket Endpoint http://oss-cn-shanghai-internal.aliyuncs.com
OSS bucket name eric-oss-datastore-shanghai

ステップ 1:Strongswan をインストールして設定する

Strongswan をインストールするには、AWS で次の操作を実行します。

  1. VPC と関連リソースの準備
    1. 以下の設定で VPC を作成します。

    2. 以下の設定でサブネットを作成します。

    3. 以下の設定でインターネットゲートウェイを作成します。

      SSH クライアントなどのインターネット経由で EC2 にアクセスする場合は、このゲートウェイが必要です。このインターネットゲートウェイを、今作成した VPC に接続します。
    4. セキュリティグループを作成してトラフィックを許可

  2. Strongswan と OssImport の EC2 インスタンスを作成します。
    1. VPC、サブネット、およびセキュリティグループで EC2 インスタンスを起動します。

      SSH クライアントで EC2 インスタンスにアクセスしたい場合は、 *.pem ファイルをローカルコンピュータに保存する必要があります。
    2. SSH クライアントで EC2 にアクセスしてみます。

      SSH経由で EC2 インスタンスにログインするには、次のコマンドを実行します。

      ssh -i 3k3j***M.pem ec2-user@ec2-3-112-29-59.ap-northeast-1.compute.amazonaws.com



      SSH クライアント経由で EC2 インスタンスにアクセスできない場合は、ルートエントリを追加する必要がある可能性があります。

  3. strongSwan をインストールします。

    次のコードを実行して Strongswan をインストールし、Strongswan のバージョンを確認します。

    $ wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/strongswan-5.7.1-1.el7.x86_64.rpm
    $ sudo yum install gcc
    $ sudo yum install trousers
    $ sudo rpm -ivh strongswan-5.7.1-1.el7.x86_64.rpm
    $ strongswan version
    Linux strongSwan U5.7.1/K3.10.0-957.el7.x86_64
    University of Applied Sciences Rapperswil, Switzerland
    See 'strongswan --copyright' for copyright information.
  4. Strongswan を設定します。

    次のコードを実行して Strongswan を設定します。

    $ sudo vi /etc/strongswan/ipsec.conf
    Paste following setting into file:
    conn %default
    authby=psk
    type=tunnel
    keyexchange=ikev2
    auto=start
    ike=aes-sha1-modp1024
    ikelifetime=86400s
    esp=aes-sha1-modp1024
    lifetime=86400s
    conn abc_shanghai_oss
    left=172.16.1.183 //// Local IP address of EC2(Strongswan installed )
    leftsubnet=172.16.1.0/24 //// AWS Tokyo VPC CIDR.
    leftid=3.112.29.59 //// Public IP address as ID.
    right=47.74.46.62 //// Public IP address of Alibaba Cloud VPN Gateway
    rightid=47.74.46.62 //// Public IP address as ID.
    rightsubnet=100.118.102.0/24 //// Note(1)
    						
    Alibaba Cloud Shanghai VPC の一部の ECS インスタンスで OSS バケットのイントラネットエンドポイントを ping すると、この CIDR ブロックに属する IP アドレスを取得できます。 したがって、この CIDR ブロックは正しいサブネットとして使用されます。


  5. Strongswan を起動します。
    1. 次のコマンドを実行します。
      $ sudo su – root
      # echo 1 > /proc/sys/net/ipv4/ip_forward
      							
      注記: それから、 net.ipv4.ip_forward=1/etc/sysctl.confに追加する必要があります。
    2. 次のコマンドを実行して Strongswan を起動します。
      # systemctl enable strongswan
      # systemctl start strongswan
      # systemctl status strongswan
      							

ステップ2:VPN ゲートウェイと IPSec 接続の作成

VPN ゲートウェイと IPSec 接続を作成するには、次の手順に従います。

  1. VPN ゲートウェイとカスタマーゲートウェイを作成します。
    1. VPN ゲートウェイを作成します。

    2. カスタマーゲートウェイを作成します。

      この場合、 Strongswan@AWS EC2 をカスタマーゲートウェイとして使用します。
  2. IPsec 接続を作成します。
    1. 基本設定をします。

    2. 詳細設定をします。


  3. IPSec 接続のステータスを確認します。
    1. Alibaba Cloud コンソールで IPSec 接続ステータスを確認します。

    2. 次のコマンドを実行して、Strongswan の IPSec 接続ステータスを確認します。
      # systemctl status strongswan


ステップ 3: VPC ピアリング接続を作成します。

  1. 同じアカウントによる 2 つの VPC の相互接続の手順に従って、Alibaba Cloud Express Connect コンソールで VPC ピアリング接続を作成します。

  2. AWS VPC と Alibaba Cloud VPC の両方のルート設定に次のルーティングエントリを追加します。
    • 東京の AWS VPC


    • 東京の Alibaba Cloud VPC

      上の図のサブネットに関する説明は、次の通りです:
      • 100.118.102.0/24: VPC endpoint of OSS bucket in the China Shanghai region

      • 119 172.16.1.0/24: AWS VPC in Tokyo Japan

      • 172.19.48.0/20: Alibaba Cloud VPC in Shanghai China

    • 中国上海の Alibaba Cloud VPC

      上の図のサブネットに関する説明は、次の通りです:
      • 172.16.1.0/24: AWS VPC in Tokyo Japan

      • 172.24.0.0/20: Alibaba Cloud VPC in Tokyo Japan

  3. 東京の AWS VPC と上海の Alibaba Cloud OSS バケットの間の接続をテストします。

    前の図のテスト結果は、AWS EC2 インスタンスと Alibaba Cloud OSS バケット間の接続が成功していることを示しています。 OssImport をデプロイし、AWS S3 バケットから Alibaba Cloud OSS バケットにオブジェクトを移行できます。

ステップ4:AWS S3 バケット用の VPC エンドポイントを作成します。

このプラクティスでは、VPCのEC2インスタンスにデプロイされたOssImportを使用して、AWS S3バケットからOSSバケットにデータを移動します。 AWS S3 バケット用の VPC エンドポイントを作成し、ルートテーブルに関連付けることで、OssImport が AWS S3 バケットのインターネット IP アドレスにアクセスする代わりに VPC 内の AWS S3 バケットにアクセスできるようにすることをお勧めします。

  1. AWS S3 バケット用の VPC エンドポイントを作成します。

  2. VPC ルートテーブルを確認します。

  3. AWS S3 VPC エンドポイントと EC2 インスタンス間の接続を確認します。

ステップ5:OssImport を使用して AWS S3 バケットから OSS バケットにデータを移行します。

OssImport を使用したデータの移行の手順に従って、OssImport をデプロイおよび構成します。

  1. 次のように local_job.cfg ファイルを設定します。
    srcType=s3
    srcAccessKey=AK************A
    srcSecretKey=+RW************iM3
    srcDomain=s3.ap-northeast-1.amazonaws.com
    srcBucket=eric-s3-tokyo
    srcPrefix=source_folder/
    destAccessKey=L************ic
    destSecretKey=nEtM************iDx
     destDomain=http://oss-cn-shanghai-internal.aliyuncs.com
    destBucket=eric-oss-datastore-shanghai
    destPrefix=destination_folder/
    					
  2. 次のように、 import.shスクリプトの実行と移行ステータスの確認を行います。
    [root@ip-172-16-1-183 ~]# cd /home/ec2-user/ossimport
    [root@ip-172-16-1-183 ossimport]# ./import.sh
    Clean the previous job, Yes or No: yes
    Stop import service completed.
    delete jobs dir:./master/jobs/local_test/
    Clean job:local_test completed.
    submit job:/home/ec2-user/ossimport/conf/local_job.cfg
    submit job:local_test success!
    Start import service completed.
    ……
    -------------- job stats ---------------
    ---------------- job stat ------------------
    JobName:local_test
    JobState:Running
    PendingTasks:0
    DispatchedTasks:1
    RunningTasks:1
    SucceedTasks:0
    FailedTasks:0
    ScanFinished:true
    RunningTasks Progress:
    8528637A126676A4FD0D2F981ED5E0EF_1544176618182:0/191048 1/42
    ----------------------------------------
    -------------- job stats ---------------
    ---------------- job stat ------------------
    JobName:local_test
    JobState:Running
    PendingTasks:0
    DispatchedTasks:1
    RunningTasks:1
    SucceedTasks:0
    FailedTasks:0
    ScanFinished:true
    RunningTasks Progress:
    8528637A126676A4FD0D2F981ED5E0EF_1544176618182:191048/191048 42/42
    [root@ip-172-16-1-183 ossimport]#
    					
    ログの詳細は、 ossimport/logs フォルダーにあります。
  3. AWS S3 バケット内のファイルと OSS バケット内のファイルを比較します。

上の図に示すように、AWS S3 バケット内のファイルと OSS バケット内のファイルが同じであれば、移行は成功です。

上記のいずれかの手順で移行が失敗した場合は、次の方法でテクニカルサポートまでお問い合わせください。チケットの起票

参照