Lvsをvpc上に構築してみた話

3,206 views

Published on

部内共有用のために作成した資料です。

Published in: Technology
1 Comment
4 Likes
Statistics
Notes
  • 複数の負荷分散サーバをアクティブに使いたい場合はHAProxyとかじゃないとできない(LVSではムリ)みたいです(同僚が検証してました)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,206
On SlideShare
0
From Embeds
0
Number of Embeds
267
Actions
Shares
0
Downloads
1
Comments
1
Likes
4
Embeds 0
No embeds

No notes for slide

Lvsをvpc上に構築してみた話

  1. 1. LVSをVPC上に構築してみた こみや@ISAO ※主に部内向けの説明資料です
  2. 2. 1.なぜLVSか     ⇒重みづけしたかった ⇒Haproxyよりパフォーマンスがいいらしい ⇒オンプレとAWS以外のクラウドで運用に慣れてる ⇒smallスタートでコスト削減
  3. 3. 2.ELBvsLVS比較表 内容 ELB LVS 重みづけ できない できる お値段 維持費と従量課金 インスタンス代実費 スケーリング 自動 手動 運用コスト 低い 拡張時と壊れたときに高い ・実は案外お値段は変わらないといううわさも。
  4. 4. 3.最初の設計 VPC IGW Global Segment Mail DEV ADM Private Segment LVS LVS Mng NAT WEB WEB LVS IMG DB DB Ca Ca NFS NFS ・LVSと実サーバとクライアントのセグメントが分離してるとそもそもDSR (Direct Server Return)できない ・初期設計担当者は既に離職していて設計意図が謎でした(未検証だった風)
  5. 5. 4.やってみてできた構成 VPC IGW Global Segment EIP EIP EIP Mail DEV EIP ADM EIP LVS LVS WEB WEB EIP Mng NAT LVS IMG EIP DB DB Ca Ca EIP NFS NFS ・しょうがないからフラットにしたところDBのみDSRに成功 ・WEBはNAT分散しかできない(クライアントがGlobal側だとENIとIPが合わないパ ケットが破棄されるため) ・NAT分散だと実サーバのDefaultGWをLVSにしなければならない
  6. 6. 5.結果的にこうなった構成 VPC IGW Global Segment EIP Private Segment EIP Mail DEV EIP ADM ELB EIP Mng WEB WEB DB DB Ca Ca EIP NAT NAT LVS LVS LVS IMG NFS NFS ・DBの分散は重みづけしたいのでLVSでDSR、WEBの分散はELBでSSLも管理に。 ・顧客にフラットセグメントに仕様変更になった理由を説明するのが困難だという話と、 ELBを用いたほうが運用が楽だしベストプラクティスになるということでこうなりました。 ※0.0.0.0/0は送信元anyのデフォルトGWがNATに向いてるということです。
  7. 7. 6.最初の構成があり得なかった訳1  DSRはフラットな構成でなければならないがLVSだけが フロントセグメントに分離していた http://ultramonkey.sourceforge.jp/papers/lvs_tutorial/html/
  8. 8. 6.最初の構成があり得なかった訳2   GWルータでENIとIPが合わないパケットが破棄されるためク ライアントがグローバル側にいるWEB等はDSRは不可能で NAT方式で分散する他ない NAT方式分散だとGWをLVSに向ける必要があるためサブ ネット丸ごとRouterTableでNATインスタンスをGWにするの は利用不可 http://www.slideshare.net/kentayasukawa/ec2-20334037
  9. 9. NATインスタンスの仕組み解説    通常のLinuxRouterの機能でカーネルパラメータで forwardingを許可するのとiptablesでマスカレード設定 をする必要がある Source/Dest CheckをDisableにする必要あり VPCの機能のRouterTableを制御する必要がある ⇒NATインスタンスをデフォルトGWとするルートを登録 したテーブルを作り、Privateサブネットまるごと追加する (Linux的に個々のデフォルトGWをNATインスタンスに 向ける必要はない)
  10. 10. そのた     NATインスタンスではなくLinuxサーバNATの場合、EIPつけ ないホストのデフォルトGWを他のEC2インスタンスにすると APIから帰ってくるメタデータがデフォルトGWのインスタンス のものしかとれなくなる HAのためにEIPやPrivateIPを移動させる場合もAPIサーバ との通信が必須。AWS的な制御なしにPrivateIPをつけて ローカルホストで認識したとしても外部からの通信はできない。 固定EIPつけない起動時に動的EIP付与だと起動時にAPI サーバとの通信が困難でheartbeatのリソースが起動してこ なかったりする 普通はデフォルトGWは複数設定することはできないし異なる サブネットを指定することはできない
  11. 11. ELB化の際に引っ掛かったこと    Private側のインスタンスに対して負荷分散したい場合 でも、ELBが所属するセグメントはIGWにせっしている GlobalSegmentである必要がある。 セキュリティグループで縛っていない限り1つのVPC内 (10.0.0.0/16等)は自由に通信が可能である。 ELBをPrivateセグメントに置きEIPをつけるということは 不可能。
  12. 12. おわり  ご覧いただきまして、ありがとうございました。 詳細は以下URLをどうぞ。 http://devlab.isao.co.jp/vpc_heartbeat3_lvs/

×