EC2でマルチキャスト

11,067 views

Published on

Published in: Technology
0 Comments
23 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
11,067
On SlideShare
0
From Embeds
0
Number of Embeds
3,312
Actions
Shares
0
Downloads
0
Comments
0
Likes
23
Embeds 0
No embeds

No notes for slide

EC2でマルチキャスト

  1. 1. EC2でマルチキャスト ~VRRPが使えないなんて誰が言った?~ 安川 健太 Solutions Architect Amazon Data Services Japan
  2. 2. 自己紹介 名前 • 安川 健太 • アマゾンデータサービスジャパン ソリューションアーキテクト 好きなAWSのサービス • CloudFormation ソーシャル • @thekentiest • www.facebook.com/kenta.yasukawa 趣味 • 車いじり • パケットキャプチャ
  3. 3. 本日の発表 EC2の上でレイヤーの低いところでいろいろ試してみた 体験談を皆さんと共有 • せいぜいL3とかL2とかくらいです • L1までは行きません (行けません)
  4. 4. VPC使ってますか? AWSパブリック クラウド環境 Amazon Virtual Private Cloud (VPC)環境 ユーザごとの プライベート領域で インスタンスを利用
  5. 5. Privateネットワークの為だけじゃないVPC VPCでは出来て、EC2-Classicでは出来ないこと • 静的IPアドレス設定 • 複数IPアドレス • 複数ネットワークインターフェース • セキュリティグループのメンバーシップの動的変更 • セキュリティグループによるOutboundフィルタリング • NACL • Subnetを区切って利用 • …
  6. 6. EC2インスタンスから見たL2の違い EC2-Classicの場合 • どんなARPリクエストを送ってもいつも同じ答え EC2-VPCの場合 • 見慣れた出力結果!
  7. 7. VPCならいろいろL2を使ったトリックが使 えそう L2 NAT (ebtablesとか) L2のアドレッシングに頼るソフトウェア (LVSとか) なんちゃってIPブロードキャスト/マルチキャスト これデモしてみます
  8. 8. 擬似L2ブロードキャストの原理 VPC Subnet IPマルチキャス ト Dst: Ethernetブロードキャストアドレ ス Src: 送信者のMACアドレス コピー ユニキャスト化! 注:ENIのSrc/Destチェックは無効化すること
  9. 9. まずはProof of Concept パケットキャプチャによる実装なら簡単 • 通過パケットの少ないENIで動かせば実用的にもそんなに問題ない • supervisordなどでデーモンとして動かせばそこそこ使える https://gist.github.com/kntyskw/5231182
  10. 10. 動作確認したのでカーネルで動かす方法を模 索 tc mirred + pedit + csumでできます Tcをその目的で使うためにコンフィグするシェルスクリプト https://gist.github.com/kntyskw/5633755 パケットキャプチャベースに比べて高い性能、プロセス監視不要 若干わかりにくい構成に Tc mirredがパケットループが起こる可能性のある構成を許さないので2つの ENIを用意して、パケットのコピー元とコピー先が異なるような設定が必要 # ec2_multicast.sh <interface to grab multicast packets from> <interface to send modified packets to> [target MAC address 1] [target MAC address 2] ... # ec2_multicast.sh eth0 eth1 00:11:22:33:44:55 66:77:88:99:aa:bb Example: Usage:
  11. 11. 同一サブネット内のENIのMACアドレス取 得 AWS APIを使えば取得可能 • 例: https://gist.github.com/kntyskw/5413698
  12. 12. 実際役に立つのか? 受信者分コピーするオーバー ヘッドは無視できないよね けど低頻度のメッセージング 用途ならいけるのでは? その通り。 IPTVみたい のは厳しい 確かに ってことはみんな使いたがっ てたけどマルチキャスト出来 ないから諦めてたアレがいけ る? 確かに、ア レいけるか も ある日の自問自答の様子
  13. 13. みんな大好きVRRPを動かそう! Virtual Router Redundancy Protocol (VRRP)とは? • 仮想IPアドレスを使ったL3ノードの冗長化のためのプロトコル • グループ内のノードはIPマルチキャストでハートビート
  14. 14. LVS + Keepalivedで検証してみた VPC Subnet LVS + keepalived LVS + keepalived WebWebWeb 172.31.0.0/20 Elastic IP Secondary: 172.31.24.1 Primary: 172.31.24.100 Primary: 172.31.24.101 VRRP 平常時 リクエストの流 れ
  15. 15. LVS + Keepalivedで検証してみた VPC Subnet LVS + keepalived LVS + keepalived WebWebWeb 172.31.0.0/20 Elastic IP Secondary: 172.31.24.1 Primary: 172.31.24.100 Primary: 172.31.24.101 VRRP フェイルオーバー時 リクエストの流 れ
  16. 16. EC2でIPアドレスを引き継ぐには VPCはARPベースで動いているわけではない • 明示的なIPアドレスとENIの対応関係を要プロビジョニング フェイルオーバ時にAWS APIを叩いてVIPをMasterに要再割当て https://gist.github.com/kntyskw/5417140
  17. 17. Keepalivedの設定例 Master昇格時に実行するスクリプトを指定 vrrp_instance VI_1 { state BACKUP interface eth1 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.31.24.1 dev eth0 } notify_master /etc/keepalived/assign_vip.sh }
  18. 18. LVSの利点 UDPのロードバランシングが出来る TCPをTerminateする必要がない • コネクション数の影響が小さい L7を見ない&カーネルで処理が完結 • 低遅延 • 高スループット
  19. 19. 簡単な性能比較 LVS v.s. HAProxy • 両者ともにm1.small • BeesWithMachineGunsで4 KB程度のHTMLファイルの取得テス ト • Each of 8 bees will fire 2000 rounds, 10 at a time. 0 500 1000 1500 2000 2500 3000 3500 4000 4500 LVS HAProxy Requestperseconds Throughput 0 10 20 30 40 50 60 Average tp50 tp90 ResponseTimein[ms] Response Time LVS HAProxy
  20. 20. L2に依存する場合の注意点 VPC SubnetはAZを超えられない 違うAZのSubnetに接続されたENIはAttach出来ない Availability Zone Availability Zone VPC Subnet Availability Zone Availability Zone
  21. 21. Multi AZの場合の構成案 VPC Subnet LVS + keepalived LVS + keepalived WebWebWeb 172.31.0.0/20 Elatic IP Secondary: 172.31.24.1 Primary: 172.31.24.100 Primary: 172.31.24.1 01 VRRP 複数IPアドレスでサービス出来る場合 • DNS RRでリクエストを振り分け • Route53のHealth Checkを組み合わせて健全性を維持 リクエストの流 れ VPC Subnet LVS + keepalived LVS + keepalived WebWebWeb 172.31.64.0/20 Secondary: 172.31.78.1 Primary: 172.31.78. 100 Primary: 172.31.78.101 VRRP Availability Zone Availability Zone Amazon Route 53
  22. 22. Multi AZの場合の構成案 VPC Subnet LVS + keepalived LVS + keepalived WebWebWeb 172.31.0.0/20 Elatic IP Secondary: 172.31.24.1 Primary: 172.31.24.100 Primary: 172.31.24.1 01 VRRP 単一のIPアドレスに限る必要がある場合 • VRRPのマスターノード間で別途VIPを使ったハートビートを行なっ てEIPをフェイルオーバ • 普段はスタンバイ側はVRRPマスタのみで、フェイルオーバ時にバッ クエンドやVRRPバックアップを起動 リクエストの流 れ Availability Zone Availability Zone VPC Subnet LVS + keepalived WebWebWeb 172.31.64.0/20 Primary: 172.31.78.101 VRRP LVS + keepalived Secondary: 172.31.78.1 Primary: 172.31.78. 100
  23. 23. まとめ VPCならL2まで自由が利く • L2 NAT • 擬似ブロードキャスト、などなど 擬似ブロードキャストを使えばVRRPも動く • LVS + Keepalivedで検証 • 設定例や注意点など LVSは用途が合えばよい選択肢 • Multi-AZ化も忘れずに VPCを使ってより柔軟なシステム構築を!

×