Contenu connexe Similaire à 1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud (20) 1st OCDET Baremetal MTG OpenStack baremetal compute by GMO AppsCloud2. GMOアプリクラウドでのOpenStack Baremetal
・GMOアプリクラウド と Baremetal computing
・OpenStack Ironicから見たベアメタルに必要な要素
・昔、今、現在進行形で使っているベアメタルツール
・kickstart/preseed
・Relax-and-Recover
・cobbler + php + DB + Excel
・OpenStack Baremetal Compute(Ansible
driver modified) + Ansible + cobbler + lldptool +
Router.py
・[検証中]OpenStack Ironic Hyper-visor(IPA:
Ironic Python Agent) + cloud-init + lldptool +
Router.py (技術検証中)について [高田、柳]
2
アジェンダ
8. GMOアプリクラウドでのOpenStack Baremetal
a) 共有Networkがある場合、IP-MAC Addressのセキュ
リティ設定(IP/MAC/ARP/dhcp spoofing対策)
(Exp] Cisco; port-security mac-address, etc.)
b) 課金量計処理
とりあえず、OpenStackではFlavorがBaremetalを
示したnova instance(server)として;
=>> Ceilomenter (OpenStackの場合)
c) 入会課金情報管理
web GUIなど
8
さらに、XaaSとして提供するには
9. GMOアプリクラウドでのOpenStack Baremetal
d) Hardware Monitoring/Management
IBM: Director Server
DELL: OpenManage Server Admin.(Dell-CIM)
HP: Systems Insight Manager
Supermicro: IPMI, SMCIPMITool
IPMI(DCMI): Zabbix, etc.
OpenStack Baremetal Compute/Ironicの
Interfaceとしても利用するので必要
(Power on/off, state, serial console, virtual
media)
Ironic Hyper-visorの抽象化の恩恵(まだまだだが)
>> さて、Baremetalはこれまで、どうしてきた?
9
さらに、XaaSとして提供するには#2
10. GMOアプリクラウドでのOpenStack Baremetal
1) kickstart/preseed install (without cobbler)
10
利用しているベアメタルツール: 昔、今、現在進行形
時期 2008年ぐらいまで、少数だと今でもたまに
Virtual Mediaなどで利用
Boot Network(dhcp+tftp+pxe), Virtual Media,
USB
OS Linux系(当初CentOS 5, Ubuntu 10.4)
OS Network setup Human (Manual setting) or shell script
NW Switch setup Human
設定台数 1, or 少数
利用範囲 非商用サービスのサーバ、開発サーバなど
大量生産には向かない
ネットワークインストールには、ローカルリポジト
リがあったほうが良い
11. GMOアプリクラウドでのOpenStack Baremetal
2) Relax-and-Recover( rear )
11
利用しているベアメタルツール: 昔、今、現在進行形
時期 2014 ‒ (実は最近)
Boot boot(Virtual Media, USB, pxe) + ISO,NFS,
etc.
OS Linux系 (SuSE ?)
URL http://relax-and-recover.org/
https://github.com/rear
OS Network setup Manual (cloned origin conf, shell script)
NW Switch setup Human
設定台数 1, or 数十台
利用範囲 OpenStack Computeのcloneに利用、本来
バックアップ用途、バックアップ元がliveで使える
12. GMOアプリクラウドでのOpenStack Baremetal
3) Cobbler + php(expect) + DB + Excel
12
利用しているベアメタルツール: 昔、今、現在進行形
時期 2011/07 ‒ 現在まで(GMOアプリクラウド)
Boot Pxeboot, ISO Virtual Media boot
OS Linux, python 2.6 or lator
URL http://www.cobblerd.org/
OS Network setup Manual (cloned origin conf, shell script)
NW Switch setup Manual + php-expect script(Network
Team作成)(対象スイッチ:
Cisco: Catalyst(IOS), Nexsus(NXOS),
Brocade: VDX)
LB: Brocade ADX
設定台数 同時構築 1 or 数台
利用範囲 GMOアプリクラウド非OpenStack環境で利用、
cobbler用のIP:MAC addressのInventory情
報がExcelで管理されていて、phpのAPI経由で商
材DBからvlanなど取得してデプロイする
15. GMOアプリクラウドでのOpenStack Baremetal
4) OpenStack Baremetal Compute(Ansible
driver modified) + Ansible + cobbler + lldptool +
Router.py
15
利用しているベアメタルツール: 昔、今、現在進行形
時期 2014/04/22 ‒ 現在まで(GMOアプリクラウド)
Boot Pxeboot (cobbler)
OS Linux, python 2.6 or lator
OS Network setup Ansible script
NW Switch setup Ansible + lldpd + lldptool + Router.py
(NXOS patched by GMO)
設定台数 同時構築 1 or 数台
利用範囲 GMOアプリクラウド OpenStack Havana環境
で利用
(今現在は、お名前.comクラウドも同じ仕組で動作
しています)
17. GMOアプリクラウドでのOpenStack Baremetal
1) コンパネで申し込み or APIとして、
Mailが流れてくる、在庫調整確認(ここだけ手動)
物理サーバタイプ(baremetal flavor)
[a] HDD + disk SSD cached
[b] HDD + ioDrive2 768GB
2) IDC自動構築をスタッフツールで実行
nova boot ‒flavor=bare_flavor dummy-baremetal-img
>ここをOpenStack Baremetal Computeで自動化
> Ansible + cobblerに処理が渡される
3) 検品(serverspec)、提供(nova status DB更新)
GMOアプリクラウド(OpenStack Berametal
Compute)専用サーバ
19. GMOアプリクラウドでのOpenStack Baremetal
Baremetal seq: 0) 機材登録
baremetal-set-console(conserverの設定)
nova baremetal-node-create : (IPMI IP addr, NIC1 MAC addr)
nova baremetal-interface-add : (NIC2 MAC, NIC3 MAC, NIC4 MAC)
MACなどは、cobbler上のExcel利用
21. GMOアプリクラウドでのOpenStack Baremetal
nova boot seq: 2) generate data(host_vars)
for Ansible on
bare-comp node
Ansibleのdataで読み込まれるyaml data(host_vars)を生成
- root pw, ssh public key, VLAN(ext, int), IP address(ext, int),
Flavor(host type), Image(OS type), target node(IPMI IP addr)
22. GMOアプリクラウドでのOpenStack Baremetal
nova boot seq: 3) copy Ansible host_var.yaml
to cobbler node
Ansibleのdataで読み込まれるyaml dataをcobbler nodeのansible
playbook 領域にコピー
./baremetal/ansible/host_vars/<host_name>.yml
23. GMOアプリクラウドでのOpenStack Baremetal
nova boot seq: 4) exec cobbler system add
cobblerにsystemオブジェクトの登録(OSの選定)
cobbler system add -‒name=<host_name>
--profile=<OS_type_kick_profile> --interface=eth0 -‒mac=<MAC>
cobbler sync (pxe boot情報更新)
25. GMOアプリクラウドでのOpenStack Baremetal
nova boot seq: 6) (in Ansible) lldptool network
Switch discovery
and SW setup
(Ansible) cobblerでOSインストール後、再起動
lldpadを起動、lldptool で SW の {SW hostname, sw IP, Port ID} 情報
を取得、SW設定APIをcallして、SWのallowed VLANにVLAN(ext, int)の
許可する設定をいれる
26. GMOアプリクラウドでのOpenStack Baremetal
nova boot seq: 7) (in Ansible) setting up OS
bonding network
and VLAN(ext, int)
(Ansible) SWの設定が終わったら、OSのbonding設定、
VLAN(ext, int)の設定を投入、疎通を確認する
>> ioDrive2などoptionがある場合には、ここでセットアップ、マウントする
27. GMOアプリクラウドでのOpenStack Baremetal
nova boot seq: 8) (in Ansible) configuration
test (serverspec)
(Ansible) VLAN dhcpをallowed VLANから外して、再起動。
設定、ネットワークの疎通など確認をserverspecなどで実行、
検品できたら、nova bootのstatusを ACTIVE にする
28. GMOアプリクラウドでのOpenStack Baremetal
ここまで、summary
• OpenStack Havana の Baremetal Computeの処理を改修
して、nova bootの過程でAnsibleを呼び出し、処理として
cobbler のインストール、Network SWの設定を行ってサービ
スを提供している。
>> cobblerの特性として、OSのインストールに時間がかかり(30min ‒ 60min)、OS
の種類に限定されてしまう問題がある
>> OSの種類を自由にするには、やはり、OS Imageのwhole image writeでOSが展
開できることが求められる
• OpenStack Juno以降で、IPA(Ironic Python Agent)によ
る、whole image writeができるようだ
Example) rackspace: OnMetal
>> ネットワーク構成が、GMO AppsCloudと似ている
• その検証について、今現在進行形の内容をここから紹介します
29. 29
第1回 OCDET ベアメタルWG 勉強会
GMOインターネット システム本部 高田 真澄, 柳 匡哉
1. Ironic触ってみて
2. ローカルブートできんの?
3. Swift使わないようにできる?
目次
30. 30
1. Ironic触ってみて
# yum install openstack-packstack
# yum install openstack-ironic-api openstack-ironic-common openstack-ironic-conductor
☆ OSは、ubuntu14.0.4 と Centos 7を選択
☆ Ironicドライバーは、pxe_ssh
☆ 空VMをBaremetalサーバーと見立て検証開始!
■ コンポーネントインストール (CentOS7の場合)
■ 検証環境ネットワーク設定
・ ブリッジはDevstackを真似てOpen vSwitchを採用
⇒ Devstackのセットアップログを探ること数日、見えてきた全容
⇒ いろいろ設定足りてないなー
・ サクッとyumでpackstackとironicをインストール
32. 32
[1] 初期起動用ramdiskイメージ準備
# ./bin/ramdisk-image-create ubuntu deploy-ironic -o ubuntu-ramdisk
[2] qcow2イメージ 作成
# ./bin/disk-image-create fedora -o fedora.qcow2
[3] vmlinuz&initrd 作成 (cent7はbusyboxがrepositoryに無い為エラーに)
# ./bin/disk-image-get-kernel -d ./ -o fedora -i ./fedora.qcow2
■ イメージ準備
・イメージの準備にはdiskimage-builderを採用
・pxe系ドライバーには、以下コマンドで作成される5つのイメージが必要
■ 空VM準備
・空VMの準備はvirt-installで行い、必要箇所をxml直接編集
・ –pxeでネットワークブートを指定
virt-install --connect qemu:///system --name baremetalbrbm_0 --vcpus=1 --ram 1024
--disk path=/var/lib/libvirt/images/baremetalbrbm_0.qcow2,bus=virtio,size=12,cache=writeback
--network network=brbm,model=virtio --pxe
--os-type=linux --boot network,menu=off --noautoconsole --nographics
33. 33
■ tftp-server設定
・tftp-serverをIronicに適した形でconfig (重要箇所抜粋)
● yumでインストール
# yum install tftp-server syslinux-tftpboot tftp
● iptables設定
# iptables -I INPUT 6 -p udp -m udp --dport 69 -m comment --comment "tftp server" -j ACCEPT
● カーネルモジュール読み込み(snat経由のtftp接続対応)
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
● map-file準備 (このファイルで、Ironicからノード毎のconfigに読み換えている)
# cd /var/lib/tftpboot
# vi map-file
■ iSCSI確認
・iscsidが動いていればiscsiは停止していてよいっぽい。
● ステータス
# systemctl status iscsid
● ノード
# ls -la /var/lib/iscsi/nodes/
34. 34
■ Baremetalデプロイ時に遭遇したエラー
Filter RamFilter returned 0 host
⇒ ironic用ノードが正常に登録されていないことが原因
⇒ Power StateがOffのノードがあることを確認
waiting for callbackステータスから進まない
⇒ ironicデプロイはdhcp, tftpboot, iSCSI等openstack外の要素が多々
⇒ tcpdumpや/var/log/messagesを参考にエラー対応
tftpd: read: Connection refused
⇒ nat越しにtftpのポートに接続できないことが原因
⇒ iptablesにip_nat_tftp, ip_conntrack_tftpモジュールロード
deployingステータスから進まない
⇒ OSイメージ書き込み処理に時間がかかっているか、処理が停止している
⇒ VMのコンソールを確認し、どの部分で止まっているか確認
⇒ デプロイイメージ自体が問題の可能性あり
ubuntu14.0.4でiSCSIターゲット マウント不可
⇒ CentOS7では発生しなかった為、残りの検証作業はCentOS7を採用
35. 35
2.ローカルブートできんの?
・pxe系ドライバーはサーバー再起動時等、常にネットワークブート
⇒ agent_ipmitoolドライバーで検証開始!
■ 構成変更ポイント
・ vxlan⇒flat構成に変更
・ DHCPはNamespaceを使わずブリッジ直結
・ glanceのバックエンドにswiftを利用しtemporaryイメージダウンロードurl発
行可能に
[1] Ironic Python Agentを含むRmadisk作成 (Fedoraベース)
# ./bin/disk-image-create -a amd64 fedora ironic-agent disable-selinux local-config -o ipa-deploy
[2] CentOS7 qcow2イメージ 作成
# ./bin/disk-image-create -a amd64 centos7 vm dhcp-all-interfaces disable-selinux local-config -o centos7.qcow2
■ イメージ準備
・ 必要なイメージがpxe系のドライバーと異なる
・ ‘Ironic Python Agent’をデプロイ時のRamdiskに仕込む必要あり
・ 現状、Ironic Python Agentのエレメントはfedoraにしか対応してない
・ qcow2イメージ作成は、エレメント‘vm’を付与しないとローカルブート失敗
37. 37
■ ひたすらエラー回避の道のり
Permission denied: '/tftpboot/...
⇒ 凡ミスw tftp_rootにironicに書き込み権限があるか確認
IPA動いて無いよ
⇒ これはバグ、作成したRamdiskでIPAはインストールされているが、startし
ていない状況、 diskimage-builderのスクリプト修正で対応
DHCP関連
⇒ DHCPセグメントはNative vlanで設定されているか
⇒ BareMetalサーバーが登録したMACのインタフェースでDHCP取得を行っ
ているか
PXE関連
⇒ tftpサーバーがDHCPセグメントに設定されているか(⇒ironic.conf
tftp_server)
⇒ dnsmasqのoptsファイル確認
38. 38
'Connection aborted.', error 113, 'No route to host'
⇒ BaremetalサーバーからSwiftへ接続できていないことが原因。
⇒ DHCPセグメントのラインがSwiftサーバーに設定されているか確認。
⇒ ironic.confのswift_endpoint_url確認
ImageDownloadError
⇒ swiftには接続できたが、認証エラー、 tmp_url設定が原因
デプロイ後またPXEブート
⇒ qcow2のイメージにMBRが書き込まれていないことが原因でHDDより起
動できずPXEブートをしている。MBRが書き込まれたqcow2イメージを準備す
る。
cloud-init走らない
⇒ Baremetalサーバーからneutron-metadata-agentのルーティングの問題
⇒ dnsmasq 設定確認、gatewayがironicになっているか。
■ 苦労したけど…
☆ ローカルブート可能!
☆ お!Windowsのデプロイ可能!