16
RDO Neutron Multi Quickstart Plus GRE-Compute 2台構成編 +++++++++++++++++++++++++++++++++++ 最終更新日: 2014/3/26 この文書について この文書は以下の構成でOpenStack Havana環境をさくっと構築する場合の手順を説明し ています。 サーバーとは別途、クライアントを用意して、同じネットワークに接続します。 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 行うこと一覧 各ノードに対して行う作業は次の通りです。 クライアント ・固定IPアドレスの割り当て ・ブラウザのインストール Node1 ・固定IPアドレスの割り当て sysctl.confの設定 /etc/rc.localの設定 Havanaリポジトリーの追加 ・システムアップデート Packstackおよび必要パッケージのインストール ・アンサーファイルを生成

Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

Embed Size (px)

DESCRIPTION

RDOを使ったOpenStack Havana環境構築手順をまとめましたので共有します。 RDO-QuickStart-1 単体構成(all-in-one) 構築手順書は140421-Havana-RDO-QuickStart-1.pdfです。 answer1.txtを使って構築します。 RDO-QuickStart-2 コンピュート2台構成(GRE) 構築手順書は140421-Havana-RDO-QuickStart-2.pdfです。 answer2.txtを使って構築します。 RDO-QuickStart-3 コンピュート2台構成(GRE) CinderボリュームとしてNFSを利用したバージョン 構築手順書は140421-Havana-RDO-QuickStart-3.pdfです。 answer3.txtを使って構築します。 RDO-QuickStart-4 コンピュート3台構成(GRE) CinderボリュームとしてNFSを利用したバージョン 構築手順書は140421-Havana-RDO-QuickStart-4.pdfです。 answer4.txtを使って構築します。

Citation preview

Page 1: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

RDO Neutron Multi Quickstart PlusGRE-Compute 2台構成編+++++++++++++++++++++++++++++++++++

最終更新日: 2014/3/26

■この文書についてこの文書は以下の構成でOpenStack Havana環境をさくっと構築する場合の手順を説明しています。サーバーとは別途、クライアントを用意して、同じネットワークに接続します。

・node1-Controller-Network-Compute

・node2-Compute

・gre-tunneling

この文書は以下の公開資料を元にしています。

RDO Neutron Quickstarthttp://openstack.redhat.com/Neutron-Quickstarthttp://openstack.redhat.com/Adding_a_compute_nodehttp://openstack.redhat.com/Neutron_with_existing_external_network

■行うこと一覧各ノードに対して行う作業は次の通りです。

◆クライアント・固定IPアドレスの割り当て・ブラウザのインストール

◆Node1・固定IPアドレスの割り当て・sysctl.confの設定・/etc/rc.localの設定・Havanaリポジトリーの追加・システムアップデート・Packstackおよび必要パッケージのインストール・アンサーファイルを生成

Page 2: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

・アンサーファイルの編集・Packstackの実行・ネットワークの設定・ネットワークの追加・ユーザーの追加・Novaの設定変更

◆Node2・固定IPアドレスの割り当て・sysctl.confの設定・/etc/rc.localの設定・Havanaリポジトリーの追加・システムアップデート・Packstackおよび必要パッケージのインストール・Novaの設定変更

■事前準備

Step 0: 要件

Software: ・Red Hat Enterprise Linux (RHEL) 6.4以降・CentOS, Scientific Linux 6.4以降・Fedora 19

Hardware:・CPU 2Core以上 ・メモリー4GB以上・最低2つのNIC

Network:・インターネットにアクセスできる環境

訳注:本書では次のネットワーク構成を利用します。

Public Network192.168.1.0/24

Private Network192.168.0.0/24

SELinux:下記公式サイトのコメントにあるようにSELinuxをpermissive(いっそのことdisable)に設定する

Page 3: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

Note: Due to the quantum/neutron rename, SELinux policies are currently broken for Havana, so SELinux must be disabled/permissive on machines running neutron services, edit /etc/selinux/config to set SELINUX=permissive.

Step 1: 固定IPアドレスの割り当て各ノードに固定のIPアドレスを割り当てます。

Clienteth0192.168.0.10/24eth1192.168.1.10/24

Node1-ctl,net,com1eth0192.168.0.11/24eth1192.168.1.11/24

Node2eth0192.168.0.12/24eth1192.168.1.12/24

Step 2: sysctl.confの設定以下の通り、デフォルト設定から変更します。

>--# vi /etc/sysctl.conf

net.ipv4.ip_forward = 1 #変更net.ipv4.conf.default.rp_filter = 0 #変更

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(設定を反映)--<

Page 4: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

Step 3: /etc/rc.localの設定ファイルに以下の通り、追記します。

>--# vi /etc/rc.local

echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptablesecho 0 > /proc/sys/net/bridge/bridge-nf-call-ip6tablesecho 0 > /proc/sys/net/bridge/bridge-nf-call-arptables--<

【参考】・公式ガイド Computehttp://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--<

■Packstackと必要パッケージのインストール

Step 6: Packstackおよび必要パッケージのインストールノード毎以下のようにコマンドを実行します。

>--# yum install -y openstack-packstack python-netaddr libguestfs-tools--<

推奨:時刻同期サーバーの導入複数ノード間の通信時は時刻が正確に同期されている必要があります。以下の手順にしたがって、各ノードにNTPサーバーを追加します。

Page 5: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

>--# 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=greCONFIG_NEUTRON_OVS_TUNNEL_RANGES=1:1000CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1

・NICを利用したいものに変更するCONFIG_NOVA_COMPUTE_PRIVIF=eth0CONFIG_NOVA_NETWORK_PRIVIF=eth0CONFIG_NOVA_NETWORK_PUBIF=eth1

・DashboardにアクセスするパスワードCONFIG_KEYSTONE_ADMIN_PW=admin

・テスト用demoユーザーとかネットワークを作らないようにするCONFIG_PROVISION_DEMO=n

・IPアドレスを内向きのネットワークに変更する192.168.1.11 -> 192.168.0.11

viで一括文字列置換えを行う場合:%s/192.168.1.11/192.168.0.11/gc

Page 6: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

replace with 192.168.0.11 (y/n/a/q/l/^E/^Y)?(上書き問い合わせに対して、yと入力していく)

Step 9: RDOによるOpenStackのインストール

設定を書き換えたアンサーファイルを使ってOpenStackを導入するには、次のようにアンサーファイルを指定して実行します。

>--# packstack --answer-file=/root/answer.txt(略)Installing:Clean Up... [ DONE ]Setting up ssh [email protected]'s password: [email protected]'s password: (ノード毎のrootアカウントパスワードを入力)--<

Step 10: ネットワークの設定

次に外部と通信できるようにするための設定を行います。http://openstack.redhat.com/Neutron_with_existing_external_network

◆public用として使うNICの設定ファイルを修正packstack実行後、eth1をbr-exにつなぐように設定をします(※BOOTPROTOは設定しない)

eth0からIPアドレス、サブネットマスク、ゲートウェイの設定を削除して次の項目だけを記述し、br-exの方に設定を書き込みます。

>--# vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1ONBOOT=yesHWADDR=52:54:00:92:05:AE # your eth0's hwaddrTYPE=OVSPortDEVICETYPE=ovsOVS_BRIDGE=br-ex--<

◆ブリッジインターフェイスの作成br-exにeth1のIPアドレスを設定します。

>--

Page 7: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

# vi /etc/sysconfig/network-scripts/ifcfg-br-ex

DEVICE=br-exONBOOT=yesDEVICETYPE=ovsTYPE=OVSBridgeBOOTPROTO=noneIPADDR=192.168.1.11NETMASK=255.255.255.0 # netmaskGATEWAY=192.168.1.1 # gatewayDNS1=8.8.8.8 # nameserverDNS2=8.8.4.4--<

neutron/plugin.iniに次の設定がされていることを確認します。

>--# vi /etc/neutron/plugin.ini

[OVS]vxlan_udp_port=4789tunnel_type=gretunnel_id_ranges=1:1000tenant_network_type=grelocal_ip=192.168.0.11enable_tunneling=Trueintegration_bridge=br-inttunnel_bridge=br-tun

[AGENT]polling_interval=2

[SECURITYGROUP]firewall_driver=neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver--<

ここまでできたらいったん各ノードを再起動します。

>--# reboot--<

■OpenStackの構成を行う

Step 11: ネットワークの追加

br-exにeth1を割り当てて仮想マシンをハイパーバイザー外部と通信できるようにする為の経路が確保されていることを確認します。

>--# ovs-vsctl show

Page 8: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

903f6cd5-29f3-4b8d-9cda-3411ddf98ecb Bridge br-int Port "qr-4c4fb9f1-a6" tag: 1 Interface "qr-4c4fb9f1-a6" type: internal Port br-int Interface br-int type: internal Port "tap80d3399f-1e" tag: 1 Interface "tap80d3399f-1e" type: internal Bridge br-ex Port "qg-bca7776d-14" Interface "qg-bca7776d-14" type: internal Port br-ex Interface br-ex type: internal Port "eth0" Interface "eth0" ovs_version: "1.11.0"--<

OSやハードウェア側の設定が終わったら、OpenStackが利用するネットワークを作成してみましょう。OpenStackにおけるネットワークの設定は以下の順で行います。

・ルーターを作成・ネットワークを作成・ネットワークサブネットを作成

OpenStackの環境構成をコマンドで実行する場合は、/root/keystonerc_adminファイルをsourceコマンドで読み込んでから実行してください。

>--# source keystonerc_admin—<

それでは順に行っていきましょう。

◆ルーターの作成ルーターの作成は次のようにコマンドを実行します。>--# neutron router-create router1Created a new router:(略)--<

Page 9: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

◆ネットワークの作成ネットワークの作成は次のようにコマンドを実行します。

・パブリックネットワークの場合>--# neutron net-create public --tenant-id 2b0260a2580842abab33b56dae6a145f --router:external=TrueCreated a new network:(略)--<

net-createコマンドの先頭にはまずネットワーク名を記述します。tenant-idは「keystone tenant-list」で出力される中から「テナント」を指定します。router:external=Trueは外部ネットワークとして指定するかしないかを設定します。プライベートネットワークを作る場合は指定する必要はありません。

・プライベートネットワークの場合>--# neutron net-create demo-net --tenant-id 20a6abed5e8549f29a76fa26b2b1c8db --sharedCreated a new network:(略)--<

ネットワークを共有するには--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/24Created 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/24Created a new subnet:(略)--<

Page 10: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

◆ゲートウェイの設定作成したルーター(router1)とパブリックネットワークを接続するため、「ゲートウェイの設定」を行います。

>--# neutron router-gateway-set router1 publicSet gateway for router router1--<

◆外部ネットワークと内部ネットワークの接続最後にプライベートネットワークを割り当てたインスタンスがFloating IPを割り当てられたときに外に出られるようにするために「ルーターにインターフェイスの追加」を行います。

>--# neutron router-interface-add router1 subnet=demo-net_subnetAdded interface xxxx-xxxx-xxxx-xxxx-xxxx to router router1.--<

routerはneutron router-listコマンドで確認、サブネットはneutron subnet-listコマンドで確認することができます。

Step 8: ユーザーの追加次に、ユーザーの追加を行います。ユーザーを作成する前にユーザーをどのテナント、つまりどのグループに追加するか考えます。作成したテナントにロール、つまり権限を割り振ることで指定した権限を持つユーザーをテナントに追加できます。

ここでは例として、demoというテナントを作り、そのテナントにdemoユーザーを追加する流れを説明します。demoユーザーには利用に最低限必要なMemberの権限を割り当てます。

まず、登録済みのテナントを確認します。

>--# keystone tenant-list +----------------------------------+----------+---------+| id | name | enabled |+----------------------------------+----------+---------+| 2b0260a2580842abab33b56dae6a145f | admin | True || 20a6abed5e8549f29a76fa26b2b1c8db | services | True |+----------------------------------+----------+---------+(テナントリストの表示)--<

次にテナントを登録します。

Page 11: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

>--# keystone tenant-create --name demo --description demo-tenant --enable true(テナントdemoの作成)--<

追加したテナントが登録されていることを確認します。

>--# keystone tenant-list+----------------------------------+----------+---------+| id | name | enabled |+----------------------------------+----------+---------+| 2b0260a2580842abab33b56dae6a145f | admin | True || f1217f04d6f94a7ca3df1f4d6122322d | demo | True || 20a6abed5e8549f29a76fa26b2b1c8db | services | True |+----------------------------------+----------+---------+(テナントの確認)--<

demoユーザーを作成してみます。パスワードはdemoにします。

>--# keystone user-create --name demo --pass demo --tenant demo --email [email protected] --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コマンドで確認できます。

Page 12: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

作成したテナント、ユーザーを最後に確認しましょう。

>--# keystone tenant-list(テナントリストの確認)# keystone user-list(ユーザーリストの確認)--<

以上で、ユーザーdemoでOpenStack環境を利用可能になります。ユーザーはadminユーザーが設定した共有ネットワークを使ってインスタンスでネットワーク接続できます。また、Floating IPを割り当てることで外部PCからインスタンスにアクセスできます。

もちろん、ユーザーが独自のネットワークを作ることもできます。その場合は次のように行います。

・ルーターを作成・サブネットを作成・作成したサブネットとルーターをpublicネットワークとつなぐ

Step 9: Novaの設定変更

デフォルト設定のままインストールした場合、Novaは仮想化基盤にqemuを利用するようになっています。パフォーマンスを上げるには以下のように設定を変更します。

KVMモジュールが読み込まれていることを確認します。>--# lsmod | grep kvmkvm_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(設定を変更)--<

■動作確認・「セキュリティグループ」でICMPとSSHを有効化

Page 13: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

・インスタンスを起動・ボリュームの作成・ボリュームをインスタンスに接続・dmesg | grep vdでディスク認識を確認

利用するインスタンスは以下からダウンロードできます。

Cirroshttp://download.cirros-cloud.net※0.3.1以上のバージョンを利用してください。

CentOShttp://repos.fedorapeople.org/repos/openstack/guest-images/

Fedorahttp://fedoraproject.org/en/get-fedora#clouds

Ubuntuhttp://cloud-images.ubuntu.com

・Floating IPをインスタンスに割り当て・ホストにSSHアクセスしてそこからインスタンスにアクセス(※下記注)

■FAQ

Q1:RDOで環境構築中、タイムアウトエラーがおき、スクリプトが停止しました。

A1:何も設定変更を加えずにもう一度実行し直すと上手くいく場合があります。

ネットワークアクセスと名前解決が頻繁にあり、それらが上手くいかないとスクリプトが途中で終了することがあるようです。

Q2:ゲートウェイがDOWNなんですけどA2:無視

Q3:ステータスを確認するには?A3:openstack-statusコマンドを実行!

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

Page 14: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

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-usvnc_keymap=ja #追加する行

# service openstack-nova-compute reload--<

※ただし、OS側が日本語キーボードに対応している必要がある。(Cirrosは日本語キーボードを英語キーマップ認識で利用可能)

Q7:作成したdemoユーザーの権限でコマンド操作するには

Page 15: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

A7:keystonerc_adminを編集して利用します

>--# cp /root/keystonerc_admin /root/keystonerc_demo(keystonercをコピー)

# vi /root/keystonerc_demo

export OS_USERNAME=demoexport OS_TENANT_NAME=demoexport OS_PASSWORD=demoexport 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=888987https://bugs.launchpad.net/cinder/+bug/1039706https://ask.openstack.org/en/question/1378/cannot-remove-volume/

>--# cinder list+--------------------------------------+----------------+--------------+--| ID | Status | Display Name |+--------------------------------------+----------------+--------------+--| 66f7139e-82c7-4d29-9c17-fe43dd42cac7 | error_deleting | disk01 |+--------------------------------------+----------------+--------------+--

# mysql -u cinder -p -D cinderEnter password:

Page 16: Havana版 RDO-QuickStart-2 (140421-Havana-RDO-QuickStart-2.pdf)

(パスワードは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」コマンドを使って、作成したボリュームを削除できるはずですが、なんらかの理由により削除できなくなった場合はこの手段で削除できます。