Translate

2013年8月12日月曜日

NIC1枚しか無い物理PCへCloudStack4.1をインストールする

前の記事でKVM重ねがけで実現していましたが、
やっぱり残念なので再度KVM重ねがけなしで
管理サーバ、DBサーバ、ストレージ、ホストすべて
1台の物理PCしかもNIC1枚で構築しなおしてみました。


ただ..この環境でセットアップすると
インスタンス作成まではうまくいきますが、
管理コンソール上のコンソール画面が動作しません。

All in Oneサーバ上でブラウザを開いても駄目でした。

詳細は次の記事に書いていますが..
KVM重ねがけの場合は親サーバから各セグメントが見えているので
親サーバ上のブラウザからなら問題なくコンソールは上がるのですが...




0. 用意したもの


・インターネット接続可能なセグメントに接続されたPC1台
 MouseComputer
 Core i7 1.2GHz×8
 HDD 500GB/Mem 8GB
 NIC 1枚(DHCP範囲外で固定IP割り当て、Proxyなし)
 ※PCによってはBIOSでIntelVTを有効化する必要がある
Ubuntu Server 12.04.2LTS CD-ROM
・Buffalo製WZR-HP-G450H
 家庭用ルータ
 デフォルト設定(リセットスイッチ押下→iフィルタオフ)
 LAN側:
  ルータのIP192.168.11.1
  DHCP有効範囲:192.168.11.2~65
  ※66番目以降は自由に固定IPを使える
・インターネット接続
 ルータのWAN側に接続
 プロクシ無しで接続できる
・クライアントPC(ルータにつながり、ブラウザが入っていればOK)

1. OSのインストール

  • Ubuntu Server12.04.2LTS CD-ROMメディアを挿入し電源オン
  • 日本語
  • Ubuntu Serverをインストール(I)
  • はい
  • 日本
  • 日本語
  • 日本語 - 日本語(かな 86) ※各自のキーボードによる
  • Alt + Shift
  • 戻る ※DHCPが引けたが固定IPを振る
  • ネットワークを手動で設定
  • 192.168.11.100
  • 255.255.255.0
  • 192.168.11.1
  • 192.168.11.1
  • william
  • royal ※ドメイン名は適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※OSアカウントは適当に変更すること
  • cloud ※パスワードは適当に変更すること
  • cloud
  • はい
  • いいえ
  • はい
  • ガイド - ディスク全体を使いLVMをセットアップする
  • SCSI1 (0,0,0) (sda) - 500.1 GB ATA Hitachi HDS72105 ※環境による
  • はい
  • はい
  • 499.8GB ※環境による
  • はい
  • いいえ
  • 空欄で次へ
  • 自動的にアップデートしない ※適宜変更
  • 続ける
  • はい
  • PCからCD-ROMを取り出す
  • 続ける ※再起動
  • cloud ※OSアカウントは適当に変更すること
  • cloud
  • sudo su -
  • cloud
  • vi .profile
 (最終行へ以下の1行を追加)
 export LANG=C
  • exit
  • sudo su -
  • cloud
  • vi /etc/sysctl.conf
 (最終行へ以下の2行を追加)
 net.ipv6.conf.all.disable_ipv6 = 1
 net.ipv6.conf.default.disable_ipv6 = 1
  • sysctl -p
  • vi /etc/apt/sources.list.d/cloudstack.list
 (新規:以下の行を追加)
 deb http://cloudstack.apt-get.eu/ubuntu precise 4.1
  • wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -


2. プライマリ/セカンダリストレージ構築

  • aptitude update && aptitude -y dist-upgrade && aptitude -y install ssh openntpd nfs-kernel-server bridge-utils
  • vi /etc/network/interfaces
 (iface eth0 inet static以降を以下のように変更)
 iface eth0 inet manual
 iface cloudbr0 inet static
  address 192.18.11.100
  netmask 255.255.255.0
  network 192.168.11.0
  broadcast 192.168.11.255
  gateway 192.168.11.1
  dns-nameservers 192.168.11.1
  dns-search royal
  bridge-ports eth0
  bridge-stp off
 auto cloudbr0
  • mkdir -p /export/primary /export/secondary
  • vi /etc/exports
 (最終行に以下の1行を追加)
 /export *(rw,async,no_root_squash,no_subtree_check)
  • exportfs -a
  • vi /etc/modprobe.d/nfs_lockd.conf
 (新規:以下の1行を追加)
 options lockd nlm_udpport=32769 nlm_tcpport=32803
  • vi /etc/default/nfs-kernel-server
 (修正前)
 RPCMOUNTDOPTS=--manage-gids
 (修正後)
 RCPMOUNTDOPTS="--port 892"
  • vi /etc/default/nfs-common
 (修正前)
 STATDOPTS=
 (修正後)
 STATDOPTS="--port 662 --outgoing-port 2020"
  • ufw allow 111
  • ufw allow 662
  • ufw allow 32769/udp
  • ufw allow 32803/tcp
  • ufw allow 2049
  • ufw allow 892
  • reboot

3. 管理サーバの構築

  • cloud ※OSへログインするユーザ
  • cloud
  • sudo su -
  • cloud ※聞かれない場合あり
  • aptitude -y install mysql-server cloudstack-management
  • cloud ※MySQLのrootパスワード
  • cloud
  • vi /etc/mysql/my.cnf
 ([mysqld]セクション内に以下の5行を追加)
 innodb_rollback_on_timeout=1
 innodb_lock_wait_timeout=600
 max_connections=350
 log-bin=mysql-bin
 binlog-format = 'ROW'
  • service mysql restart
  • cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:cloud
  • cloudstack-setup-management
  • mkdir -p /mnt/secondary
  • mount -t nfs 192.168.11.100:/export/secondary /mnt/secondary
  • mount -t nfs 192.168.0.1:/export/secondary /mnt/secondary
  • /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-mount-tmplt -m /mnt/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
  • umount /mnt/secondary
  • cd /mnt
  • rmdir secondary
  • reboot


4. ホストの構築

  • cloud ※OSログインユーザ
  • cloud
  • sudo su -
  • cloud ※聞かれない場合あり
  • passwd root
  • cloud ※OSのルートパスワードを設定
  • cloud
  • aptutude -y install kvm qemu-utils qemu-kvm libvirt-bin virtinst cloudstack-agent
  • vi /etc/default/libvirt-bin
 (修正前)
 libvirtd_opts="-d"
 (修正後)
 libvirtd_opts="-d -l"
  • vi /etc/init/libvirt-bin.conf
 (修正前:11行目)
 env libvirtd_opts="-d"
 (修正後:11行目)
 env libvirtd_opts="-d -l"
  • vi /etc/libvirtd/libvirtd.conf
 (以下の行をコメントアウト)
 listen_tls = 0
 listen_tcp = 1
 tcp_port = "16509"
 mdns_adv = 0
 (修正前)
 #auth_tcp = "sasl"
 (修正後)
 auth_tcp = "none"
  • service libvirt-bin restart
  • ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/
  • ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/
  • apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
  • apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
  • ufw allow proto tcp from any to any port 22
  • ufw allow proto tcp from any to any port 3922
  • ufw allow proto tcp from any to any port 1798
  • ufw allow proto tcp from any to any port 16509
  • ufw allow proto tcp from any to any port 5900:6100
  • ufw allow proto tcp from any to any port 49152:49216
  • ufw allow proto tcp from any to any port 9090
  • ufw allow proto tcp from any to any port 8250
  • ufw allow proto tcp from any to any port 8080
  • vi /etc/idmapd.conf
 (修正前)
 #Domain = localdomain
 (修正後)
 Domain = royal
  • vi /etc/sudores
 (11行目に以下の1行を追加し強制保存
 Defaults:cloud !requiretty
  • reboot

5. ゾーンの構築

※クライアントPCをルータの無線LANに接続(優先でもOK)
 DHCPにより192.168.11.2~65のいずれか1つ割り当てられる
※インターネットオプションでプロクシなし設定にしておく
  • ブラウザを起動
  • http://192.168.11.100:8080/client を開く
  • Language欄を「Japanese」に変更
  • ユーザ名「admin
  • パスワード「password
  • ドメインは空欄のまま
  • 「ログオン」ボタン押下

  • 「CloudStackを使用したことがあるので、このガイドをスキップする」押下

  • 「インフラストラクチャ」押下


  • ゾーンの「すべてを表示」押下


  • 「+ゾーンの追加」押下


  • 「基本」をチェック
  • 「Next」押下


  • 名前に「zone01」と入力
  • DNS1に「192.168.11.1」と入力 ※publicネットワークのDNS(NAT)として
  • 内部DNS1に「192.168.11.1」と入力 ※privateネットワークのDNS(NAT)として
  • ハイパーバイザを「KVM」に変更
  • 「Next」押下


  • 管理の「Edit」押下


  • KVMトラフィックラベルに「cloudbr0」と入力 ※privateネットワーク
  • 「OK」押下


  • ゲストの「Edit」押下


  • KVMトラフィックラベルに「cloudbr0」と入力 ※publicネットワーク
  • 「OK」押下


  • トラフィックの種類上の「ストレージ」アイコンをドラッグしてPhysical Network 1の破線部内へドロップ
  • ストレージの「Edit」押下


  • KVMトラフィックラベルに「cloudbr0」と入力 ※storageネットワーク
  • 「OK」押下
  • 「Next」押下


  • ポッド名に「pod01」と入力 ※privateネットワークの情報を設定
  • 予約済みシステムゲートウェイに「192.168.11.1」を入力
  • 予約済みシステムネットマスクに「255.255.255.0」を入力
  • 予約済み開始システムIPアドレスに「192.168.11.121」を入力
  • 予約済み終了システムIPアドレスに「192.168.11.140」を入力
  • 「Next」押下


  • ゲストゲートウェイに「192.168.11.1」を入力 ※publicネットワークの情報を設定
  • ゲストネットマスクに「255.255.255.0」を入力
  • ゲストの開始IPアドレスに「192.168.11.141」を入力 ※非DHCPなので4より上を適当に割り当てる
  • ゲストの終了IPアドレスに「192.168.11.160」を入力
  • 「Next」押下


  • ゲートウェイに「192.168.11.1」と入力 ※storageネットワークセグメントで記述
  • ネットマスクに「255.255.255.0」と入力
  • VLANは空欄のままにする
  • 開始IPアドレスに「192.168.11.161」と入力
  • 終了IPアドレスに「192.168.11.180」と入力
  • 「追加」押下


  • 「Next」押下


  • クラスタ名に「cluster01」と入力
  • 「Next」押下


  • ホスト名に「192.168.11.100」と入力 ※privateネットワークのIPアドレス
  • ユーザ名に「root」と入力
  • パスワードに「cloud」と入力
  • ホストタグは空欄のままにする
  • 「Next」押下


  • 名前に「primary01」と入力
  • プロトコルは「nfs」のままにする
  • サーバーに「192.168.11.100」と入力 ※本来はホストのIPアドレスをstorageネットワークアドレスで記述
  • Pathに「/export/primary」と入力
  • ストレージタグは空欄のままにする
  • 「Next」押下


  • NFSサーバーに「192.168.11.100」と入力 ※本来はホストのIPアドレスをstorageネットワークアドレスで記述
  • パスに「/export/secondary」と入力
  • 「Next」押下


  • 「Launch zone」押下 ※時間が少し掛かる
※ゾーンを有効化するかのダイアログが表示される

  • 「はい」押下
※管理コンソール画面に戻る

  • 右の「インフラストラクチャ」を押下


  • 「更新」を押下
  • システムVMの「すべてを表示」を押下


  • 2つのVMが存在し、ステータスが両方「Running」になるまで待機(結構時間がかかる)


  • 画面左の「テンプレート」を押下


  • 「CentOS 5.5(64-bit) no GUI (KVM)」をクリック


  • 準備完了欄が「Yes」となるまで待機(すこじ時間がかかる)

6. テスト

※Ubuntu Server12.04.2LTSのISOイメージを取り込み、インスタンスを起動するところまで

6.1 ISOイメージの取り込み

※管理コンソールが立ち上がり、adminでログイン済みの状態

  • 画面左の「テンプレート」を押下


  • 画面上のビューの選択を「ISO」に変更


  • 画面右上の「+ISOの登録」を押下


ここではUbuntuサイトを指しているので、特にグローバル設定変更は不要。
もし192.168.11.100上にApache2をインストールしてローカルのHTTPサーバ
からダウンロードしたい場合は、
secstorage.allowed.internal.sites」にCIDR表記でIP範囲指定する。
例えば「192.168.11.0/24」とすればよい。
  • ゾーンは「All Zone」のままにする
  • 起動可能はチェックのままにする
  • OSの種類を「Ubuntu 12.04 (64-bit)」に変更する
  • 抽出可能のチェックはないままとする
  • パブリックをチェックする
  • おすすめをチェックする
  • 「OK」押下
  • 「Ubuntu Server 12.04.2 LTS」をクリックする
  • 準備完了欄が「Yes」になるまで待機(更新ボタンで再表示して確認する)

6.2 インスタンス作成

  • 画面左の「インスタンス」を押下する
  • 画面右上の「+インスタンスの追加」を押下
  • ゾーンの選択は「zone01」のままとする
  • ISOまたはテンプレートの選択は「ISO」をチェック
  • 「次へ」押下
  • おすすめタブのUbuntu Server 12.04.2 LTSがチェックされているままとする
  • Hypervisorは「KVM」のままとする
  • 「次へ」押下
  • 「Small Instance」をチェックしたままにする
  • 「次へ」押下
  • 「Small」をチェックしたままにする
  • 「次へ」押下
  • 「default」をチェックする
  • 名前(オプション)欄に「Test」と入力する
  • グループへの追加(オプション)欄を空欄のままとする
  • 「VMの起動」押下
  • 画面左の「インスタンス」を押下する
  • 「Test」をクリックし、詳細タブの一番上にアイコン群がならぶまで待機する
  • アイコン群の右端のアイコン(コンソールの表示)をクリックする
  • ※UbuntuのインストーラのLanguage選択が出ればOK、あとは継続するかは適宜

以上



【注意】
最初にも書きましたが、インスタンスまでは作成されますが
コンソール画面をひらくとエラーになります。
現在調査中です。


最初、1つのLANに複数のセグメントを混ぜようかと思ったが、
KVMかさねがけによるKMのNAT設定を使ったなんちゃってルーティングがないので
同一セグメントを切り分けして設定した。

cloudbr0というブリッジを1つ作成し、
192.168.11.2~192.168.11.65はそのままルータのDHCP割り当てさせておき、
192.168.11.121~192.168.11.140 を管理ネットワーク(private)に、
192.168.11.141~192.168.11.160をゲストネットワーク(public)に、
192.168.11.161~192.168.11.180storageネットワークに
固定IP領域をそれぞれに割り振る。

このため3つのネットワークの
デフォルトゲートウェイは192.168.11.1
サブネットは255.255.255.0
DNSサーバはNATなのでルータのLAN側IPアドレス192.168.11.1
割り当てる。



やはりSecondary Storage VMで起動停止を繰り返す問題は、
渡しの場合ufwコマンドで設定するポートが足りなかったのだと思う。





0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...