SlideShare a Scribd company logo
1 of 20
Download to read offline
VPCでkeepalived+LVS
(DSR)
VRRPが使える?
安川さんのスライドを読みました。
http://www.slideshare.net/kentayasukawa/ec2-20334037
VRRPが使える?
あ、VRRP通るのか…
ユニキャストなら
keepalived+LVSが普通に使えるんじゃね?
keepalived+unicast
なんか海外のサイトを見つける…
http://harish11g.blogspot.jp/2012/10/high-availability-
haproxy-amazon-ec2.html
keepalived+unicast
● vrrp_unicast_bind
● vrrp_unicast_peer
みたことない設定。
本家のドキュメントにはない。
本家のソースコードにもない。
http://www.keepalived.org/
keepalived+unicast
ぐぐってたら野良パッチを見つける。
http://1wt.eu/keepalived/
keepalived+unicast
パッチの差分を参考にして
最新版を修正してみた。
● ソースコード
○ https://github.com/winebarrel/keepalived
● rpm
○ http://bit.ly/10yLoVe
動作確認
動作確認
基本情報
● クライアント - curl
○ dagon - 10.0.214.215
● keepalived+LVS
○ cthulhu(MASTER) - 10.0.214.216
○ hastur(BACKUP) - 10.0.214.217
● バックエンド - httpd
○ nyar - 10.0.214.218
○ yog - 10.0.214.219
● VIP
○ 192.168.200.16
動作確認
事前準備
● LVS・バックエンドのENIのSource/Dest Check
をdisabledにする
● バックエンドでiptablesの設定
sudo iptables -t nat -A PREROUTING -d 192.168.200.16 -j REDIRECT
動作確認
VPCのRoute Table
動作確認 - keepalived.cnf(cthulhu)
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
}
vrrp_unicast_bind 10.0.214.216
vrrp_unicast_peer 10.0.214.217
notify_master "/etc/keepalived/notify_master.sh"
}
virtual_server_group VSG_1 {
192.168.200.16 80
}
virtual_server group VSG_1 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 10.0.214.218 80 {
weight 1
HTTP_GET {
url {
path /
}
}
}
real_server 10.0.214.219 80 {
weight 1
HTTP_GET {
url {
path /
}
}
}
}
動作確認 - keepalived.cnf(hastur)
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.200.16
}
vrrp_unicast_bind 10.0.214.217
vrrp_unicast_peer 10.0.214.216
notify_master "/etc/keepalived/notify_master.sh"
}
virtual_server_group VSG_1 {
192.168.200.16 80
}
virtual_server group VSG_1 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 10.0.214.218 80 {
weight 1
HTTP_GET {
url {
path /
}
}
}
real_server 10.0.214.219 80 {
weight 1
HTTP_GET {
url {
path /
}
}
}
}
動作確認 - notify_master.sh
#!/bin/bash
VIP=192.168.200.16
ROUTE_TABLE_ID=rtb-...
INSTANCE_ID=`curl -s 169.254.169.254/latest/meta-data/instance-id`
export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
export AWS_DEFAULT_REGION=ap-northeast-1
aws ec2 delete-route 
--destination-cidr-block $VIP/32 
--route-table-id $ROUTE_TABLE_ID
aws ec2 create-route 
--destination-cidr-block $VIP/32 
--route-table-id $ROUTE_TABLE_ID 
--instance-id $INSTANCE_ID
動作確認 - 起動してみる
cthulhu
hastur
cthulhu> sudo /etc/init.d/keepalived start
cthulhu> ip addr show | grep "global eth0"
inet 10.0.214.216/17 brd 10.0.255.255 scope global eth0
inet 192.168.200.16/32 scope global eth0
cthulhul> sudo ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.200.16:http rr
-> 10.0.214.218:http Route 1 0 0
-> 10.0.214.219:http Route 1 0 0
hastur> sudo /etc/init.d/keepalived start
hastur> ip addr show | grep "global eth0"
inet 10.0.214.217/17 brd 10.0.255.255 scope global eth0
hastur> sudo ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.200.16:http rr
-> 10.0.214.218:http Route 1 0 0
-> 10.0.214.219:http Route 1 0 0
動作確認
dagon> while true; do echo `date +%X`" | "`curl -s 192.168.200.16`; sleep 1; done
05:19:46 PM | nyar OK
05:19:47 PM | yog OK
05:19:48 PM | nyar OK
05:19:49 PM | yog OK
05:19:50 PM | nyar OK
05:19:51 PM | yog OK
05:19:52 PM | nyar OK
05:19:53 PM | yog OK
05:19:54 PM | nyar OK
05:19:55 PM | yog OK
05:19:56 PM | nyar OK
05:19:57 PM | yog OK
05:19:58 PM | nyar OK
05:19:59 PM | yog OK
05:20:00 PM | nyar OK
dagonからリクエストを投げる
cthulhuのkeepalivedを殺す
動作確認
cthulhu> sudo killall -9 keepalived
05:22:08 PM | yog OK
05:22:09 PM | nyar OK
05:22:10 PM | yog OK
05:22:11 PM | nyar OK # ←このへんで殺した
05:22:12 PM | yog OK
05:22:13 PM | nyar OK
05:22:14 PM | yog OK
05:22:15 PM | nyar OK
sudo killall -9 keepalived
hastur> ip addr show | grep "global eth0"
inet 10.0.214.217/17 brd 10.0.255.255 scope global eth0
inet 192.168.200.16/32 scope global eth0
keepalived と LVS の世界が
戻ってきたよー!
5/4に同じネタをやっている人がいた…orz
http://khanhman.com/?p=12
去年、MLに投稿されたようです。
http://permalink.gmane.org/gmane.linux.keepalived.devel/3787
その後は不明…

More Related Content

What's hot

What's hot (20)

コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
ぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDAぼうけんにでかけよう Kubernetes KEDA
ぼうけんにでかけよう Kubernetes KEDA
 
Kubernetesのワーカーノードを自動修復するために必要だったこと
Kubernetesのワーカーノードを自動修復するために必要だったことKubernetesのワーカーノードを自動修復するために必要だったこと
Kubernetesのワーカーノードを自動修復するために必要だったこと
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデートAmazon Redshift パフォーマンスチューニングテクニックと最新アップデート
Amazon Redshift パフォーマンスチューニングテクニックと最新アップデート
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
ロードバランスへの長い道
ロードバランスへの長い道ロードバランスへの長い道
ロードバランスへの長い道
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
Azure Artifactsを触ってみよう
Azure Artifactsを触ってみようAzure Artifactsを触ってみよう
Azure Artifactsを触ってみよう
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編UnboundとNSDの紹介 BIND9との比較編
UnboundとNSDの紹介 BIND9との比較編
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
"Kong Summit, Japan 2022" パートナーセッション:Kong on AWS で実現するスケーラブルな API 基盤の構築
 
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現するゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
ゼロトラスト・アーキテクチャを無料で(やれるだけ)実現する
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
HTTP/2の現状とこれから
HTTP/2の現状とこれからHTTP/2の現状とこれから
HTTP/2の現状とこれから
 

Similar to EC2でkeepalived+LVS(DSR)

「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
SAKURA Internet Inc.
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
kazuyas
 

Similar to EC2でkeepalived+LVS(DSR) (13)

Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
 
FreeBSDでおうちのルーター
FreeBSDでおうちのルーターFreeBSDでおうちのルーター
FreeBSDでおうちのルーター
 
コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線コンテナネットワーキング(CNI)最前線
コンテナネットワーキング(CNI)最前線
 
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf)
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf) Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
Havana版 RDO-QuickStart-4 (140421-Havana-RDO-QuickStart-4.pdf)
 
VTI の中身
VTI の中身VTI の中身
VTI の中身
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
VPP事始め
VPP事始めVPP事始め
VPP事始め
 
「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例「さくらのクラウド」におけるVyattaの活用事例
「さくらのクラウド」におけるVyattaの活用事例
 
Trema での Open vSwitch
Trema での Open vSwitchTrema での Open vSwitch
Trema での Open vSwitch
 
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
いまさら聞けないDocker - 第5回コンテナ型仮想化の情報交換会@大阪
 
OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!OpenContrailのソースコードを探検しよう!
OpenContrailのソースコードを探検しよう!
 

More from Sugawara Genki

ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
Sugawara Genki
 
AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
Sugawara Genki
 
クックパッドの開発について
クックパッドの開発についてクックパッドの開発について
クックパッドの開発について
Sugawara Genki
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
Sugawara Genki
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
Sugawara Genki
 
EC2の天井を超える
EC2の天井を超えるEC2の天井を超える
EC2の天井を超える
Sugawara Genki
 
ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証
Sugawara Genki
 
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
Sugawara Genki
 
AWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αAWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+α
Sugawara Genki
 

More from Sugawara Genki (20)

Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張
 
SQLによるDynamoDBの操作
SQLによるDynamoDBの操作SQLによるDynamoDBの操作
SQLによるDynamoDBの操作
 
Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装Lambdaによるクラウド型言語の実装
Lambdaによるクラウド型言語の実装
 
200k/sec
200k/sec200k/sec
200k/sec
 
DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴DynamoDBのまえにキャッシュおく奴
DynamoDBのまえにキャッシュおく奴
 
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
 
2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocol2014 09-23 Mechanism of Gossip protocol
2014 09-23 Mechanism of Gossip protocol
 
CloudWatch Logsについて
CloudWatch LogsについてCloudWatch Logsについて
CloudWatch Logsについて
 
MHA on AWS+Rails
MHA on AWS+RailsMHA on AWS+Rails
MHA on AWS+Rails
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
 
AWSをコードで定義する
AWSをコードで定義するAWSをコードで定義する
AWSをコードで定義する
 
クックパッドの開発について
クックパッドの開発についてクックパッドの開発について
クックパッドの開発について
 
Gitを使ったRoute53の管理
Gitを使ったRoute53の管理Gitを使ったRoute53の管理
Gitを使ったRoute53の管理
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
EC2の天井を超える
EC2の天井を超えるEC2の天井を超える
EC2の天井を超える
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
クックパッドでのVPC移行について
クックパッドでのVPC移行についてクックパッドでのVPC移行について
クックパッドでのVPC移行について
 
ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証ゴシッププロトコルによる冗長化と負荷分散の検証
ゴシッププロトコルによる冗長化と負荷分散の検証
 
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws20111012 jaws ug-tokyo勉強会-cookpad-on-aws
20111012 jaws ug-tokyo勉強会-cookpad-on-aws
 
AWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+αAWS移行に向けたクックパッドの取り組み+α
AWS移行に向けたクックパッドの取り組み+α
 

Recently uploaded

Recently uploaded (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: 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
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: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...
 
論文紹介: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
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

EC2でkeepalived+LVS(DSR)