SlideShare uma empresa Scribd logo
1 de 24
EC2でマルチキャスト
~VRRPが使えないなんて誰が言った?~
安川 健太
Solutions Architect
Amazon Data Services Japan
自己紹介
名前
• 安川 健太
• アマゾンデータサービスジャパン
ソリューションアーキテクト
好きなAWSのサービス
• CloudFormation
ソーシャル
• @thekentiest
• www.facebook.com/kenta.yasukawa
趣味
• 車いじり
• パケットキャプチャ
本日の発表
EC2の上でレイヤーの低いところでいろいろ試してみた
体験談を皆さんと共有
• せいぜいL3とかL2とかくらいです
• L1までは行きません
(行けません)
VPC使ってますか?
AWSパブリック
クラウド環境
Amazon Virtual Private
Cloud (VPC)環境
ユーザごとの
プライベート領域で
インスタンスを利用
Privateネットワークの為だけじゃないVPC
VPCでは出来て、EC2-Classicでは出来ないこと
• 静的IPアドレス設定
• 複数IPアドレス
• 複数ネットワークインターフェース
• セキュリティグループのメンバーシップの動的変更
• セキュリティグループによるOutboundフィルタリング
• NACL
• Subnetを区切って利用
• …
EC2インスタンスから見たL2の違い
EC2-Classicの場合
• どんなARPリクエストを送ってもいつも同じ答え
EC2-VPCの場合
• 見慣れた出力結果!
VPCならいろいろL2を使ったトリックが使
えそう
L2 NAT (ebtablesとか)
L2のアドレッシングに頼るソフトウェア (LVSとか)
なんちゃってIPブロードキャスト/マルチキャスト
これデモしてみます
擬似L2ブロードキャストの原理
VPC Subnet
IPマルチキャス
ト
Dst: Ethernetブロードキャストアドレ
ス
Src: 送信者のMACアドレス
コピー
ユニキャスト化!
注:ENIのSrc/Destチェックは無効化すること
まずはProof of Concept
パケットキャプチャによる実装なら簡単
• 通過パケットの少ないENIで動かせば実用的にもそんなに問題ない
• supervisordなどでデーモンとして動かせばそこそこ使える
https://gist.github.com/kntyskw/5231182
動作確認したのでカーネルで動かす方法を模
索
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:
同一サブネット内のENIのMACアドレス取
得
AWS APIを使えば取得可能
• 例:
https://gist.github.com/kntyskw/5413698
実際役に立つのか?
受信者分コピーするオーバー
ヘッドは無視できないよね
けど低頻度のメッセージング
用途ならいけるのでは?
その通り。
IPTVみたい
のは厳しい
確かに
ってことはみんな使いたがっ
てたけどマルチキャスト出来
ないから諦めてたアレがいけ
る?
確かに、ア
レいけるか
も
ある日の自問自答の様子
みんな大好きVRRPを動かそう!
Virtual Router Redundancy Protocol (VRRP)とは?
• 仮想IPアドレスを使ったL3ノードの冗長化のためのプロトコル
• グループ内のノードはIPマルチキャストでハートビート
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
平常時 リクエストの流
れ
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
フェイルオーバー時 リクエストの流
れ
EC2でIPアドレスを引き継ぐには
VPCはARPベースで動いているわけではない
• 明示的なIPアドレスとENIの対応関係を要プロビジョニング
フェイルオーバ時にAWS APIを叩いてVIPをMasterに要再割当て
https://gist.github.com/kntyskw/5417140
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
}
LVSの利点
UDPのロードバランシングが出来る
TCPをTerminateする必要がない
• コネクション数の影響が小さい
L7を見ない&カーネルで処理が完結
• 低遅延
• 高スループット
簡単な性能比較
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
L2に依存する場合の注意点
VPC SubnetはAZを超えられない
違うAZのSubnetに接続されたENIはAttach出来ない
Availability Zone Availability Zone
VPC Subnet
Availability Zone Availability Zone
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
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
まとめ
VPCならL2まで自由が利く
• L2 NAT
• 擬似ブロードキャスト、などなど
擬似ブロードキャストを使えばVRRPも動く
• LVS + Keepalivedで検証
• 設定例や注意点など
LVSは用途が合えばよい選択肢
• Multi-AZ化も忘れずに
VPCを使ってより柔軟なシステム構築を!
EC2でマルチキャスト

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャーKubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
Fluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターンFluentdのお勧めシステム構成パターン
Fluentdのお勧めシステム構成パターン
 
IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?IaC事始め Infrastructure as Code やってみる?
IaC事始め Infrastructure as Code やってみる?
 
AWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティスAWSでDockerを扱うためのベストプラクティス
AWSでDockerを扱うためのベストプラクティス
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話NGINXをBFF (Backend for Frontend)として利用した話
NGINXをBFF (Backend for Frontend)として利用した話
 
Multicastが出来ないならUnicastすればいいじゃない
Multicastが出来ないならUnicastすればいいじゃないMulticastが出来ないならUnicastすればいいじゃない
Multicastが出来ないならUnicastすればいいじゃない
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
 

Semelhante a EC2でマルチキャスト

20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
Yasuhiro Araki, Ph.D
 
JAWSUG札幌 AWS Storage Gateway事始め
JAWSUG札幌 AWS Storage Gateway事始めJAWSUG札幌 AWS Storage Gateway事始め
JAWSUG札幌 AWS Storage Gateway事始め
Serverworks Co.,Ltd.
 
プログラマブルクラウドの薦め
プログラマブルクラウドの薦めプログラマブルクラウドの薦め
プログラマブルクラウドの薦め
Shinpei Ohtani
 

Semelhante a EC2でマルチキャスト (20)

これからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしようこれからのクラウドネイティブアプリケーションの話をしよう
これからのクラウドネイティブアプリケーションの話をしよう
 
インフラ系自主トレするならAWS
インフラ系自主トレするならAWSインフラ系自主トレするならAWS
インフラ系自主トレするならAWS
 
これからAzureを始める人へ(LT)
これからAzureを始める人へ(LT)これからAzureを始める人へ(LT)
これからAzureを始める人へ(LT)
 
20141122 デジコミュ秋田 WordPressサイト永代供養の儀
20141122 デジコミュ秋田 WordPressサイト永代供養の儀20141122 デジコミュ秋田 WordPressサイト永代供養の儀
20141122 デジコミュ秋田 WordPressサイト永代供養の儀
 
Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -Architecting on Alibaba Cloud - 超基礎編 -
Architecting on Alibaba Cloud - 超基礎編 -
 
AWS 専用線アクセス体験ラボ紹介と 開催地立候補のお願い
AWS 専用線アクセス体験ラボ紹介と開催地立候補のお願いAWS 専用線アクセス体験ラボ紹介と開催地立候補のお願い
AWS 専用線アクセス体験ラボ紹介と 開催地立候補のお願い
 
AWS Casual2 LT
AWS Casual2 LTAWS Casual2 LT
AWS Casual2 LT
 
AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 - AWSクラウドデザインパターン - JEITA講演 -
AWSクラウドデザインパターン - JEITA講演 -
 
第2回はじめてのAws jaws ug-iwata
第2回はじめてのAws jaws ug-iwata第2回はじめてのAws jaws ug-iwata
第2回はじめてのAws jaws ug-iwata
 
20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS20140621 july techfesta (JTF2014) 突発**むけAWS
20140621 july techfesta (JTF2014) 突発**むけAWS
 
20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ20140628 AWSの2014前半のアップデートまとめ
20140628 AWSの2014前半のアップデートまとめ
 
JAWSUG札幌 AWS Storage Gateway事始め
JAWSUG札幌 AWS Storage Gateway事始めJAWSUG札幌 AWS Storage Gateway事始め
JAWSUG札幌 AWS Storage Gateway事始め
 
プログラマブルクラウドの薦め
プログラマブルクラウドの薦めプログラマブルクラウドの薦め
プログラマブルクラウドの薦め
 
同じサービスを ECSとOpsWorksで 運用してみた
同じサービスをECSとOpsWorksで運用してみた同じサービスをECSとOpsWorksで運用してみた
同じサービスを ECSとOpsWorksで 運用してみた
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
JAWS DAYS 2015
JAWS DAYS 2015JAWS DAYS 2015
JAWS DAYS 2015
 
Vpcを使う3つの理由
Vpcを使う3つの理由Vpcを使う3つの理由
Vpcを使う3つの理由
 
AWS Black Belt Online Seminar Amazon EC2
AWS Black Belt Online Seminar Amazon EC2AWS Black Belt Online Seminar Amazon EC2
AWS Black Belt Online Seminar Amazon EC2
 
20130326 aws meister-reloaded-windows
20130326 aws meister-reloaded-windows20130326 aws meister-reloaded-windows
20130326 aws meister-reloaded-windows
 
Amazon Web Services 最新事例集
Amazon Web Services 最新事例集Amazon Web Services 最新事例集
Amazon Web Services 最新事例集
 

Último

Último (12)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 

EC2でマルチキャスト