全サービスを同時に更新する方式による OpenStack のアップグレード
1. 概要
注意
2. RHN/CDN チャンネル
警告
-
Red Hat OpenStack 1.0 (Essex) -- rhel-server-ost-6-preview-rpms
-
Red Hat OpenStack 2.1 (Folsom) -- rhel-server-ost-6-folsom-rpms
-
Red Hat Enterprise Linux OpenStack Platform 3 (Grizzly) -- rhel-server-ost-6-3-rpms
-
Red Hat Enterprise Linux OpenStack Platform 4 Beta (Havana) -- rhel-6-server-openstack-beta-rpms
-
Red Hat Enterprise Linux OpenStack Platform 4 (Havana) -- rhel-6-server-openstack-4.0-rpms
注意
#subscription-manager repos \--enable=rhel-6-server-rh-common-rpms
2.1. コンテンツ配信ネットワーク (CDN) チャンネル
#subscription-manager repos --enable=[reponame]
#subscription-manager repos --disable=[reponame]
表 1. 必須チャンネル
| チャンネル | リポジトリ名 |
|---|---|
| Red Hat OpenStack 5.0 Beta (RPMS) for Server 6 |
rhel-6-server-openstack-5.0-rpms
|
| Red Hat Enterprise Linux 6 Server (RPMS) |
rhel-6-server-rpms
|
表 2. 任意チャンネル
| チャンネル | リポジトリ名 |
|---|---|
| RHEL Server Load Balancer (v6 for 64-bit x86_64) |
rhel-lb-for-rhel-6-server-rpms
|
| Red Hat Enterprise Linux 6 Server - Optional |
rhel-6-server-optional-rpms
|
表 3. 無効にするチャンネル
| チャンネル | リポジトリ名 |
|---|---|
| Red Hat CloudForms Management Engine |
"cf-me-*"
|
| Red Hat CloudForms Tools for RHEL 6 |
"rhel-6-server-cf-*"
|
| Red Hat Enterprise Virtualization |
"rhel-6-server-rhev*"
|
| Red Hat Enterprise Linux 6 Server - Extended Update Support (EUS) |
"*-eus-rpms"
|
| Red Hat Software Collections |
"rhel-server-rhscl-6-rpms"
|
2.2. Red Hat Network (RHN) チャンネル
#rhn-channel --add --channel=[reponame]
#rhn-channel --remove --channel=[reponame]
表 4. 必須チャンネル
| チャンネル | リポジトリ名 |
|---|---|
| Red Hat OpenStack 5.0 for RHEL 6 Server x86_64 |
rhel-x86_64-server-6-ost-5
|
| Red Hat Enterprise Linux Server (v6 for 64-bit AMD64 / Intel64) |
rhel-x86_64-server-6
|
表 5. 任意チャンネル
| チャンネル | リポジトリ名 |
|---|---|
| RHEL Server Load Balancer (v6 for 64-bit x86_64) |
rhel-x86_64-server-lb-6
|
| RHEL Server Optional (v. 6 64-bit x86_64) |
rhel-x86_64-server-optional-6
|
| MRG Messaging v2 (for RHEL 6 Server x86_64) |
rhel-x86_64-server-6-mrg-messaging-2
|
3. 全 OpenStack サービスの同時アップグレード
手順 1. ホスト上の OpenStack コンポーネントのアップグレード
-
openstack-utilsパッケージが確実にインストールされていることを確認します。#yum install openstack-utils -
全ノードで OpenStack サービスをすべて停止します。このステップは、サービスがどのようにノードに分散されているかによって異なります。1 つのノードで実行されている OpenStack サービスをすべて停止するには、そのノードにログインして以下のコマンドを実行します。
#openstack-service stop -
全パッケージの完全なアップグレードを実行してから、Identity Service 内の期限切れトークンをフラッシュします (データベースの同期の所要時間が短縮される可能性があります)。
#yum upgrade#keystone-manage token_flush -
データベースを使用する各サービスのデータベーススキーマをアップグレードします。この操作を行うには、サービスをホストしているノードにログインして以下のコマンドを実行します。
#openstack-db --service SERVICENAME --updateSERVICENAME は、サービスのプロジェクト名に置き換えます。たとえば、Idenitity Service のデータベーススキーマをアップグレードするためのコマンドは以下のようになります。#openstack-db --service keystone --update
表 6. データベースを使用する各 OpenStack サービスのプロジェクト名
サービス プロジェクト名 Identity keystone Block Storage cinder Image Service glance Compute nova Networking neutron Orchestration heat Dashboard horizon -
上記の操作によって生成された設定ファイルを確認します。アップグレードされたパッケージには、Red Hat Enterprise Linux OpenStack Platform 5 バージョンのサービスに適した
.rpmnewファイルがインストールされているはずです。
4. libvirt_vif_driver の設定
/etc/nova/nova.conf で正しい libvirt_vif_driver を設定する必要があります。そのためには、Compute API ホストで以下のコマンドを実行してください。
#openstack-config --set /etc/nova/nova.conf \DEFAULT libvirt_vif_driver nova.virt.libvirt.vif.LibvirtGenericVIFDriver
#openstack-config --set /etc/nova/nova.conf \DEFAULT vif_plugging_is_fatal true#openstack-config --set /etc/nova/nova.conf \DEFAULT vif_plugging_timeout VIFTIMEOUT
300 です。
5. Compute Service と Networking Service 間の対話の設定
手順 2. neutron と nova の対話の設定
-
ポートのステータスがアクティブに切り替わった時に
neutronがnovaに通知するように設定します。#openstack-config --set /etc/neutron/neutron.conf DEFAULT notify_nova_on_port_status_changes true -
neutronが Compute API サービスの新規アドレスを使用するように設定します。#openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_url http://COMPUTEAPIADDRESS:8774/v2 -
neutronに必要な認証情報を提供します。#openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_username NOVAADMIN#openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_password NOVAPASSWD#openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_tenant_id NOVATENANT#openstack-config --set /etc/neutron/neutron.conf DEFAULT nova_admin_auth_url KEYSTONEENDPOINT-
NOVAADMIN は、OpenStack 環境で管理者権限のあるユーザーに置き換えます。
注意
『OpenStack のデプロイ: 実習環境 (手動設定)』ガイドの例では、Compute Service 専用にadminロールを持つcomputeというユーザーと、servicesというテナントを作成します。このユーザーは、NOVAADMIN として適切です。 -
NOVAPASSWD は、NOVAADMIN に対応するパスワードに置き換えます。
-
NOVATENANT は、NOVAADMIN に関連付けられたプライマリテナントの UUID に置き換えます。
-
KEYSTONEENDPOINT は、
keystoneサービスの管理エンドポイントの URL に置き換えます。
-
neutron と nova 間の対話に関連する利用可能な設定についての詳しい情報は、OpenStack Networking をアップグレードした後に生成される /etc/neutron/neutron.conf.rpmnew ファイルを参照してください。
6. OpenStack Networking エージェントの ML2 への移行
警告
手順 3. ML2 の初期設定
-
openstack-neutron-ml2 パッケージをインストールします。
#yum install openstack-neutron-ml2 -
Networking を ML2 設定ファイル
ml2_conf.iniにダイレクトするためのシンボリックリンクを作成します。#ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini -
ml2_conf.iniファイルの[ml2]セクションに必要なプラグインの設定を追加します。
表 7. ML2 に必要なプラグイン設定
設定オプション 説明 mechanism_drivers neutron.ml2.type_drivers 名前空間から読み込むネットワークメカニズムドライバーのエントリポイントのコンマ区切りの順序付きリスト。サポートされている値は local、flat、vlan、gre、およびvxlanです。tenant_network_types テナントネットワークとして割り当てる network_typesのコンマ区切りの順序付きリスト。サポートされている値は、openvswitch、linuxbridge、およびl2populationです。type_drivers neutron.ml2.type_drivers 名前空間から読み込むネットワークタイプドライバーのエントリポイントのコンマ区切りリスト。サポートされている値は mechanism_driversと同じです。 -
選択したメカニズムドライバーの必須設定を追加します。ネットワークタイプドライバー (
type_drivers) 別の必須設定は、以下の表を参照してください。
表 8. ドライバータイプ別の必須設定
type_driver セクション 設定オプション 説明 flat [ml2_type_flat] flat_networks フラットなネットワークを作成可能な physical_network 名のリスト。フラットなネットワークに、任意の physical_network名を割り当てられるようにするには、<literal>*</literal> を使用します。gre [ml2_type_gre] tunnel_id_ranges テナントネットワークの割り当てに使用できる GRE トンネリング ID の範囲を列挙した MIN:MAX トンネリングタプルのコンマ区切りリスト vlan [ml2_type_vlan] network_vlan_ranges VLAN プロバイダーとテナントネットワークが使用可能な物理ネットワーク名の一覧。この一覧に記載する各名前には、テナントネットワークへの割り当てに使用可能な VLAN タグの範囲を含めることができます。各名前の構文は、physical_network:vlan_min:vlan_max または physical_network の形式にすることができます。 vxlan (全 2 中の 1) [ml2_type_vxlan] vni_ranges テナントネットワークの割り当てに使用できる VXLAN VNI ID の範囲を列挙した MIN:MAX タプルのコンマ区切りリスト vxlan (全 2 中の 2) [ml2_type_vxlan] vxlan_group VXLAN のマルチキャストグループ。未設定の場合には、VXLAN マルチキャストモードが無効になります。
注意
手順 4. ML2 への移行
-
neutron.db.migration.migrate_to_ml2 を使用してプラグインのデータベースを移行するには、以下のコマンドを実行します。
#python -m neutron.db.migration.migrate_to_ml2 PLUGIN mysql://DBADMIN:DBPASS@DBHOST/DBNAME-
PLUGIN は、使用していた元のプラグインに置き換えます。サポートされている値は
linuxbridgeおよびopenvswitchです。 -
DBADMIN は、OpenStack Networking データベースの有効な管理ユーザー名 (例:
neutron) に置き換えます。 -
DBPASS は DBADMIN に対応するパスワードに置き換えます。
-
DBHOST は、OpenStack Networking データベースホストの IP アドレスに置き換えます。
-
DBNAME は OpenStack Networking データベースの名前に置き換えます。デフォルトでは、Packstack により
ovs_neutronまたはneutron_linux_bridgeという名前が選択したプラグインに応じて割り当てられます。
注意
Networking Service が使用する DBADMIN、DBPASS、DBHOST、および DBNAME の実際の値は、/etc/neutron/neutron.confの[database]セクションに設定されます。具体的には、これらの値は以下の構文でconnectionの設定値に設定されます。connection = mysql://DBADMIN:DBPASS@DBHOST/DBNAME
オプションのパラメーターには以下が含まれます。-
--tunnel-type TUNNEL: プラグインがトンネリングを使用するように設定した場合には、このパラメーターを使用してトンネリングデータの移行も行ってください。TUNNEL は設定したトンネリングのタイプに置き換えます。サポートされている値はGREおよびVXLANです。 -
--vxlan-udp-port VXLANPORT: VXLAN トンネリングデータを移行する場合には、このパラメーターを使用して VXLAN トンネルが使用すべき UDP ポートを指定します (それに応じて VXLANPORT を置き換えてください)。このパラメーターを--tunnel-type VXLANとともに使用しなかった場合、VXLAN トンネルはデフォルトでポート4789を使用します。
-
-
プラグインデータベースの移行が完了したら、手動で ML2 プラグインを有効化します。そのためには、まず
/etc/neutron/neutron.conf設定ファイルを開いて、core_pluginパラメーターを ML2 プラグインに設定します。core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
-
次に、L3 ルータープラグイン (
neutron.services.l3_router.l3_router_plugin.L3RouterPlugin) をservice_pluginsパラメーターに追加します。service_plugins = neutron.services.firewall.fwaas_plugin.FirewallPlugin,neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
両パラメーターは/etc/neutron/neutron.confのDEFAULTセクションにあります。設定ファイルを手動で設定する場合には、各行頭に空白文字が入らないようにしてください。空白文字が入ってしまうと解析エラーが生じて、サービスが正常に機能しなくなる可能性があります。
注意
7. OpenStack Networking のアップグレードの最終段階
手順 5. アップグレードを完了するための OpenStack Networking Service の設定
-
全 Networking Service エージェントでハートビートを長く設定します。以下のコマンドを実行すると、本リリースの推奨値が設定されます。Networking コントローラーノードで以下のコマンドを実行します。
#openstack-config --set /etc/neutron/neutron.conf DEFAULT agent_down_time 75次に、Networking Service エージェントをホストしている各ノードで以下のコマンドを実行します。#openstack-config --set /etc/neutron/neutron.conf agent report_interval 30上記の設定により、Networking Service は 30 秒ごとにエージェントが停止しているかどうかを確認するようになります。エージェントは、75 秒間到達不可の場合にのみdown状態と宣言されます。 -
dnsmasqプロセスを強制終了します (この操作は、DHCP エージェントが機能するために必要です)。#killall dnsmasq -
OpenStack Networking Service を再起動して、全設定を適用します。そのためには、Networking Service をホストしている全ノードで以下のコマンドを実行してください。
#openstack-service start neutron
8. インスタンスへのコンソールアクセスを許可するためのファイウォール設定
手順 6. Compute Service トラフィックを許可するためのファイアウォール設定
-
Compute Service ホストに
rootユーザーとしてログインします。 -
テキストエディターで
/etc/sysconfig/iptablesファイルを開きます。 -
このファイルに以下の行を追記して、コンソールトラフィックに使用するポートで、TCP トラフィックを許可する INPUT ルールを追加します。
-A INPUT -p tcp --dport 5900:6900 -j ACCEPT
新規ルールは、トラフィックを REJECT する INPUT ルールよりも前に記載する必要があります。 -
/etc/sysconfig/iptablesファイルへの変更を保存します。 -
iptablesサービスを再起動して、変更を有効にします。#service iptables restart
注意
#service iptables restartiptables: Setting chains to policy ACCEPT: mangle nat filte[ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: iptable_nat iptable_filter ip[FAILED]t iptable_filter ip_tables iptables: Applying firewall rules: [ OK ]
9. Dashboard の手動によるローカル設定
手順 7. アップグレードに向けた手動による Dashboard のローカル設定
-
既存の
/etc/openstack-dashboard/local_settingsファイルをバックアップします。 -
/etc/openstack-dashboard/local_settingsの内容をlocal_settings.rpmnewの内容に置き換えます。 -
バックアップした
/etc/openstack-dashboard/local_settingsからOPENSTACK_HOSTとSECRET_KEYの値を使用して、新しい/etc/openstack-dashboard/local_settingsファイルを更新します。バックアップした/etc/openstack-dashboard/local_settingsファイルにその他の必要なデフォルト以外の設定がある場合には、それらの設定も新しい/etc/openstack-dashboard/local_settingsファイルにコピーしてください。 -
Django 1.5 (またはそれ以降のバージョン) を実行している場合には、
local_settingsファイルでALLOWED_HOSTSが正しく設定されていることを確認する必要があります。ALLOWED_HOSTSには、Dashboard Service と接続する際に使用することのできるホスト名の一覧が記載されています。-
ユーザーが "http://dashboard.example.com" を使用して Dashboard Service にアクセスする場合には、以下のように設定します。
ALLOWED_HOSTS=['dashboard.example.com']
-
Dashboard Service をローカルシステムで実行している場合には、以下の設定を使用することができます。
ALLOWED_HOSTS=['localhost']
-
ユーザーがホスト名の代わりに、またはホスト名に加えて IP アドレスを使用する場合の例は以下のようになります。
ALLOWED_HOSTS=['dashboard.example.com', '192.168.122.200']
注意
ALLOWED_HOSTSの設定についての詳しい説明は Django のマニュアル を参照してください。 -
-
Web サーバーを再起動して全変更を適用します。
#service httpd restart
10. データベースサーバーのアップグレード
重要
手順 8. データベースサーバーのアップグレード
-
Red Hat Enterprise Linux OpenStack Platform 環境の各ノードから、データベースサーバーにアクセスする Red Hat Enterprise Linux OpenStack Platform サービスをすべて停止します。
-
データベースサーバーがインストールされているシステムでデータベースサーバーを停止します。
#service mysqld stop -
MySQL サーバーのパッケージを削除します。
#yum -y remove mysql-server -
全パッケージを最新の状態にします。
#yum -y update -
MariaDB サーバーのパッケージをインストールします。
#yum -y install mariadb-galera-server -
データベースサーバーがブート時に起動するように設定します。
#chkconfig mysqld on -
データベースサーバーを起動します。
#service mysqld start -
内部
mysqlデータベーススキーマをアップグレードします。プロンプトが表示されたら管理ユーザーのパスワードを入力します。#mysql_upgrade -u root -p -
Red Hat Enterprise Linux OpenStack Platform 環境の各ノードから、データベースサーバーにアクセスする Red Hat Enterprise Linux OpenStack Platform サービスをすべて起動します。
11. OpenStack の再起動
#openstack-service start
