ウィリアムのいたずらの、まちあるき、たべあるきーPART2

gooブログ「ウィリアムのいたずらの、まちあるき、たべあるき」がお引越ししてきました

OpenStackの仮想ネットワークの高速化について聞いてきた!

きのう(3月2日)

OpenStack最新情報セミナー

に行ってきた!のでその内容をメモメモ




<<昼の部>>

■あいさつ
昼の部にこんなに来てくれるのは、はじめて
・昼の部
 OpenStack共同検証ラボ
 neutronのDeep dive
 jujuなど、実践的な環境構築ネタ

■OpenStack共同検証ラボのご紹介
・自己紹介
・会社紹介
 HP:内部ネタ
 動画の配信UStreamからYouTube Liveへ
  URL,チャンネル登録100人になったら、変えられるので、チャンネル登録してね!
 GitHubの活用:マークダウン形式

【OpenStack共同検証ラボをブロードバンドタワー社と始めました】
・悩み:勉強の機会が限られている
 →クラウド基盤の運用管理にこそビジネスの差別化要因があるが、てつかずのまま
・OpenStack共同検証ラボとは
 SDN活用、運用管理にもフォーカス
 賛同いただける会社を募り、共同でプロジェクト推進
 ベンダーニュートラルで積極的に情報発信
・2つのゾーン
  SDN/NFVゾーン
  DevOpsゾーン
 3~6カ月で中長期
・サーバー管理の自動化(管理・監視ツール)
・興味ある方はご連絡
 スケジュール

■OpenStack-Ansibleで作るOpenStackHA環境
・ホワイトペーパーある
・OpenStack-papetをAnsibleで書きなおし
 Rackspaceの案件でデリバリーされている
 →いかに鉄板で動かすか?
・OpenStack-Ansibleへの期待
 Ubuntu ServerでRDOみたいに使いたい
 OpenStackでHA環境を構築するのが、当たり前になってほしい
 自動化ツールAnsibleの適用範囲を広げてほしい

■OpenStack-Ansibleで作るOpenStack HA環境手順書解説
・今回解説する手順書 Kilo版
・自己紹介:割愛
・Ansibleとは(おさらい)
 構成管理ツールの1つ。YAMLフォーマットで書かれており可読性が高い
 ※同じジャンルの製品にはPuppet,Chaf,Jujuがある
・特徴
 Simple
  イベントリ、プレイブックがあれば利用可能
 Agentless
  特別なツール入れなくてOK.SSHで
 Powerful
  環境デプロイ、スイッチ設定も含めて
・Openstack-Ansibleとは
 Ansibleを使用して、容易にデプロイできることを目指す
・コンポーネント構成

 コントローラーノード1台
 →Ubuntuいtれる
  Openstack Ansible
    LXCいれる
  HA Proxy
    いろいろはいる

 コンピュートノード1台
 →Ubuntuいtれる
  KVMいれる

1.構築する環境について(p5)
・2だい
 3台冗長が一般的だけど、今回は2代
・p6
 コンポーネント一覧
・HAの考え方
 スプリットプレインによるデータ破損やいるし3台で冗長
 その他致命的→2代で冗長
・P7
 Ansibleカーネル重要:3.13
 →これより低いとplaybooksが動かない
・ネットワーク
 em1:管理用
 em2:サービス(プロジェクト)で使われるネットワーク
・優先ネットワークをem1にする
・プロキシの設定
 →管理ネットワークからインターネットアクセス可能

2.OpenStack-Ansibleインストール前の設定
・サーバーにAnsibleをいれるためのパッケージインストール
・タグVlanを有効にする
・カーネルのアップグレード
・ネットワークデバイスの設定
・物理ボリュームの設定
 
3.Openstack-Ansibleの設定
・P23
 設定用Playbook、実行用Playbook
・OpenstackAnsibleインストール
・コピー
・P25
 Openstack_user_config.ymlファイルの作成
 exampleを参考
 各セクションに分かれている
 cidr_networksセクション
 used_ipsセクション→予約IPアドレスの設定
 global_overridesセクション
 shared-Infra_hostsセクション:かかれていない
  GalaraDB,RabbitMQ,Memcachedをデプロイ
  affinity
  書かれていない:暗黙的に1個
・P28
 物理サーバー3台の場合
・P28-29
 デプロイする
P30
 Cinderをデプロイする
 今回はStorage1は出てこない

このファイル編集すればおしまい
スペース入るとうまくいかない

・user_variables.yml
 基本的にファイルの中に書かれている

・user_secrets.ymlの設定
keystoneで使うパスワード

4.Openstackのデプロイ
・playbook実行
  ・P36:setup-hosts.ymlの実行
   -vvvをつくる
  ・失敗したらretry
  ・プロキシ
  ・DBやMQなどインフラ
  ・残りのコンポーネント

7~8時間で構築完了

今後
・解説部分を手順に
・ドキュメント充実化
・Mitaka対応
・OpenStack+PLUMgridのインストール自動化

■知っているようで知らないNeutron -仮想ルーターの冗長と分散-

・自己紹介
・Neutronの仮想ルーターについて

1.IaaS環境におけるネットワーク(昔話)
 仮想マシンの上でVM動かす
  サーバー数が増加→管理製品が登場
 VMを横断的に
  VLAN使って:設定が仮想スイッチと物理スイッチ両方に
 仮想サーバー:爆発的に増加
  手動じゃむり:ホップ バイ ホップとオーバーレイ
  今回はオーバーレイ

2.Nova Network
 仮想ルーターは1つだけ
  テナント巻でIP重複不可能、SPoF、スループット、パケット往復ビンタ
 Nova Network マルチホスト
  複数あるのでSPoFなどはいいけど、IP重複は不可

3.Neutron
 複数の仮想ルーターを実現:Linux namespace→テナントごとに
 L2パケット処理
 課題:
  L3の処理:仮想ルーター Neutron Server重要→SPoF,スループット、往復ビンタ
  VMから出たL2パケットはL3でカプセル化
 対策
  L3HA,DVR

3.1 L3HA
 SPoF対策
  口はあるが、IPはActiveに振られている
 切り替わり
  1台しんでる→activeへ
 できること
  SPoF化排除
  セッション引き継ぎとかはできない
  スループット向上
    テナントがA,Bとあるとき
     NW1をAのアクティブ
     NW2をBのアクティブにする

3.2 DVR
3.2.1 概要
・スループット、往復ビンタ問題解決
 Computeサーバーに仮想ルーターを置き、
 (Neutronサーバーのクローン)
 フローティングIPを割り当てると、Computeサーバーの分散仮想ルーターを通して外部へ

3.2.2
 前提知識 仮想Routerの処理
 East-West通信→Computeサーバーでやりとり、往復ビンタおこらない
 Noth-South、フローティングIPなし
  インスタンス→Computeサーバーでカプセル化
  neutronでカプセル解除:外に出る
 フローティングIPあり
  仮想ルータでNATされ、ルーティングされる

3.2.3 DVR詳細
 FIPなし
 FIPあり・・・(ふくざつなのでしょうりゃく)

3.3DVRまとめ
・できること
 スループット向上→複数ルーター使う
・できないこと
 SPoF:1個にヒモづくから
 →L3HAとDVRは現時点では排他

4.MidoNet(おまけ)
・Overlay型のSDNシステム
・コントローラー単一ではない
・GWサーバーのう家にMidonetProviderRouterでそのうえに仮想ルーター
・ポートミラーリングの機能

5.まとめ
 L3HA:Activeスタンバイ、Neutronサーバー通るので負荷かかる
 DVR:冗長化現時点ではできない:フローティングIPの有無で変わる
 MidoNet:ActiveActive

Q&A
 OVN:アーキテクチャとしては、MidoNetとほぼ一緒

■Ubuntu Juju/MAAS OpenStackを使った検証環境構築
・自己紹介
・会社紹介:えむでぃす
・きょうのおはなし
  Juju/MAAS
  事例

・Juju/MAASの概要
 かのにかるしゃ
 Juju:モデリング、設定、デプロイ、管理をクラウド環境へ実現するサービスオーケストレーションツール
 チャーム(Charm)→設定サービス
 MAAS:物理サーバー自動化ツール

・Jujuのしくみ
 サービス:Charmで機能単位
 ユニット:サービスで作られた実体
 ノード:サーバーの実体、1ノードに複数ユニットも可能

 サービス間のリレーション構築 add_relation
 スケールアウト juju add-unit

・MAASの仕組み
 KVMとかも管理できる

デモ
・マシン自動探索と登録

事例1:環境作った
 →構築実習
 全員同じIP→接続先VLAN
  グループごとにルーティングテーブルを分割

OpenStack構築の
・MAASサ-バー
・Jujuサーバーの構築
・OpenStack用物理マシン・仮想マシン
・Jujuへデプロイ

事例2:
失敗の原因
1.MAASデプロイ始まらない
2.Jujuがunitのデプロイを始めない
→タイミングまたはゴミの問題

事例3:
Juju on Openstack
 metadataを作る
 テナント用 juju bootstrap
Jujuで作ったOpenStackAPIへ、テナント内のjuju bootstrapから疎通しない
 テナント内にDNS

wordpress構築
1.jujuでMySQLデプロイ
2.Jujuでwordpressデプロイ
3.MySQLとwordpressをadd-relation
4.expose ON
5.IP

まとめ




<<夜の部:仮想ネットワークの高速化>>

■Accelerate SDN/NFV Network ~ネットワーク高速化のアレコレ~
・自己紹介
・会社総会 アルティマ & マクニカグループ
・ほんじつお話しする内容
 SR-IOV
 VXLAN オフロード
 DPDK
 OVS オフロード
 FPGA ON NIC
→とは何?という話省略

超まとめ
・VXLAN オフロード
 アクセラレーションでも枯れている。
 NICで。

・SR-IOV
 最近クラウドでも。Amazonでもオプション。
 オーケストレーションの課題

・DPDK
 NFVのユースケースで注目
 アプリケーションが対応しないと
 6WIND、Vyatta

・TrendTec
 OVSオフロードNIC
 FPGAのNICカード
 VPPテクノロジー

・VXLAN Offload
 NTT Docomo
・DPDK
 オープンソース:kiloから使える
 かのにかるjujuで6WIND(しっくすういんど)立ち上げられる
・SR-IOVとOVS Offload
 OVSオフロードエンジン搭載NIC
・FPGA NIC
 メラノックス、ビットウェアー(からできます):米国では流れていく
 →OpenCL:抽象化コンパイラ

ネットっワークを高速化するには
・ボトルネックの理解
 スケールアップ?→解決しない時も:
  デバイスドライバの割り込み
  コンテキストスイッチ
  vSwitch
・テクノロジーの分類
 HWアクセラレーション:ドライバの作りこみ違う
 SWアクセラレーション:DPDKはこれ。連携必須

動作解説
・VXLANオフロード
 RSO/TSO処理
勘違い
 VTEPはオフロードしません
 ただしVTEPはオフロードするものあり
使いどころ
 VMあたりのスループット向上
 ショートパケットはそれほど

・OVS
 IRQ割り込み、カーネルバッファコピー
 コンテキストスイッチ

・OVS+DPDK
 データパス用専用コア
 ファストパス:コンテキストスイッチ発生しない
 OVSトランスペアレント
 PMDドライバ対応

・SR-IOV
 カーネルバイパス
 仮想スイッチの要件が低い場合

・OVSオフロード
 NICでオフロード、見掛け上OVS

対応製品

■OVS VXLAN Network Accelaration on Openstack
・Tokyo Summitにて
 DPDKの評価おわっていなかったので

・振り返り
 できるだけ汎用的はHWで
 できるだけ標準的なSW・デプロイ方法で
 一部のHW・SWの書き換えだけで
 ハイパーコンバー字度インフラをOpenStackで構築すること

・OVS/VXLANを選択する理由
 ほとんど使える
 既存根とワークのデメリットを避けながら
 Linux Kernelによるパフォーマンスネック
 OVS (Open vSwitch)
 VXLAN

・なにも使わないでOVS VXLAN
 2Gくらいしか出ない(1台あたりは徐々に減る)

・VXLANオフロード
【一般的理解】
 OVSがVXLANパケットを付加:それが付加されるので、ハードで計算できなくなる
  →そこをハードで計算できるようにする
 ショートパケットだと下がる

・DPDK
 64バイトショートフレームで10G出せる?
 →CPUサイクルが・・・1000サイクルはかかるので
 →インテルDPDK
 ポールモードドライバー
 明示的なリソースの割り当て

・6WIND
 ターボルーター:ソフトウェアルーター
 ターボIPSec
 バーチャルアクセラレーター:バーチャルスイッチ
  キーアドバンテージ
   OVS DPDK:OVSをサポートしているのがメイン
   6WIND:さまざまサポート

・パフォーマンステスト
 2コアで10倍以上
 6WIND明らかに性能違う

・POC評価
 vcpu_pin_setの設定
 UDPの場合

・まとめ
 VXLANオフロード
  帯域の有効利用という点では有効→本番運用では難しいのでは?
 DPDK
  基本的な性能を求めるには必須
  設定は難しい
・ビットあいるではサービスしているよ

■SR-IOV Networking with Openstack
・自己紹介
・トピック
 ネットワークリソースを使いきる

(1)NICの性能を使いきる

・仮想ネットワークの性能
 CPU性能
 ネットワーク性能→こんかいここ
 ディスク性能

・ベアメタルサーバーの性能
 なんにもチューニングしない:3Gでない

・仮想化基盤ネットワークのおさらい
 VMM上で仮想スイッチを稼働させ・・ここもんだい

 性能向上
 (1)仮想スイッチをバイパス=PCIパススルー
 (2)仮想スイッチの高性能化=仮想スイッチ+DPDK
 今回は(1)

(2)SR-IOVとは
・仕様です
 PCIデバイスを多重化して仮想マシンにパススルー接続する技術の業界標準

・PCIバスのパススルー技術
 仮想スイッチモデル
 PCIパススルーモデル
 SR-IOVモデル
  バーチャルファンクション:物理ポートを細切れにし、
 →仮想マシンがDMAを使う技術
  PCIバスと仮想マシンの関係を定義、管理する仕組み
  箱を動かす場合注意必要(LiveMigration)
 →NFVバーチャルファンクション

・キーワード
 物理ファンクション(PF)
 仮想ファンクション(VF)
→効率の用分割数

・技術
 ハード
  NIC
 ソフト
  CPU ピンギング
  PFVFドライバ

(3)SR-IOVを利用する
 サーバーHWの設定でSR-IOVを有効化
 IOMMUの有効化とモジュールのロード
 VFのPCIバスIDでパススルー接続

使用上の注意
 IaaS基盤を使わない場合、バスIDとMACアドレスの構成要素を管理する必要がある

(4)SR-IOVを管理する
 OpenStackを利用して解消する

 仮想マシンのポートを作ってあげる
 使用上の注意
  PF/VFドライバの問題
  セキュリティグループが適用されない
  PCIパススルー情報はCOMPUTEノードの設定に直書き
  Horizonからは操作できない(Liberty現在)

(5)SR-IOVの効果
 IPふぉわーディング

まとめ
・ぴんぎんぐのところはいれてない