1
TripleOの光と闇
2016-05-25
Manabu Ori
日本OpenStackユーザ会 第27回勉強会
2
自己紹介
● 名前: 織 学 (おり まなぶ)
● 所属: レッドハット
● @orimanabu
3
目次
● TripleOとは
– TripleOの歴史
– TripleOでできること
– overcloud構築の流れ
● TripleOの光
● TripleOの闇
※ 本資料の情報は、2016年5月25日時点のものです
4
TripleOとは
5
今日はインストーラ特集ということで...
● Red Hat系ディストリビューション用OpenStackディスト
リビューション
– RDO
– RHOSP (Red Hat OpenStack Platform)
● で使えるインストーラには下記があります
– Packstack
– (Foreman Installer)
– TripleO (旧RDO Manager、製品版はOSP-director)
● 今日はTripleOについてご紹介します
Fedora RHEL CentOS
RDO RHEL OSP
RDO
Manager
RHEL OSP
director
upstream downstream
6
今日はインストーラ特集ということで...
● Red Hat系ディストリビューション用OpenStackディスト
リビューション
– RDO
– RHOSP (Red Hat OpenStack Platform)
● で使えるインストーラには下記があります
– Packstack
– (Foreman Installer)
– TripleO (旧RDO Manager、製品版はOSP-director)
● 今日はTripleOについてご紹介します
Fedora RHEL CentOS
RDO RHEL OSP
RDO
Manager
RHEL OSP
director
upstream downstream
TripleO
7
TripleOとは (1)
● OpenStack On OpenStack
– OpenStackを使ってOpenStack環境を作ろう!
● 具体的には...
– まず小さいOpenStack環境を作る (インストーラ
ノード)
● undercloud
– undercloudを使って大きいOpenStack環境を作る
● overcloud
8
TripleOとは (2)
● 複数コンポーネントを組み合わせて実現
– Ironic + Nova
– Heat
– TripleO Heat Template (THT)
– DiskImage Builder
– os-xxx-config
● os-collect-config, os-apply-config, os-refresh-config, os-net-
config, os-disk-config, os-cloud-config
9
TripleOとHeat (1)
● TripleOでは、HeatでovercloudのOpenStack
設定を行います
● Heatの機能をフル活用
– Nested Resource
– Resource Group
– Software Configuration
10
TripleOとHeat (2)
● Nested Resource
11
TripleOとHeat (3)
● Software Configuration
12
TripleOとHeat (4)
● Resource Group
13
TripleOとHeat (5)
● コントローラノードのリソース
14
TripleOとHeat (6)
● コントローラ全体のリソース
15
TripleOの歴史
● 元々HP主導で開発
– Helion 1.x
– RHOSP7 (OSP-director)
● HPがHelion 2.xでTripleOを捨てる
– Ansibleベースのインストーラに乗り換え
● TripleO使ってるのってRDO Managerだけじゃね?
● じゃRDO Managerを "TripleO" と呼ぼう!
https://www.rdoproject.org/blog/2016/02/rdo-manager-is-now-tripleo/
16
TripleOでできること
● そこそこ柔軟なネットワーク構成
– Internal API, Storage, Storage Management, Tenant, External
● 複数NICと各ネットワークのマッピング
● NICの冗長化
– Linux bonding
– OVS bonding
● コントローラの冗長化
● Cephセットアップ
– TripleOでCephも構築
– 手動構築した外部Cephとの接続設定
● Third party driver/plugin integration
17
典型的なネットワーク構成
18
overcloud構築の流れ (1)
● undercloud構築
– 手動でOSインストール
– python-tripleoclientのインストール
– undercloud.confの作成
– undercloudインストール実行
● イメージの作成
● イメージの登録
$ openstack undercloud install
$ openstack overcloud image build --all
$ openstack overcloud image upload
19
overcloud構築の流れ (2)
● overcloud定義
– overcloudノードの定義
– overcloudノードのディスカバー
– overcloudノードのタグ付け
● 手動、自動
– TripleO Heat Templateの作成
● overcloud構築
20
overcloudノードの定義
● json手書き
– CPU数
– メモリ
– ディスク
– 電源制御方法
– PXEブート用NICのMACアドレス
{
"nodes": [
{
"arch": "x86_64",
"cpu": "2"
"memory": "5120",
"disk": "40",
"pm_type": "pxe_ipmitool",
"pm_addr": "IPMI_IP_ADDR",
"pm_user": "IPMI_USER",
"pm_password": "IPMI_PASSWORD",
"mac": [
"52:54:00:06:22:11"
],
},
(略)
]
}
$ openstack baremetal import --json ~/instackenv.json
$ openstack baremetal configure boot
21
overcloudノードのディスカバー
● ハードウェア情報の収集
– ディスカバー用のPXEイメージで起動
● 設定しておくと、ディスカバー時に自動的にベ
ンチマークを流してパフォーマンス実測値も同
時に収集可能
– sysbench使用
$ openstack baremetal introspection bulk start
$ ironic node-set-maintenance [NODE UUID] true
$ openstack baremetal introspection start [NODE UUID]
$ ironic node-set-maintenance [NODE UUID] false
●
1台ずつディスカバー実行
●
全台同時にディスカバー実行
22
自動タグ付け
● 自動タグ付けのルー
ルを書く
● ルールのimport
● ディスカバリ実行
[
{
"description": "Fail introspection for unexpected nodes",
"conditions": [
{
"op": "lt",
"field": "memory_mb",
"value": 4096
}
],
"actions": [
{
"action": "fail",
"message": "Memory too low, expected at least 4 GiB"
}
]
},
{
"description": "Assign profile for object storage",
"conditions": [
{
"op": "ge",
"field": "local_gb",
"value": 1024
}
],
"actions": [
{
"action": "set-capability",
"name": "profile",
"value": "swift-storage"
}
]
}
]
$ openstack baremetal introspection rule import rules.json
$ openstack baremetal introspection bulk start
$ openstack baremetal profiles list
23
Heatテンプレート作成
● ネットワーク定義
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/cinder-storage.yaml
OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/ceph-storage.yaml
parameter_defaults:
InternalApiNetCidr: 172.16.201.0/24
TenantNetCidr: 172.16.202.0/24
StorageNetCidr: 172.16.203.0/24
StorageMgmtNetCidr: 172.16.204.0/24
ExternalNetCidr: 10.1.1.0/24
InternalApiAllocationPools: [{'start': '172.16.201.210', 'end': '172.16.201.240'}]
TenantAllocationPools: [{'start': '172.16.202.210', 'end': '172.16.202.240'}]
StorageAllocationPools: [{'start': '172.16.203.210', 'end': '172.16.203.240'}]
StorageMgmtAllocationPools: [{'start': '172.16.204.210', 'end': '172.16.204.240'}]
# Leave room for floating IPs in the External allocation pool
ExternalAllocationPools: [{'start': '10.1.1.210', 'end': '10.1.1.240'}]
# Set to the router gateway on the external network
ExternalInterfaceDefaultRoute: 10.1.1.1
# Gateway router for the provisioning network (or Undercloud IP)
ControlPlaneDefaultRoute: 10.0.9.254
# The IP address of the EC2 metadata server. Generally the IP of the Undercloud
EC2MetadataIp: 10.0.9.200
# Define the DNS servers (maximum 2) for the overcloud nodes
DnsServers: ["10.0.250.25","10.0.200.25"]
InternalApiNetworkVlanID: 201
TenantNetworkVlanID: 202
StorageNetworkVlanID: 203
StorageMgmtNetworkVlanID: 204
ExternalNetworkVlanID: 100
# Set to "br-ex" if using floating IPs on native VLAN on bridge br-ex
NeutronExternalNetworkBridge: "''"
# Customize bonding options if required
BondInterfaceOvsOptions:
"bond_mode=active-backup"
24
Heatテンプレート作成
● ノードごとのNIC定義
resources:
OsNetConfigImpl:
type: OS::Heat::StructuredConfig
properties:
group: os-apply-config
config:
os_net_config:
network_config:
-
type: interface
name: nic1
use_dhcp: false
addresses:
-
ip_netmask:
list_join:
- '/'
- - {get_param: ControlPlaneIp}
- {get_param: ControlPlaneSubnetCidr}
routes:
-
ip_netmask: 169.254.169.254/32
next_hop: {get_param: EC2MetadataIp}
-
type: interface
name: nic2
use_dhcp: false
defroute: false
-
type: interface
name: nic3
use_dhcp: false
defroute: false
-
type: ovs_bridge
name: {get_input: bridge_name}
dns_servers: {get_param: DnsServers}
members:
-
type: ovs_bond
name: bond1
ovs_options: {get_param: BondInterfaceOvsOptions}
members:
-
type: interface
name: nic4
primary: true
-
type: interface
name: nic5
-
type: vlan
device: bond1
vlan_id: {get_param: ExternalNetworkVlanID}
addresses:
-
ip_netmask: {get_param: ExternalIpSubnet}
routes:
-
default: true
next_hop: {get_param: ExternalInterfaceDefaultRoute}
-
type: vlan
device: bond1
vlan_id: {get_param: InternalApiNetworkVlanID}
addresses:
-
ip_netmask: {get_param: InternalApiIpSubnet}
-
type: vlan
device: bond1
25
Heatテンプレート作成
● ストレージ定義
parameter_defaults:
#### BACKEND SELECTION ####
## Whether to enable iscsi backend for Cinder.
CinderEnableIscsiBackend: false
## Whether to enable rbd (Ceph) backend for Cinder.
CinderEnableRbdBackend: true
## Whether to enable NFS backend for Cinder.
# CinderEnableNfsBackend: false
## Whether to enable rbd (Ceph) backend for Nova ephemeral storage.
NovaEnableRbdBackend: true
## Glance backend can be either 'rbd' (Ceph), 'swift' or 'file'.
GlanceBackend: rbd
#### CINDER NFS SETTINGS ####
## NFS mount options
# CinderNfsMountOptions: ''
## NFS mount point, e.g. '192.168.122.1:/export/cinder'
# CinderNfsServers: ''
#### GLANCE FILE BACKEND PACEMAKER SETTINGS (used for mounting NFS) ####
## Whether to make Glance 'file' backend a mount managed by Pacemaker
# GlanceFilePcmkManage: false
## File system type of the mount
# GlanceFilePcmkFstype: nfs
## Pacemaker mount point, e.g. '192.168.122.1:/export/glance' for NFS
# GlanceFilePcmkDevice: ''
## Options for the mount managed by Pacemaker
# GlanceFilePcmkOptions: ''
#### CEPH SETTINGS ####
ExtraConfig:
ceph::profile::params::osd_pool_default_size: 1
ceph::profile::params::osds:
'/dev/vdc':
journal: '/dev/vdb'
'/dev/vdd':
journal: '/dev/vdb'
'/dev/vde':
journal: '/dev/vdb'
26
overcloud構築
● コマンド一発
$ openstack overcloud deploy 
--templates /usr/share/openstack-tripleo-heat-templates 
--ntp-server 10.0.9.10 
--libvirt-type kvm 
--control-scale 3 
--compute-scale 2 
--ceph-storage-scale 1 
--control-flavor control 
--compute-flavor compute 
--ceph-storage-flavor ceph-storage 
--neutron-tunnel-types vxlan 
--neutron-network-type vxlan 
-e ~/templates/storage-environment.yaml 
-e ~/templates/network-isolation-static.yaml 
-e ~/templates/network-environment.yaml 
-e ~/templates/timezone.yaml 
-e ~/templates/all.yaml
27
TripleOの光
28
TripleOの光
● OpenStack基盤の管理をOpenStack APIでできる
– いろいろ自動化しやすい
– AnsibleのDynamic Inventoryとか活用
● Tempestの準備もやってくれる
● コントローラの冗長化ができる
● ノード追加が楽
– 追加可能: computeノード、cephノード
● 追加ノードを定義→ディスカバー→デプロイ再実行
– 削除可能: computeノード
29
コントローラノードの冗長化
● コントローラノードの構成
– 全てのコントローラ系プロセスがコントローラノー
ドで動く
● サービスごとにノードをわけるのは、現時点では不可能
– HAProxyで負荷分散
● VIPはTHTで定義したネットワークごとにひとつ
● 冗長化
– 3台構成、shared nothing
– Pacemaker使用
– RabbitMQ Mirrored Queue
– MariaDB Galera Cluster
30
コントローラノードの冗長化
31
TripleOの光
● Cephの自動構成
– 3台冗長化コントローラ上でmonが動く
– osdノードは独立したノードが必要
● コンピュートノードとosdノードの同居は開発中 (のは
ず)
● Swift Objectノードの外出し
● Block Storageノードの外出し
32
TripleOの光
● 他のプロジェクトの品質向上に貢献
Ironic Puppet
OpenStack
Heat http://stackalytics.com/
NewtonのCommitランキング (2016-05-25時点)
33
他製品との連携
● コントローラ用Load Balancerの外出し
– デフォルトはコントローラ上で動くHAProxy
● Cinder
– Dell Storage Center
– Dell Equal Logic
– NetApp
● Neutron
– ML2 BigSwitch
– ML2 Cisco Nexus 1000V
– ML2 Cisco Nexus UCS Manager
– MidoNet
– Nuage
– OpenContrail
34
TripleOの闇
35
GUIがない
● 当初、Tusker UIというWebインターフェースがあった
→Tusker消滅
– http://lists.openstack.org/pipermail/openstack-dev/2013-September/0
15296.html
– http://lists.openstack.org/pipermail/openstack-dev/2013-September/0
15599.html
● TripleO GUIは鋭意開発中
– https://www.youtube.com/watch?v=Jjw4LwcywLE
– https://www.youtube.com/watch?v=1Lc04DKGxCg
36
TripleOの闇
● Heatリソースでかすぎ...
$ heat stack-list
+--------------------------------------+------------+-----------------+---------------------+--------------+
| id | stack_name | stack_status | creation_time | updated_time |
+--------------------------------------+------------+-----------------+---------------------+--------------+
| 4e279875-5498-4c32-a2eb-fc339fc86395 | overcloud | CREATE_COMPLETE | 2016-05-24T01:46:54 | None |
+--------------------------------------+------------+-----------------+---------------------+--------------+
$ heat stack-list --show-nested | wc -l
185
37
38
39
40
TripleOの闇
● Heatリソースでかすぎ...
41
TripleOの闇
● Heatリソースでかすぎ...
42
43
44
TripleOの闇
● OSを手動で入れた後にOpenStack設定をする
のは不可
● confファイルの設定変更はTHT経由が推奨
● 個々のパッケージのアップデートもTripleOか
ら実施するのが推奨
● というか誤ってheat stack deleteすると...
– policy.json is your friend
"stacks:delete": "rule:deny_everybody"
45
TripleOの闇
● IPアドレスが決め打ちできない
– どのノードがどの番号のホスト名になるかわからない
– どのホスト名にどのアドレスがつくかわからない
● 魔法
– Nova filter: TripleOCapabilitiesFilter
できるようになりました!

More Related Content

PPTX
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
PDF
TripleO Deep Dive 1.1
PDF
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
PDF
TripleO Deep Dive
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PPTX
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
PDF
AlmaLinux と Rocky Linux の誕生経緯&比較
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
TripleO Deep Dive 1.1
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
TripleO Deep Dive
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
AlmaLinux と Rocky Linux の誕生経緯&比較
今だからこそ知りたい Docker Compose/Swarm 入門

What's hot (20)

PDF
CentOS Linux 8 の EOL と対応策の検討
PDF
最近のOpenStackを振り返ってみよう
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PDF
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
PDF
PG-REXで学ぶPacemaker運用の実例
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
PDF
OpenStack勉強会
PDF
日本OpenStackユーザ会 第37回勉強会
PDF
試して覚えるPacemaker入門 『リソース設定編』
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
PDF
大規模DCのネットワークデザイン
PPTX
本当は恐ろしい分散システムの話
PDF
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
PDF
PDF
大規模環境のOpenStack アップグレードの考え方と実施のコツ
PPTX
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
ファイルシステム比較
PDF
Scapyで作る・解析するパケット
CentOS Linux 8 の EOL と対応策の検討
最近のOpenStackを振り返ってみよう
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
PG-REXで学ぶPacemaker運用の実例
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Pacemaker + PostgreSQL レプリケーション構成(PG-REX)のフェイルオーバー高速化
OpenStack勉強会
日本OpenStackユーザ会 第37回勉強会
試して覚えるPacemaker入門 『リソース設定編』
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
大規模DCのネットワークデザイン
本当は恐ろしい分散システムの話
VirtualBox と Rocky Linux 8 で始める Pacemaker ~ VirtualBox でも STONITH 機能が試せる! Vi...
大規模環境のOpenStack アップグレードの考え方と実施のコツ
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
Dockerfile を書くためのベストプラクティス解説編
ファイルシステム比較
Scapyで作る・解析するパケット
Ad

Similar to TripleOの光と闇 (20)

PDF
成長を加速する minne の技術基盤戦略
PDF
20190926_Try_RHEL8_NVMEoF_Beta
PDF
OpenStackでつくる開発環境と外道塾
PDF
Apache cloudstack4.0インストール
PDF
InfiniBand on Debian
PDF
Apache CloudStack 4.0 インストール(ver0.5)
PDF
Hadoop on LXC
PDF
Presto on YARNの導入・運用
PDF
ゲームのインフラをAwsで実戦tips全て見せます
PPTX
Cloudstack user group meeting in osaka
PDF
tcpdump & xtrabackup @ MySQL Casual Talks #1
PDF
OSC 2011 Hokkaido 自宅SAN友の会(後半)
PDF
CloudStackユーザ会 OSC.cloud
KEY
Web Operations and Perl kansai.pm#14
PDF
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
PDF
20210731_OSC_Kyoto_PGStrom3.0
PDF
20140612_Docker上でCloudStackを動かしてみる!!
PDF
How to use Ceph RBD as CloudStack Primary Storage
PDF
Openstack+Ceph設定ガイド
PDF
Dockerの仕組みとIIJ社内での利用例
成長を加速する minne の技術基盤戦略
20190926_Try_RHEL8_NVMEoF_Beta
OpenStackでつくる開発環境と外道塾
Apache cloudstack4.0インストール
InfiniBand on Debian
Apache CloudStack 4.0 インストール(ver0.5)
Hadoop on LXC
Presto on YARNの導入・運用
ゲームのインフラをAwsで実戦tips全て見せます
Cloudstack user group meeting in osaka
tcpdump & xtrabackup @ MySQL Casual Talks #1
OSC 2011 Hokkaido 自宅SAN友の会(後半)
CloudStackユーザ会 OSC.cloud
Web Operations and Perl kansai.pm#14
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
20210731_OSC_Kyoto_PGStrom3.0
20140612_Docker上でCloudStackを動かしてみる!!
How to use Ceph RBD as CloudStack Primary Storage
Openstack+Ceph設定ガイド
Dockerの仕組みとIIJ社内での利用例
Ad

Recently uploaded (12)

PDF
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
PPTX
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
PDF
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
PDF
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
PDF
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
PDF
20250823_IoTLT_vol126_kitazaki_v1___.pdf
PDF
Working as an OSS Developer at Ruby Association Activity Report 2025
PDF
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
PPTX
Vibe Codingを触って感じた現実について.pptx .
PPTX
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
翔泳社 「C++ ゼロからはじめるプログラミング」対応 C++学習教材(三谷純)
生成AIとモデルベース開発:実はとても相性が良いことを説明します。まあそうだろうなと思われる方はご覧ください。
20250826_Devinで切り拓く沖縄ITの未来_AI駆動開発勉強会 沖縄支部 第2回
ココロ分解帳|感情をやさしく分解し自分と他者を理解するためのモバイルノートアプリ
Yamaha DT200WR Real Enduro ENGINE CYLINDER TRANSMISSION
20250823_IoTLT_vol126_kitazaki_v1___.pdf
Working as an OSS Developer at Ruby Association Activity Report 2025
Geminiの出力崩壊 本レポートは、Googleの大規模言語モデル「Gemini 2.5」が、特定の画像と短文入力に対して、誤った地名を推定し、最終的に...
Vibe Codingを触って感じた現実について.pptx .
Cosense - 整えずして完全勝利!Cosenseが他のwikiツールと違う理由
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...

TripleOの光と闇