背景
今、うちの会社(Gengo)では、いくつかのClassic EC2インスタンスをVPCに移行する作業を行う必要があります。どういうように移行するのがいいのかに関しては、いくつかのベストプラクティスのような物が公開されており、昨年のre:Invent 2014でもそのためのセッションがいくつか存在しました。そういった折、AWSの方で「Classic Link」という新機能が発表され、これはシームレスな移行には持って来いだと感じ、さっそく使おうと考えたのですが、その前に、「Classic Link」のネットワークパフォーマンスってどの程度なのか軽く知っておきたいと感じました。
前提
- リージョン
- インスタンス
- m3.midiumで全統一(Classic EC2インスタンスもあるので)
- OS
- 配置
- アクセス元
- アクセス先
- AZ-AとAZ-Eに一台ずつClassic EC2インスタンスを配置
- AZ-AとAZ-Eにサブネットをそれぞれ持つVPCを配置。
- それぞれのサブネットに一台ずつVPC EC2インスタンスを配置。
- 作成したVPCとアクセス元であるAZ-AのClassic EC2インスタンスの間にClassic Linkを作成する。
テスト方法
- テスト#1
- Classic EC2 => Classic EC2
- Classic EC2どおしのグローバルIPを使った通信テスト
- テスト#2
- Classic EC2 => VPC EC2
- グローバルIPを持ったClassic EC2からClassic Linkを通してVPC内のプライベートIPしか持たないEC2インスタンスへの通信テスト
- テスト#3
- VPC EC2 => VPC EC2
- VPC内のインスタンス通しの通信テスト
- netperfを使い簡単にThroughputとLatencyをテスト。上記テストを各10回ずつやり、その平均を比較。
Throughput(例)
netperf -f M -H cl-test-classic-app-02
Latency (例)
netperf -t omni -H cl-test-classic-app-02 -- -d rr -T TCP -k MIN_LATENCY,MEAN_LATENCY,MAX_LATENCY
テスト結果
Throughput
Test |
Result Average (MB/Sec) |
Classic EC2 => Classic EC2 |
44.272 |
Classic EC2 => VPC EC2 (Classic Link) |
43.41 |
VPC EC2 => VPC EC2 (VPC Inside) |
45.864 |
Latency
Test |
Result Average (Microsec) |
Classic EC2 => Classic EC2 |
1246.827 |
Classic EC2 => VPC EC2 (Classic Link) |
884.26 |
VPC EC2 => VPC EC2 (VPC Inside) |
877.985 |
感想
- それぞれのテスト10回の平均ではあるが、10回それぞれの中でもばらつきはほとんどなかった。
- もちろんもっと正確かつ詳細に調べることはできると思うが、この簡単なテストから見ても、Classic Linkは特に大きくネットワークパフォーマンスが劣るようなところは見られなかった。