More Related Content Similar to Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) (20) More from VirtualTech Japan Inc. (20) Havana版 RDO-QuickStart-3 (140421-Havana-RDO-QuickStart-3.pdf) 1. RDO Neutron Multi Quickstart Plus
CinderバックエンドとしてNFS共有を利用
+++++++++++++++++++++++++++++++++++
最終更新日: 2014/3/26
■この文書について
この文書は以下の構成でOpenStack Havana環境をさくっと構築する場合の手順を説明し
ています。
サーバーとは別途、クライアントを用意して、同じネットワークに接続します。
・Client/NFS(兼用)
-cinder-volume
・node1
-Controller
-Network
-Compute
・node2
-Compute
・gre-tunneling
この文書は以下の公開資料を元にしています。
RDO Neutron Quickstart
http://openstack.redhat.com/Neutron-Quickstart
http://openstack.redhat.com/Adding_a_compute_node
http://openstack.redhat.com/Neutron_with_existing_external_network
CinderのバックエンドとしてNFS共有を利用する
https://access.redhat.com/site/documentation/en-US/
Red_Hat_Enterprise_Linux_OpenStack_Platform/3/html/
Installation_and_Configuration_Guide/
Configuring_for_NFS_Storage.html
■行うこと一覧
各ノードに対して行う作業は次の通りです。
◆NFSサーバー
・NFSサーバーのインストール
・NFS共有ストレージの構成
◆クライアント
4. net.bridge.bridge-nf-call-ip6tables = 0 #設定確認
net.bridge.bridge-nf-call-iptables = 0 #設定確認
net.bridge.bridge-nf-call-arptables = 0 #設定確認
net.ipv4.conf.all.rp_filter = 0 #追記
net.ipv4.conf.all.forwarding = 1 #追記
# sysctl -e -p /etc/sysctl.conf
(設定を反映)
--<
Step 3: /etc/rc.localの設定
ファイルに以下の通り、追記します。
>--
# vi /etc/rc.local
echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
echo 0 > /proc/sys/net/bridge/bridge-nf-call-arptables
--<
【参考】
・公式ガイド Compute
http://docs.openstack.org/admin-guide-cloud/content/ch_introduction-
to-openstack-compute.html#section_network-troubleshoot
Step 4: Havanaリポジトリーの追加
ソフトウェアパッケージのインストールを行います。
ノード毎次のコマンドを実行します。
>--
# yum install -y http://rdo.fedorapeople.org/openstack-havana/rdo-
release-havana.rpm
--<
Step 5: システムアップデート
ノード毎システムアップデートを実施したら再起動します。
>--
# yum -y update
# reboot
--<
5. ■Packstackと必要パッケージのインストール
Step 6: Packstackおよび必要パッケージのインストール
ノード毎以下のようにコマンドを実行します。
>--
# yum install -y openstack-packstack python-netaddr libguestfs-tools
--<
推奨:時刻同期サーバーの導入
複数ノード間の通信時は時刻が正確に同期されている必要があります。
以下の手順にしたがって、各ノードにNTPサーバーを追加します。
>--
# yum install ntp
# ntpdate ntp.nict.jp
# chkconfig ntpd on
# service ntpd start
--<
Step 7: アンサーファイルを生成
node1で以下のようにコマンドを実行します。
>--
# packstack --gen-answer-file=answer.txt
(answer.txtという名前のファイルを作成する場合)
--<
アンサーファイルを使うことで定義した環境でOpenStackをデプロイできます。
作成したアンサーファイルは1台のマシン(packstackを実行したノード)にすべてをイン
ストールする設定が行われています。IPアドレスや各種パスワードなどを適宜設定します。
Step 8: アンサーファイルの編集
とりあえず2台構成のOpenStack環境を作るには最低限以下のパラメータを設定します。
・アンサーファイルのCONFIG_NOVA_COMPUTE_HOSTSにコンピュートノードを設定
CONFIG_NOVA_COMPUTE_HOSTS=192.168.0.11,192.168.0.12
・greの設定を行う
CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE=gre
CONFIG_NEUTRON_OVS_TUNNEL_RANGES=1:1000
CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1
・NICを利用したいものに変更する
10. ネットワークを共有するには--sharedオプションを付けて実行します。
◆ネットワークサブネットの登録
ネットワークで利用するサブネットを定義します。
>--
# neutron subnet-create --name public_subnet --enable_dhcp=False --
allocation-pool=start=192.168.1.241,end=192.168.1.254 --
gateway=192.168.1.1 public 192.168.1.0/24
Created a new subnet:
(略)
--<
これでpublic側ネットワークにサブネットなどを登録することができました。
次にdemo-net(プライベート)側に登録してみます。
>--
# neutron subnet-create --name demo-net_subnet --enable_dhcp=True --
allocation-pool=start=192.168.0.100,end=192.168.0.254 --
gateway=192.168.0.1 --dns-nameserver 8.8.8.8 demo-net 192.168.0.0/24
Created a new subnet:
(略)
--<
◆ゲートウェイの設定
作成したルーター(router1)とパブリックネットワークを接続するため、「ゲートウェイ
の設定」を行います。
>--
# neutron router-gateway-set router1 public
Set gateway for router router1
--<
◆外部ネットワークと内部ネットワークの接続
最後にプライベートネットワークを割り当てたインスタンスがFloating IPを割り当てら
れたときに外に出られるようにするために「ルーターにインターフェイスの追加」を行いま
す。
>--
# neutron router-interface-add router1 subnet=demo-net_subnet
Added interface xxxx-xxxx-xxxx-xxxx-xxxx to router router1.
--<
routerはneutron router-listコマンドで確認、サブネットはneutron subnet-
listコマンドで確認することができます。
12. demo@example.com --enabled true
--<
ユーザー作成コマンドはkeystone user-createです。
パラメータはいくつかあるので--helpで確認。--nameがユーザー名、--passがパスワー
ド、--tenantはテナント(Horizonではプロジェクト)名、--enabledは有効化の可否を
指定します。
なぜかMemberロールが作られず、それのせいで一部の設定にアクセスできず、エラーとな
るのでロールを追加します(バグ?)。
>--
# keystone role-create --name Member
--<
tenantはHorizonで登録されている「プロジェクト」を確認するか、keystone
tenant-listコマンドで確認できます。
ユーザーに特定のロールを割り当てる場合は、次のように実行します。
>--
# keystone user-role-add --user demo --tenant demo --role Member
(demoユーザーをdemoテナントに追加してMemberロールを割り当て)
--<
ロールはkeystone role-listコマンドで確認できます。
作成したテナント、ユーザーを最後に確認しましょう。
>--
# keystone tenant-list
(テナントリストの確認)
# keystone user-list
(ユーザーリストの確認)
--<
以上で、ユーザーdemoでOpenStack環境を利用可能になります。
ユーザーはadminユーザーが設定した共有ネットワークを使ってインスタンスでネットワー
ク接続できます。また、Floating IPを割り当てることで外部PCからインスタンスにアク
セスできます。
もちろん、ユーザーが独自のネットワークを作ることもできます。その場合は次のように行
います。
・ルーターを作成
・サブネットを作成
・作成したサブネットとルーターをpublicネットワークとつなぐ
13. Step 13: Cinder-Volumeの設定
バックエンドとしてNFSを指定したのでこれを設定します。
・設定の準備
>--
# cd /etc/cinder/
# touch nfs_shares
# echo "192.168.0.10:/nfs" > nfs_shares
# chown root:cinder nfs_shares
# chmod 0640 nfs_shares
--<
・設定の変更
>--
# openstack-config --set /etc/cinder/cinder.conf
DEFAULT nfs_shares_config /etc/cinder/nfs_shares
# openstack-config --set /etc/cinder/cinder.conf
DEFAULT nfs_sparsed_volumes true
# openstack-config --set /etc/cinder/cinder.conf
DEFAULT volume_driver cinder.volume.drivers.nfs.NfsDriver
--<
詳細は以下参照。
https://access.redhat.com/site/documentation/en-US/
Red_Hat_Enterprise_Linux_OpenStack_Platform/3/html/
Installation_and_Configuration_Guide/
Configuring_for_NFS_Storage.html
Step 14: Novaの設定変更
デフォルト設定のままインストールした場合、Novaは仮想化基盤にqemuを利用するように
なっています。パフォーマンスを上げるには以下のように設定を変更します。
KVMモジュールが読み込まれていることを確認します。
>--
# lsmod | grep kvm
kvm_intel 54285 6
kvm 332980 1 kvm_intel
(Intel CPUの場合)
kvm 332980 1 kvm_amd
(AMD CPUの場合)
# vi /etc/nova/nova.conf
(略)
libvirt_type=kvm
#libvirt_type=qemu
14. (設定を変更)
--<
■動作確認
・「セキュリティグループ」でICMPとSSHを有効化
・インスタンスを起動
・ボリュームの作成
・ボリュームをインスタンスに接続
・dmesg | grep vdでディスク認識を確認
利用するインスタンスは以下からダウンロードできます。
Cirros
http://download.cirros-cloud.net
※0.3.1以上のバージョンを利用してください。
CentOS
http://repos.fedorapeople.org/repos/openstack/guest-images/
Fedora
http://fedoraproject.org/en/get-fedora#clouds
Ubuntu
http://cloud-images.ubuntu.com
・Floating IPをインスタンスに割り当て
・ホストにSSHアクセスしてそこからインスタンスにアクセス
■FAQ
Q1:RDOで環境構築中、タイムアウトエラーがおき、スクリプトが停止しました。
A1:何も設定変更を加えずにもう一度実行し直すと上手くいく場合があります。
ネットワークアクセスと名前解決が頻繁にあり、それらが上手くいかないとスクリプトが途
中で終了することがあるようです。
Q2:ゲートウェイがDOWNなんですけど
A2:無視
Q3:ステータスを確認するには?
A3:openstack-statusコマンドを実行!
15. Q4:openstack-statusコマンドを実行するとサービスの一部が動いていないようです
A4:「RDO Neutron Quickstart」の末尾に注意書きがあります
If you installed the updated kernel and rebooted prior to running
packstack, everything should work. If you installed the updated
kernel as part of running packstack, you will need to reboot when
packstack completes to boot into the new kernel. This reboot will
cause br-ex to reset, so after the reboot you will need to re-run
packstack as shown below:
>--
# packstack --answer-file=~/packstack-answers-*.txt
--<
同じアンサーファイルを使って、もう一度packstackを実行すると良いようです。
Q5:仮想ネットワークを作り直したい
A5:手順はこんな感じ
>--
# source /root/keystonerc_admin
# neutron router-gateway-clear router1
# neutron subnet-delete public_subnet
--<
※Floating IPが発行されているとneutron subnet-deleteコマンドの実行に失敗する
作り直して再割り当て
>--
# neutron subnet-create --name public_subnet --enable_dhcp=False --
allocation-pool=start=192.168.1.241,end=192.168.1.254 --
gateway=192.168.1.1 public 192.168.1.0/24
--<
Q6:日本語キーボードがつかえない
A6:コンピュートノードのnova.confに以下のように追記
>--
# vi /etc/nova/nova.conf
(略)
# keymap for vnc (string value)
#vnc_keymap=en-us
vnc_keymap=ja #追加する行
# service openstack-nova-compute reload
--<
16. ※ただし、OS側が日本語キーボードに対応している必要がある。
(Cirrosは日本語キーボードを英語キーマップ認識で利用可能)
Q7:作成したdemoユーザーの権限でコマンド操作するには
A7:keystonerc_adminを編集して利用します
>--
# cp /root/keystonerc_admin /root/keystonerc_demo
(keystonercをコピー)
# vi /root/keystonerc_demo
export OS_USERNAME=demo
export OS_TENANT_NAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://192.168.1.11:35357/v2.0/
export PS1='[u@h W(keystone_demo)]$ '
--<
設定箇所
・export OS_USERNAMEをdemo
・export OS_TENANT_NAMEをdemo
・export OS_PASSWORDをdemoユーザー作成時に設定したパスワード
・export PS1をkeystone_demoに設定
Q8:マルチノードでやるには
A8:以下公式ドキュメントを参照。
http://openstack.redhat.com/Adding_a_compute_node
Q9:ボリュームの削除をすると状態が「Error_Deleting」のまま、いつまでたっても変
わらない
A9:検索すると類似例がいくつか見つかります。次の手順で対処可能です。
【error_deleting関連】
https://bugzilla.redhat.com/show_bug.cgi?id=888987
https://bugs.launchpad.net/cinder/+bug/1039706
https://ask.openstack.org/en/question/1378/cannot-remove-volume/
>--
# cinder list
+--------------------------------------+----------------
+--------------+--
| ID | Status | Display
Name |
+--------------------------------------+----------------
17. +--------------+--
| 66f7139e-82c7-4d29-9c17-fe43dd42cac7 | error_deleting | disk01
|
+--------------------------------------+----------------
+--------------+--
# mysql -u cinder -p -D cinder
Enter password:
(パスワードはanswer.txtの"CONFIG_CINDER_DB_PW"の値を入力)
Type 'help;' or 'h' for help. Type 'c' to clear the current input
statement.
mysql> delete from volumes where id = '66f7139e-82c7-4d29-9c17-
fe43dd42cac7';
(削除)
# cinder list
(なくなったことを確認)
--<
以上の手順を実行することで、error_deleting状態の異常なSQLデータを削除できま
す。
この方法ではSQLの登録データを削除しただけなので、別途手動でイメージボリュームを削
除する必要があります。
本来なら、「cinder delete」や「cinder force-delete」コマンドを使って、作成
したボリュームを削除できるはずですが、なんらかの理由により削除できなくなった場合は
この手段で削除できます。