Open Chemistry: Realizing Open Data, Open Standards, and Open Source
Open contrailday 20150926
-
Upload
daisuke-nakajima -
Category
Internet
-
view
898 -
download
0
Transcript of Open contrailday 20150926
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とは?
• エージェントレスな構成管理ツール• 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