付録A Red Hat OpenStack Platform 10 HA 環境の構築
『Red Hat Ceph Storage for the Overcloud』 ガイドには、本ガイドで説明しているタイプの高可用性 OpenStack 環境のデプロイの手順が記載されています。また、『director のインストールと使用方法』ガイドも全プロセスにわたって参考のために使用しました。
A.1. ハードウェアの仕様
以下の表には、本ガイドで検証するデプロイメントに使う仕様をまとめています。より良い結果を出すには、お使いのテストデプロイメントで CPU、メモリー、ストレージ、NIC を増やしてください。
表A.1 物理コンピューター
| コンピューターの台数 | 割り当てられた用途 | CPU | メモリー | ディスク空き容量 | 電源管理 | NIC |
|---|---|---|---|---|---|---|
|
1 |
director ノード |
4 |
6144 MB |
40 GB |
IPMI |
2 (外部 x 1、プロビジョニング x 1) + 1 IPMI |
|
3 |
コントローラーノード |
4 |
6144 MB |
40 GB |
IPMI |
3 (オーバークラウド上のボンディング x 2、プロビジョニング x 1) + 1 IPMI |
|
3 |
Ceph Storage ノード |
4 |
6144 MB |
40 GB |
IPMI |
3 (オーバークラウド上のボンディング x 2、プロビジョニング x 1) + 1 IPMI |
|
2 |
コンピュートノード (必要に応じて追加) |
4 |
6144 MB |
40 GB |
IPMI |
3 (オーバークラウド上のボンディング x 2、プロビジョニング x 1) + 1 IPMI |
以下の一覧では、director 以外に割り当てられているノードに関連付けられた一般的な機能と接続について説明します。
- コントローラーノード
- ストレージ以外の OpenStack サービスの多くは、コントローラーノード上で稼働します。全サービスは、この 3 つのノードで複製されます (Active/Active や Active/Passive)。3 つのノードには、信頼性の高い HA が必要です。
- Ceph Storage ノード
- ストレージサービスは Ceph Storage ノードで稼働して、Ceph Storage 領域プールをコンピュートノードに提供します。この場合も、3 つのノードには、HA を指定する必要があります。
- コンピュートノード
- 仮想マシンは、実際にはコンピュートノードで稼働します。コンピュートノードのシャットダウンやノード間の仮想マシンの移行機能など、キャパシティー要件を満たすのに必要とされる数のコンピュートノードを指定することができます。仮想マシンがストレージにアクセスできるようにするには、コンピュートノードをストレージネットワークに接続する必要があります。また、仮想マシンが他のコンピュートノード上の仮想マシンや交換ネットワークにアクセスしてサービスを利用できるようするには、コンピュートノードをテナントネットワークに接続する必要があります。
表A.2 物理および仮想ネットワーク
| 物理 NIC | ネットワークの理由 | VLAN | 用途 |
|---|---|---|---|
|
eth0 |
プロビジョニングネットワーク (アンダークラウド) |
N/A |
director からの全ノードの管理 (アンダークラウド) |
|
eth1 および eth2 |
コントローラー/外部 (オーバークラウド) |
N/A |
VLAN を使用したボンディング NIC |
|
外部ネットワーク |
VLAN 100 |
外部環境からテナントネットワーク、内部 API、OpenStack Horizon Dashboard へのアクセスの許可 | |
|
内部 API |
VLAN 201 |
コンピュートノードとコントローラーノード間の内部 API へのアクセス提供 | |
|
ストレージアクセス |
VLAN 202 |
コンピュートノードと下層のストレージメディアとの接続 | |
|
ストレージ管理 |
VLAN 203 |
ストレージメディアの管理 | |
|
テナントネットワーク |
VLAN 204 |
OpenStack に対するテナントネットワークの提供 |
以下のハードウェアも必要です。
- プロビジョニングネットワーク用のスイッチ
- このスイッチは、director システム (アンダークラウド) を Red Hat OpenStack Platform 環境の全コンピューター (オーバークラウド) に接続できる必要があります。このスイッチに接続されている、各オーバークラウドノードの NIC は、director から PXE ブートできなければなりません。また、スイッチの portfast が有効に設定されていることを確認してください。
- コントローラー/外部ネットワーク用のスイッチ
- このスイッチは、図 1 に示した VLAN 用に VLAN タグ付けをするように設定する必要があります。外部ネットワークには、VLAN 100 のトラフィックのみを許可すべきです。
- フェンシング用のハードウェア
- この構成では、Pacemaker とともに使用するように定義されたハードウェアがサポートされています。サポートされているフェンシングデバイスは、Pacemaker の stonith というツールを使用して決定することができます。詳しい情報は、『director のインストールと使用方法』ガイドの「コントローラーノードのフェンシング」の項を参照してください。
A.2. アンダークラウドの設定ファイル
以下の項には、本ガイドで使用しているテスト設定の関連する設定ファイルを記載します。IP アドレスの範囲を変更する場合には、図1.1「director を使用してデプロイした OpenStack HA 環境」のような図を作成して、変更後のアドレス設定を記録することを検討してください。
instackenv.json
{
"nodes": [
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.11",
"mac": [
"2c:c2:60:3b:b3:94"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "1",
"pm_user": "admin"
},
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.12",
"mac": [
"2c:c2:60:51:b7:fb"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "1",
"pm_user": "admin"
},
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.13",
"mac": [
"2c:c2:60:76:ce:a5"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "1",
"pm_user": "admin"
},
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.51",
"mac": [
"2c:c2:60:08:b1:e2"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "1",
"pm_user": "admin"
},
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.52",
"mac": [
"2c:c2:60:20:a1:9e"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "1",
"pm_user": "admin"
},
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.53",
"mac": [
"2c:c2:60:58:10:33"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "1",
"pm_user": "admin"
},
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.101",
"mac": [
"2c:c2:60:31:a9:55"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "2",
"pm_user": "admin"
},
{
"pm_password": "testpass",
"memory": "6144",
"pm_addr": "10.100.0.102",
"mac": [
"2c:c2:60:0d:e7:d1"
],
"pm_type": "pxe_ipmitool",
"disk": "40",
"arch": "x86_64",
"cpu": "2",
"pm_user": "admin"
}
],
"overcloud": {"password": "7adbbbeedc5b7a07ba1917e1b3b228334f9a2d4e",
"endpoint": "http://192.168.1.150:5000/v2.0/"
}
}
undercloud.conf
[DEFAULT] image_path = /home/stack/images local_ip = 10.200.0.1/24 undercloud_public_vip = 10.200.0.2 undercloud_admin_vip = 10.200.0.3 undercloud_service_certificate = /etc/pki/instack-certs/undercloud.pem local_interface = eth0 masquerade_network = 10.200.0.0/24 dhcp_start = 10.200.0.5 dhcp_end = 10.200.0.24 network_cidr = 10.200.0.0/24 network_gateway = 10.200.0.1 #discovery_interface = br-ctlplane discovery_iprange = 10.200.0.150,10.200.0.200 discovery_runbench = 1 undercloud_admin_password = testpass ...
network-environment.yaml
resource_registry:
OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/cinder-storage.yaml
OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml
OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml
OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/swift-storage.yaml
OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/ceph-storage.yaml
parameter_defaults:
InternalApiNetCidr: 172.16.0.0/24
TenantNetCidr: 172.17.0.0/24
StorageNetCidr: 172.18.0.0/24
StorageMgmtNetCidr: 172.19.0.0/24
ExternalNetCidr: 192.168.1.0/24
InternalApiAllocationPools: [{'start': '172.16.0.10', 'end': '172.16.0.200'}]
TenantAllocationPools: [{'start': '172.17.0.10', 'end': '172.17.0.200'}]
StorageAllocationPools: [{'start': '172.18.0.10', 'end': '172.18.0.200'}]
StorageMgmtAllocationPools: [{'start': '172.19.0.10', 'end': '172.19.0.200'}]
# Leave room for floating IPs in the External allocation pool
ExternalAllocationPools: [{'start': '192.168.1.150', 'end': '192.168.1.199'}]
InternalApiNetworkVlanID: 201
StorageNetworkVlanID: 202
StorageMgmtNetworkVlanID: 203
TenantNetworkVlanID: 204
ExternalNetworkVlanID: 100
# Set to the router gateway on the external network
ExternalInterfaceDefaultRoute: 192.168.1.1
# Set to "br-ex" if using floating IPs on native VLAN on bridge br-ex
NeutronExternalNetworkBridge: "''"
# Customize bonding options if required
BondInterfaceOvsOptions:
"bond_mode=active-backup lacp=off other_config:bond-miimon-interval=100"
A.3. オーバークラウドの設定ファイル
以下の設定ファイルは、本ガイドで使用しているデプロイメントの実際にオーバークラウドの設定を反映しています。
/etc/haproxy/haproxy.cfg (コントローラーノード)
このファイルは、HAProxy が管理するサービスを特定します。これには、HAProxy によってモニタリングされるサービスを定義する設定が記載されています。このファイルは、コントローラーノード上に存在し、全コントローラーノードで同じ内容となります。
# This file managed by Puppet global daemon group haproxy log /dev/log local0 maxconn 10000 pidfile /var/run/haproxy.pid user haproxy defaults log global mode tcp option tcpka option tcplog retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout check 10s listen ceilometer bind 172.16.0.10:8777 bind 192.168.1.150:8777 server overcloud-controller-0 172.16.0.13:8777 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8777 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8777 check fall 5 inter 2000 rise 2 listen cinder bind 172.16.0.10:8776 bind 192.168.1.150:8776 option httpchk GET / server overcloud-controller-0 172.16.0.13:8776 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8776 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8776 check fall 5 inter 2000 rise 2 listen glance_api bind 172.18.0.10:9292 bind 192.168.1.150:9292 option httpchk GET / server overcloud-controller-0 172.18.0.17:9292 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.18.0.15:9292 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.18.0.16:9292 check fall 5 inter 2000 rise 2 listen glance_registry bind 172.16.0.10:9191 server overcloud-controller-0 172.16.0.13:9191 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:9191 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:9191 check fall 5 inter 2000 rise 2 listen haproxy.stats bind 10.200.0.6:1993 mode http stats enable stats uri / listen heat_api bind 172.16.0.10:8004 bind 192.168.1.150:8004 mode http option httpchk GET / server overcloud-controller-0 172.16.0.13:8004 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8004 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8004 check fall 5 inter 2000 rise 2 listen heat_cfn bind 172.16.0.10:8000 bind 192.168.1.150:8000 option httpchk GET / server overcloud-controller-0 172.16.0.13:8000 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8000 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8000 check fall 5 inter 2000 rise 2 listen heat_cloudwatch bind 172.16.0.10:8003 bind 192.168.1.150:8003 option httpchk GET / server overcloud-controller-0 172.16.0.13:8003 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8003 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8003 check fall 5 inter 2000 rise 2 listen horizon bind 172.16.0.10:80 bind 192.168.1.150:80 cookie SERVERID insert indirect nocache option httpchk GET / server overcloud-controller-0 172.16.0.13:80 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:80 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:80 check fall 5 inter 2000 rise 2 listen keystone_admin bind 172.16.0.10:35357 bind 192.168.1.150:35357 option httpchk GET / server overcloud-controller-0 172.16.0.13:35357 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:35357 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:35357 check fall 5 inter 2000 rise 2 listen keystone_public bind 172.16.0.10:5000 bind 192.168.1.150:5000 option httpchk GET / server overcloud-controller-0 172.16.0.13:5000 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:5000 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:5000 check fall 5 inter 2000 rise 2 listen mysql bind 172.16.0.10:3306 option httpchk stick on dst stick-table type ip size 1000 timeout client 0 timeout server 0 server overcloud-controller-0 172.16.0.13:3306 backup check fall 5 inter 2000 on-marked-down shutdown-sessions port 9200 rise 2 server overcloud-controller-1 172.16.0.14:3306 backup check fall 5 inter 2000 on-marked-down shutdown-sessions port 9200 rise 2 server overcloud-controller-2 172.16.0.15:3306 backup check fall 5 inter 2000 on-marked-down shutdown-sessions port 9200 rise 2 listen neutron bind 172.16.0.10:9696 bind 192.168.1.150:9696 option httpchk GET / server overcloud-controller-0 172.16.0.13:9696 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:9696 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:9696 check fall 5 inter 2000 rise 2 listen nova_ec2 bind 172.16.0.10:8773 bind 192.168.1.150:8773 option httpchk GET / server overcloud-controller-0 172.16.0.13:8773 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8773 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8773 check fall 5 inter 2000 rise 2 listen nova_metadata bind 172.16.0.10:8775 option httpchk GET / server overcloud-controller-0 172.16.0.13:8775 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8775 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8775 check fall 5 inter 2000 rise 2 listen nova_novncproxy bind 172.16.0.10:6080 bind 192.168.1.150:6080 option httpchk GET / server overcloud-controller-0 172.16.0.13:6080 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:6080 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:6080 check fall 5 inter 2000 rise 2 listen nova_osapi bind 172.16.0.10:8774 bind 192.168.1.150:8774 option httpchk GET / server overcloud-controller-0 172.16.0.13:8774 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:8774 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:8774 check fall 5 inter 2000 rise 2 listen redis bind 172.16.0.11:6379 balance first option tcp-check tcp-check send info\ replication\r\n tcp-check expect string role:master timeout client 0 timeout server 0 server overcloud-controller-0 172.16.0.13:6379 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.16.0.14:6379 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.16.0.15:6379 check fall 5 inter 2000 rise 2 listen swift_proxy_server bind 172.18.0.10:8080 bind 192.168.1.150:8080 option httpchk GET /info server overcloud-controller-0 172.18.0.17:8080 check fall 5 inter 2000 rise 2 server overcloud-controller-1 172.18.0.15:8080 check fall 5 inter 2000 rise 2 server overcloud-controller-2 172.18.0.16:8080 check fall 5 inter 2000 rise 2
/etc/corosync/corosync.conf file (コントローラーノード)
このファイルは、クラスターのインフラストラクチャーを定義し、全コントローラーノード上で利用できます。
totem {
version: 2
secauth: off
cluster_name: tripleo_cluster
transport: udpu
token: 10000
}
nodelist {
node {
ring0_addr: overcloud-controller-0
nodeid: 1
}
node {
ring0_addr: overcloud-controller-1
nodeid: 2
}
node {
ring0_addr: overcloud-controller-2
nodeid: 3
}
}
quorum {
provider: corosync_votequorum
}
logging {
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
}/etc/ceph/ceph.conf (Ceph ノード)
このファイルには、Ceph の高可用性設定が記載されています。これには、モニタリングするホストにホスト名、IP アドレスが含まれます。
[global] osd_pool_default_pgp_num = 128 osd_pool_default_min_size = 1 auth_service_required = cephx mon_initial_members = overcloud-controller-0,overcloud-controller-1,overcloud-controller-2 fsid = 8c835acc-6838-11e5-bb96-2cc260178a92 cluster_network = 172.19.0.11/24 auth_supported = cephx auth_cluster_required = cephx mon_host = 172.18.0.17,172.18.0.15,172.18.0.16 auth_client_required = cephx osd_pool_default_size = 3 osd_pool_default_pg_num = 128 public_network = 172.18.0.17/24

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.