open contrailday 20150926

26
Contrail Manual インストールとAnsible Daisuke Nakajima

Upload: daisuke-nakajima

Post on 13-Apr-2017

897 views

Category:

Internet


0 download

TRANSCRIPT

Contrail Manual インストールとAnsible

Daisuke Nakajima

Contrailの構成

Contrail ComponentsContrailのコンポーネント概要

ControllerConfiguration

Controller

Config Analytics

Control

Virtual Machine

VM VM

Bare metal Server

IP network

Overlay

Tunnel

XMPP

XMPP

BGP+Netconf

Orchestration SystemWeb UI / OSS / BSS

WAN, Internet

REST

BGP

vRouter

VA

Any Gateway Router

Compute Node ToR Switch

• コントローラー

• Config Node

• REST/APIインターフェイスをもち、外部から入力されたデータを格納、内部情報に変換し、IPMAPサーバ経由でControl nodeに送る。Node情報を格納するDiscovery serverや、Device managerもConfig nodeの一部。

• Control Node

• Control nodeはvRouterや外部BGPルータなどと接続し、データのやり取りを行う。

• Analytics Node

• トラフィックの情報や、ログなどを格納。REST/APIをもち、外部からのクエリにも答える。

• Database Node

• CassandraとZookeeperからなるデータベース。

• ToR Agent

• OVSDB経由で物理スイッチにポート情報やMAC情報を送信し、物理サーバなどを仮想ネットワークに接続する。

• フォワーダー

• vRouter

• オリジナルのデータをMPLSoGRE, MPLSoUDP, VXLANなどにカプセル化し、データの転送を行う。フィルターなどもここで行う。

Database

TSN

ToR Agent

vRouter

OVSDB

Contrail ComponentsContrail Architecture Diagram

• 右の図はOpenstackとContrailの連携図です。OpenstackとはNeutronのプラグイン経由でContrailと接続します。

• ConrailはOpenstackのようにそれぞれのモジュールが疎結合しているモデルのため、スケールアウト/インはそれぞれのノードごとに行えます。

Contrail Node connectionContrail プロセスの初期化

• ノード登録• ContrailのプロセスはDiscovery serverに接続して自身を登録する

Config Node

Discovery server

Node DB

Config node

IF-MAP

Server

Control node

XMPP

Server

Analytics node

Collector

IF-MAP server: 10.0.0.1API Server : 10.0.0.1xmpp Server : 10.0.0.2DNS Server : 10.0.0.2Collector : 10.0.0.3

API server DNS Server

Register

Contrail Node connectionContrail プロセスの初期化

• Node 情報の配布• ContrailのプロセスはDiscoveryサーバに自身が必要な情報をリクエストする。

• Discoveryサーバは自身のデータベースから必要な情報を配布する

Config Node

Discovery server

Node DB

Compute node

vRouter

Agent

Request XMPP server Publish XMPP-Server[10.0.0.2,10.0.0.3]

Config Node 2

REST API Server

IF-MAPserver

RabbitMQ

Schema Transformer

Standby

SVC Monitor

Discovery Server

Contrail High AvailabilityConfig Node High Availability

• Config node High Availability

• Active-Active model

• 全てのConfig nodeはアクティブモードで動作します。ただし、SVC-Monitor やSchema TransformerなどのプロセスはActive Standbyです。

• 外部からデータを受け付けるプロセスのみIPアドレスの冗長化が必要です。冗長化が必要なのは以下になります。デフォルトではLBとしてHA Proxyを使用します。

1. REST API Server

2. RabbitMQ

3. Discovert Server

4. ToR Agent (TSNを使用する場合のみ)

HA proxy

Control Node

"BGP module"

ProxiesXMPP

IF-MAP Client

HA proxyKeepalived

Config Node 1

REST API Server

Database

IF-MAPserver

RabbitMQ

Control Node

"BGP module"

ProxiesXMPP

IF-MAP Client

Schema Transformer

Active

SVC Monitor

Discovery Server

Support service

Contrail ComponentsConfig Node

• REST API Server

• contrail-api

• /etc/contrail/contrail-api.conf

• Ifmap Cassandra Discovery server Zookeeper Rabbitmq など

• Schema Transformer• /etc/contrail/contrail-schema.conf

• Ifmap Cassandra Discovery server Zookeeper API Serverなど

• Service Monitor• /etc/contrail/contrail-schema.conf

• Ifmap Cassandra Discovery server Zookeeper API Serverなど

• Device Manager• /etc/contrail/contrail-device-manager.conf

• Ifmap Cassandra Discovery server Zookeeper Rabbitmq など

• Discovery Server• /etc/contrail/contrail-discovery.conf

• Cassandra Zookeeper TTL など

• Message Bus• /etc/rabbitmq/*

• rabbitmq.configのクラスタや属性情報 rabbitmq-env.confなど

• IF-MAP server• /etc/ifmap-server/*

• Ifmap username など

Database Node Config Node

REST API Server

Schema Transformer

Orchestrator

REST

Cassandra

IF-MAPserver

ControlNode

ControlNode

IF-MAP

Message Bus

Discovery server

ComputeNode

AnalyticsNode

Zookeeper

Service Monitor Device Manager

Support service

Contrail ComponentsConfig Node

• Node manager• /etc/contrail/contrail-config-nodemgr.conf

• Discovery serverなど

• Common• /etc/contrail/contrail-keystone-auth.conf

• Keystone ユーザー名 テナント名など

• Load Balancer ( for HA )• /etc/haproxy/haproxy.cfg

• API server, Discovery Server , RabbitMQなどのLB設定情報

• /etc/keepalived/keepalived.conf

• VIPなどの情報

Database Node Config Node

REST API Server

Schema Transformer

Orchestrator

REST

Cassandra

IF-MAPserver

ControlNode

ControlNode

IF-MAP

Message Bus

Discovery server

ComputeNode

AnalyticsNode

Zookeeper

Service Monitor Device Manager

Contrail ComponentsControl Node

Control Node

ProxiesXMPP

ControlNode

Control Node

Compute Node

TSN

Config Node Config Node

IF-MAP

XMPP

IF-MAP Client

GatewayRouters

Service Nodes

• IF-MAP Client / XMPP

• contrail-api

• /etc/contrail/contrail-control.conf

• 自IPアドレス Discovery server ifmapなど

• Proxies

• contrail-dns

• contrail-dns.conf

• 自IPアドレス Discovery server ifmapなど

• contrail-named

• /etc/contrail/dns/contrail-named.conf

• いわゆるBindの設定

• Node manager• /etc/contrail/contrail-control-nodemgr.conf

• Discovery serverなど

BGP

Netconf

Contrail ComponentsAnalytics Node

• REST API Server• /etc/contrail/contrail-api.conf

• Cassandra Discovery server Redis server など

• Query engine• /etc/contrail/contrail-query-engine.conf

• Cassandra Discovery server Redis server など

• Sandesh Collector• /etc/contrail/contrail-collector.conf

• Cassandra Discovery server Redis server など

• SNMP Collector• /etc/contrail/contrail-snmp-collector.conf

• Zookeeper Discovery serverなど

• Topology Builder• /etc/contrail/cat contrail-topology.conf

• Zookeeper など

• Message Bus• /etc/redis/*

• Redis serverの設定情報 など

• Node manager• /etc/contrail/contrail-analytics-nodemgr.conf

• Discovery serverなど

Analytics Node

REST API Server

RulesEngine

OtherAnalyticsClients

Collector

AllNodes

AllNodes

Analytics Client

Generated API

UI, CLI Application

Message Bus

Query Engines

Sandesh

REST

Database Node

Cassandra

Zookeeper

Contrail ComponentsToR Service Node (TSN)

• vRouter agent• /etc/contrail/ contrail-vrouter-agent.conf

• Discovery server Default route 物理アドレス情報 など

• TOR agent• /etc/contrail/ contrail-tor-agent-X-.conf

• Discovery server ToR Switch 情報 CA,Cert 情報など

• Node manager• /etc/contrail/contrail-vrouter-nodemgr.conf

• Discovery serverなど

ToR Service Node

vRouter Agent

VXLAN

Control Node

vhost0Kernel

pkt0

User

Config

VRFsPolicy Table vRouter Forwarding Plane

ToR-Agent

Config

XM

PP

Routing Instance

Flow Table

FIB

OVSDBClient

Routing Instance

Flow Table

FIB

vhost0

Contrail Forwarding PlaneCompute Node

Compute Node

vRouter Agent

Overlay tunnelsMPLS over GRE/UDP or VXLAN

Control Node

vhost0Kernel

pkt0

User

Config

VRFsPolicy Table vRouter Forwarding Plane

VirtualMachine

(Tenant A)

Routing Instance

Flow Table

FIB

Tap Interfaces (vif)

Routing Instance

Flow Table

FIB

VirtualMachine

(Tenant B)

VirtualMachine

(Tenant B)

• vRouter agent• /etc/contrail/ contrail-vrouter-agent.conf

• Discovery server Default route 物理アドレス情報 など

• Node manager• /etc/contrail/contrail-vrouter-nodemgr.conf

• Discovery serverなど

vhost0

Contrail other modules

• Cassandra• /etc/cassandra/*

• Cassandraクラスタ情報 データベース情報 など

• Zookeeper• /etc/zookeeper/conf/*

• Zookeeperクラスタ情報 データベース情報 など

Database Node

設定に必要な情報

設定に必要な情報

• IPアドレス• Contrailが実際の通信に使うインターフェイスのIPアドレス

• 冗長化のためのIPアドレス

• 認証情報• KeystoneのIPアドレス

• ユーザー名

• パスワード

• ネットワーク情報• Contrailが使うAS番号

• ToR Switch情報• ホスト名

• VTEP IPアドレス

• OVSポート

• ToR-Agent管理ポート

• 接続TSNホスト名

Ansibleでの自動化

Ansibleでの自動化Ansibleとは?

• エージェントレスな構成管理ツール• ChefやPuppetのようにサーバにエージェントがいらない

• YAML形式の設定ファイル• 最近ネットワーク界隈で流行ってる(?)YAML形式

• 結構色々できる• パッケージのインストール

• コンフィグ作成

• 条件分岐など・・・

Ansibleでの自動化ControllerのPlaybook作りました

• 設定するのはこれだけ1. Hostsに各ノードをインストールするサーバを設定

2. SSHユーザー/パスワード、Keystone情報、仮想IP情報、AS番号 (ToR-Agent)を設定

3. サーバの情報を設定

• https://github.com/nakadaisuke/contrail_ansible

※OpenstackとCompute nodeはインストールされません。

Ansibleでの自動化前提

• OpenStackのインストール• Neutron以外のパッケージ(NeutronはContrailのConfigノードにインストールされます。)

• 現時点でOpenStack Junoのみ対応

• Computeノードのインストールは条件付(Vif driverはApt-getでなくDpkgでインストール)

Ansibleでの自動化

1. Hostsに各ノードをインストールするサーバを設定

[database]system001system002system003

[config]system001system002system003

[control]system001system002system003

[collector]system001system002system003

[webui]system001system002system003

[system]system001system002system003

• hostsの編集

Ansibleでの自動化

2. SSHユーザー/パスワード、Keystone情報、仮想IP情報、AS番号 (ToR-Agent)を設定

---ansible_ssh_user: "lab"ansible_ssh_pass: "juniper123"

contrail_keystone_address: "10.84.50.100"contrail_admin_user: "admin"contrail_admin_password: "password"

contrail_keepalived: yescontrail_haproxy_address: "10.84.50.1" # 10.84.50.80contrail_netmask: "255.255.255.0"contrail_prefixlen: "24"contrail_gateway: "10.84.50.254"

contrail_router_asn: "64512"

• group_vars/all.ymlの編集

Ansibleでの自動化

3.サーバの情報を設定---contrail_device: "p4p1"contrail_address: "10.84.50.1"contrail_mgmt_address: "172.27.113.85"

• host_vars/XXXXXX.ymlの作成

※サーバ数だけ作成

ここで設定するcontrail_deviceは実際にvRouterが通信するインターフェイスです。

Bondingする場合は先にBondingインターフェイスを作成して、bond0などを設定してください。

Ansibleでの自動化4. Playbookの実行

• Contrailのパッケージを install/files/にコピー

• ansible-playbook -K -i hosts setup.yml

• 全てのノードをリスタート

現在進行中Compute nodeへのvRouterのインストール

• なのですが・・・• Vif Driverはpython-novaをインストールするときにインストールされる。Contrail付属のPython-novaを入れると依存の関

係でUbuntu リポジトリからとってくるNova関係のパッケージが入らない場合があるのが困ってます(またはその逆)。

※解決策:apt-get でなく、dpkgでContrail repositoryのdebファイルを直接インストール?!

参考リンク

• Juniper Github• https://github.com/Juniper/

• Ansible置き場• https://github.com/nakadaisuke/contrail_ansible