OpenStack Fast Track 
1 
若葉マークStackerのStacker教習所
“... OpenStackを活用することは容易ではなく ...” 
http://news.mynavi.jp/news/2014/10/29/114/ 
2
“... OpenStackのセットアップと日常の運用が、 
当初の難しさを引きずっている ...” 
http://jp.techcrunch.com/2014/11/04/20141103a-maturing-openstack- 
prepares-to-take-on-new-challenges/ 
3
4 
ほんと?
自己紹介 
名前 
田上 亮 (たがみ りょう) 
所属 
株式会社サイバーエージェント アドテク本部 
Stacker歴 
半年くらい 
5
本日のアジェンダ 
6
こんなStackを作りました 
スペック 
設計 
冗長化 
構築と運用 
構築の自動化 
運用の自動化 
7
こんなStackを作りました 
8
スペック 
設計 
冗長化 
9
スペック 
10
Computeノード数: 51台 
用途: 本番サービス用 
構築期間: 1.5人で1ヶ月 
11
ノードのスペック 
CPU Xeon E5-2470 v2 
(2.4GHz, 10C/20T) * 2 
Memory 16GB * 10 
Disk 480GiB SSD * 4 (RAID5) 
NIC Intel X540 10Gbps DP * 1 
12
クラウドのスペック 
13 
1台51台 
CPU 20C/40T 1020C/2040T 
メモリ160GB 8TB 
ディスク1440GiB 73TiB
設計 
14
公式Docs++ 
公式Docsの 
“Install OpenStack”に 
従って作れば(一応)動く 
公式に近い形にすると 
楽に早く動かせる 
15
公式Docsからの変更点 
コントロールプレーンを冗長化する 
データプレーンを冗長化しない(で済むようにする) 
16
使用したコンポーネント 
17 
認証Keystone 
イメージストアGlance 
コンピュートNova 
ネットワークNeutron 
オブジェクトストアSwift 
WebポチHorizon
必要なモノ 
サーバ (たくさん) 
冗長化されたL2スイッチ 
冗長化されたL3スイッチ 
冗長化された箱物LB 
18
必要な周辺機能 
ベアメタルプロビジョニング 
パッケージレポジトリ 
DNS (正引き/逆引き) 
syslog 
19
アンダークラウド 
クラウドを動かすためのクラウド (鶏と卵) 
OpenStackのコントロールプレーン 
周辺サービス 
要件 
統合管理 
共有ストレージ無しでライブマイグレーション 
20
全体のイメージ 
21 
mysqld 
rabbitmq-server 
keystone-all 
UnderCloud 
コントロールプレーンデータプレーン 
glance-api 
glance-registry 
nova-api 
nova-cert 
nova-conductor 
nova-consoleauth 
nova-novncproxy 
nova-scheduler 
nova-xvpvncproxy 
neutron-server 
swift-proxy-server 
dnsmasq 
(neutron-dhcp-agent) 
KVM 
(nova-compute) 
Open vSwitch 
(neutron-openvswitch- 
agent) 
swift-object-server 
swift-object-server 
swift-account-server 
swift-container-server
コンピュート 
オーバーコミットしない 
cpu_allocation_ratio = 1.0 
disk_allocation_ratio = 1.0 
ram_allocation_ratio = 1.0 
reserved_host_disk_mb = 10240 
reserved_host_memory_mb = 2048 
22
フレーバー 
23 
CPU(vCPU) メモリ(GB) ディスク(GB) 
tiny 1 3.5 32 
small 2 7 64 
medium 4 14 128 
large 8 28 256 
xlarge 10 35 320 
xxlarge 12 42 384
ネットワーク 
Neutronの標準機能のみ 
Neutron L3 Agentを使わない 
VLAN Type Driverを使う 
テナントにProvider Networkを直接割り付け 
Neutron Metadata Agentが使えない 
自前で169.254.169.254を転送 
24
ネットワーク 
$ sudo cat ml2_conf.ini | grep -v -e '^#' -e '^$' 
[ml2] 
type_drivers = vlan 
tenant_network_types = vlan 
mechanism_drivers = openvswitch 
[ml2_type_flat] 
[ml2_type_vlan] 
network_vlan_ranges = physnet1:1:4094 
[ml2_type_gre] 
[ml2_type_vxlan] 
[securitygroup] 
enable_security_group = True 
firewall_driver = 
neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriv 
er 
[ovs] 
bridge_mappings = physnet1:br-physnet1 
25
ネットワーク 
$ neutron net-create net-v123  
--provider:network_type vlan  
--provider:physical_network physnet1  
--provider:segmentation_id 123 
--tenant-id $TID 
$ neutron subnet-create net-v123 "192.0.2.0/24"  
--name subnet-v123  
--gateway "192.0.2.1"  
--allocation-pool "start=192.0.2.11,end=192.0.2.199"  
--dns-nameserver "8.8.8.8"  
--tenant-id $TID 
26
ストレージ 
ブロックストレージはインスタンスストアのみ 
インスタンスストアはRAID5で保護 
Glanceの冗長化の為にSwiftが必要 
27
冗長化 
28
MariaDB Galera Cluster 
29 
MariaDB 
Galera Cluster #1 
MariaDB 
Galera Cluster #2 
MariaDB 
Galera Cluster #3 
VIP
RabbitMQ 
30 
RabbitMQ #1 RabbitMQ #2 RabbitMQ #3
OpenStack コンポーネント 
31 
DB 
VIP 
Rabbit 
MQ 
Cluster 
とある 
コンポーネント #1 
とある 
コンポーネント #2
glance-api 
☓: default_store=file 
○: default_store=swift 
32
nova-consoleauth 
memcached_servers=192.0.2.1:11211,192.0.2.2:11211 
33
neutron-dhcp-agent 
neutron-dhcp-agentが起動している物理マシン * 3 
dhcp_agents_per_network = 3 
34
構築と運用 
35
構築 
36
構築方法 
37 
☓ 手てど動う努力 
△ OpenStack 
インストーラ 
PackStack 
JuJu 
FUEL 
… 
◎ 汎用ツール 
Puppet 
Chef 
Ansible 
…
構成管理 
SCMにコミット 
複数環境に対応 
冪等 
完全自動化 
38
開発・検証環境 
39 
https://www.flickr.com/photos/ejpphoto/2314610838 https://www.flickr.com/photos/eulenfan/9471676777
運用 
40
オーケストレーション 
Jenkins 
ビルドトリガ 
screen/tmux代わり 
ロギング 
ワークフロー(MultiJob Plugin) 
通知 
41
ワークフロー 
42 
再インストール 
ansible-playbook 
初期設定 
テスト 
git commit 
ansible-playbook 
git push
ワークフロー 
43 
git push … upstream/master 
ansible-playbook
まとめ 
44
こんなStackを作りました 
スペック 
設計 
冗長化 
構築と運用 
構築の自動化 
運用の自動化 
45

サイバーエージェント様 導入事例:OpenStack Fast Track – 若葉マークStackerのStacker教習所 - OpenStack最新情報セミナー 2014年12月