クラウドシステム 自動化手法に関する発表 · pdf...

22
クラウドシステム 自動化手法に関する発表 ブロードバンドタワー 岩本裕真 慶應義塾大学 沖幸太朗

Upload: dangtuong

Post on 09-Feb-2018

262 views

Category:

Documents


19 download

TRANSCRIPT

Page 1: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

クラウドシステム自動化手法に関する発表

ブロードバンドタワー岩本裕真

慶應義塾大学 沖幸太朗

Page 2: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

目的

• ネットワークを自動化させたい。– オペレーションにかかる人件費の削減

• 物理結線したらネットワーク機器のコンフィギュレーションは、すべて自動生成してほしい。(DHCPでIPアドレスを自動設定してコネクティビティを確保できるのと同等の感覚になってほしい)

• いわゆるZeroconf(ゼロ・コンフィギュレーション・ネットワーキング)を実現したい。

2

Page 3: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

実ルーターを用いた環境を想定した自動化のエミュレーションを行うが。。。

• 多くのルータをこれらの検証のために用意することは、あらゆるコストが大きい– 機器コスト– 格納コスト– 設備コスト– 電源等備品コスト

そのため仮想ルータであるvyosとハイパーバイザ(KVM)を用いてエミュレーションを行った

Page 4: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

KVMを用いた仮想環境でのクラウド環境エミュレーション

Hypervisor(KVM)

X86 server

VM VM VM VM VM VM・・・・・

Page 5: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

クラウド内部のネットワークで多く用いられるトポロジLeaf-Spineでエミュレーション環境で実装する。

lerningserver

インターフェースやルーティングの設定

物理結線さえすればDC内部のトポロジとして参加させる

5

Leaf

LLDPで機器の接続先を確認

Core

Spine

Page 6: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

物理トポロジの情報取得

• LLDP(Link Layer Discovery Protocol)を用いた

各ルータの隣接ノードを取得することで全体の構成を把握する

– IEEE 802.1ABで制定されている

–マルチキャストを用いて隣接機器情報を取得するプロトコル

Page 7: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

ゲストOSがLLDPを正しく送受信するために

• VM上で仮想スイッチを稼働させて、複数台に相互接続しLLDP送受信する場合、間にブリッジデバイスが介在する通らない事がある。

• 物理マシンに直接繋がっている状況を作るには、このような問題を取り除かなければならない。

Page 8: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

macvtapを用いた仮想マシン間接続

• macvtapとは–仮想マシン稼働のLinuxカーネルにて、VMとホストOS外部(ホストOSのカーネル以外)とのLayer-2での通信を可能にする仮想デバイス

• 今回各仮想ルータに対して仮想インターフェイスを割当てmacvtapデバイスを用いて接続を行った。

Page 9: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

RPC(Remote Procedure Call)• 対象となるエミュレートされた仮想ルータに対してルーチンを実行させる手法について– netconfを用いてyangからルーチンを定義することを目指した

– データモデルの定義等が業界としてまだ決まりきってない部分が多かった

– 実装もまだまだな感じ

• そのためExscriptというPythonモジュールを用いる事でsshを用いて外部からプログラムを呼び出した。(いわゆるexpectコマンドのpython版モジュール)

Page 10: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

システム概要

SQLite3 libvirtd

QEMU+KVM

Page 11: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

データの流れ

LLDPで取得した機器間の接続情報

DHCPで取得した各機器のマネジメントポートの情報

各ルーターへのログイン情報各ポートにつけるべきIPアドレス

BGPピアのために必要な設定(AS番号、対向機器の情報)

Page 12: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

テーブル設計概要• Router

• 各ルーターのマネジメントポートのIPアドレス、MACアドレス

• Connection• ポート同士の接続関係を定義

• LLDPで取得したポート間の接続情報を登録

• Peer_pool• ルーター間のL2疎通性を確保するための

アドレスプール

• 10.99.0.0/30,10.99.0.4/30…

Page 13: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

テーブル設計図

connection

id

From_host

From_port

To_host

To_port

Peer_idpeer_pool

id

Status

Address

Prefix

router

id

Name

Mgmt_mac

Mgmt_ip

Page 14: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

詳細図

eth3 eth4

Leaf-1 Spine-2

物理情報から論理情報を自動生成

AS64521 AS64534

10.10.99.53 10.10.99.54

ネットワークアドレス:10.10.99.52/30

Page 15: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

データ収集処理

概要 必要な情報 情報収集ソース

ルーターの登録 ホスト名、マネジメントインタフェースの(IPアドレス,MACアドレス)

DHCPサーバー

リンクの登録 接続元・接続先のホスト名、インタフェース名の組 LLDP

Page 16: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

払い出し処理• ルーターの名前をキーとして、設定に必要な情報をリスト構造で返す

• get_config_info_by_router_name('core-1')

Core-1

eth1

eth2

eth3

※eth0はマネジメント用インタフェースとして利用し、DHCPにてアドレス割り当て

自AS番号 64513

自AS番号 64514

L2ピア用のアドレス 10.10.99.1/30

Page 17: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

システム概要

SQLite3 libvirtd

QEMU+KVM

Page 18: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

物理環境の操作にあたる実装

Libvirtctl.py

• VyOS(仮想マシン)の電源操作

• VyOSのマネジメントインタフェースのMACアドレスの取得(virsh)

• DHCP(KVMのdnsmasq)から払い出されたアドレスの監視

52-54-00-ED-27-2110.210.2.6

Page 19: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

監視概要

• デモを行うために簡易的な監視を実装

•本来はZabbix,Nagios等との連携が想定されるが、PoCとして作成

• netdbと連携し全ルーターの情報を取得

• マネジメントインタフェースに対してICMPによる監視を実施

• 5秒程度応答がなかったルーターをダウンとみなす

• ラーニングサーバーにダウンしたルーター一覧を通知する

動作フロー

Page 20: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

実験環境

FUJITSU RX200 S6 (1Uサーバー)

CPU Xeon L5506 @2.13Ghz 4cores *2CPU

Memory 96GB (8GB * 12Modules)

DISK 300GB *8 RAID6

OS CentOS 7.1 64bit3.10.0-229.14.1.el7.x86_64

Hypervisor KVM (Kimchi as web UI)

Page 21: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

ノードの障害時の動き

R1 R3

Learning ServerR0

R2 R4

ノードを立ち上げ

UP

待機状態管理用

サービス用

死活監視−pingが数秒途切れると

downとみなす−ノードがダウンすると別のマシンを起動&configuration

問題点:死活監視がs途切れた

時にダウンとみなすトリガーをどうやってLearning Serverに送る?

Page 22: クラウドシステム 自動化手法に関する発表 · PDF fileそのため仮想ルータであるvyosとハイパーバイザ(KVM

DEMO