Helion OpenStack 1.1.1 と 3PAR Storage の統合

2015-10-22

Helion OpenStack 1.1.1 と 3PAR Storage の統合

Machine-translated — the English original is authoritative.

また1日、また1つのOpenStack統合 – 今日は、cinderブロックストレージ(別名、ボリュームまたは永続ストレージ)で使用するために、HOS 1.1.1に対してiSCSI経由で3PARストレージを統合しました。いつも通り、始める前にここで最新のハードウェアの前提条件を確認してください – http://docs.hpcloud.com/#commercial/GA1/1.1commercial.install-GA-supportmatrix.html

前提条件
このブログ記事の前提として、3PARストレージについて何も知らないこと、そして3PAR自体を構成するためのストレージ管理者が近くにいることを想定しています。その3PAR管理者は、WebサービスAPI(WSAPI)が有効になっていることを確認し、構成詳細[ユーザー名、パスワード、APIエンドポイント、ポート]を提供する必要があります。ストレージコントローラにSSH接続し、CLiを通じて構成することでこれを有効にできます – ロケットサイエンティストは必要ありません。また、cinderがボリュームを切り出すためのストレージプールとして機能する少なくとも1つのCommon Provisioning Group(CPG)が構成されている必要があります。

管理用とiSCSI用の両方のIPアドレスは、管理LANからアクセス可能であり、これらのネットワーク間のファイアウォールで関連するポートが開いている必要があります。これらのネットワーク間の接続性を確認する必要がある場合、前の投稿で詳述されたnetcatまたはncツールが役立つでしょう。

最後の前提条件は、統合する完全にインストールされ構成されたHOS 1.1.1システムを持っていることです 🙂

統合

1. StoreServをクラウドインベントリに登録する

[注: より詳細な情報を得るために –debug オプションを使用しました。これは必須ではありません]


# sirius --debug register-storeserv --name 7200_01 --hostname 10.223.148.158 --username storadm --password bananas --port 8080 --san-ip 10.223.148.158 --san-username storadm --san-password bananas --device-type iscsi --iscsi-ip 10.123.25.250 |& tee 3par_error.log
DEBUG (v2:77) Making authentication request to http://127.0.0.1:5000/v2.0/tokens
INFO (connectionpool:188) Starting new HTTP connection (1): 127.0.0.1
DEBUG (connectionpool:364) "POST /v2.0/tokens HTTP/1.1" 200 3860
DEBUG (iso8601:184) Parsed 2015-10-22T10:55:30Z into {'tz_sign': None, 'second_fraction': None, 'hour': u'10', 'daydash': u'22', 'tz_hour': None, 'month': None, 'timezone': u'Z', 'second': u'30', 'tz_minute': None, 'year': u'2015', 'separator': u'T', 'monthdash': u'10', 'day': None, 'minute': u'55'} with default timezone <iso8601.iso8601.Utc object at 0x7fcb3fc0c090>
DEBUG (iso8601:140) Got u'2015' for 'year' with default None
DEBUG (iso8601:140) Got u'10' for 'monthdash' with default 1
DEBUG (iso8601:140) Got 10 for 'month' with default 10
DEBUG (iso8601:140) Got u'22' for 'daydash' with default 1
DEBUG (iso8601:140) Got 22 for 'day' with default 22
DEBUG (iso8601:140) Got u'10' for 'hour' with default None
DEBUG (iso8601:140) Got u'55' for 'minute' with default None
DEBUG (iso8601:140) Got u'30' for 'second' with default None
DEBUG (http:110) curl -i -X POST -H 'X-Auth-Token: 6dd66fa3130f4ec38fdda6e43e3553be' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'User-Agent: python-siriusclient' -d '{"username": "storadm", "iscsi_ip": "10.123.25.250", "san_password": "bananas", "hostname": "10.223.148.158", "device_type": "iscsi", "san_username": "storadm", "password": "bananas", "san_ip": "10.223.148.158",
port": "8080", "name": "7200_01"}' http://10.123.25.14:9000/v1/block/device/storeserv
DEBUG (http:120)
HTTP/1.0 200 OK
date: Thu, 22 Oct 2015 06:55:31 GMT
content-length: 439
content-type: application/json; charset=UTF-8
server: WSGIServer/0.1 Python/2.7.8

{"storeserv": {"username": "storadm", "status": "registered", "san_password": "bananas", "deleted": false, "updated_at": "2015-10-22 06:55:31.262364", "device_type": "iscsi", "san_username": "storadm", "password": "bananas", "san_ip": "10.223.148.158", "port": "8080", "name": "7200_01", "iscsi_ip": "10.123.25.250", "created_at": "2015-10-22 06:55:31.262355", "hostname": "10.223.148.158", "id": "e29f3c58-7889-11e5-96e9-0017a477c444"}}

+--------------+--------------------------------------+
| Property             | Value                                |
+--------------+--------------------------------------+
| created_at           | 2015-10-22 06:55:31.262355           |
| deleted              | False                                |
| device_type          | iscsi                                |
| hostname             | 10.223.148.158                       |
| id                   | e29f3c58-7889-11e5-96e9-0017a477c444 |
| iscsi_ip             | 10.123.25.250                        |
| name                | 7200_01                              |
| password             | <SANITIZED>                          |
| port                 | 8080                                 |
| san_ip               | 10.223.148.158                       |
| san_password     | bananas                             |
| san_username     | storadm                              |
| status               | registered                           |
| updated_at           | 2015-10-22 06:55:31.262364           |
| username             | storadm                              |
+--------------+--------------------------------------+
#

2. StoreServ CPGをクラウドインベントリに登録する
まず、利用可能なCPGを一覧表示します – 正しいものを選択するように非常に注意してください – 孔子の言葉「二度測れ、一度切れ」实际上、それはツールマン・ティムだったかもしれません。


# sirius storeserv-show e29f3c58-7889-11e5-96e9-0017a477c444 --cpg-list true
+--------------------------------------------------------+------------------+
| UUID                                                | Name             |
+--------------------------------------------------------+------------------+
| 137fcaf9-670b-43c2-89c5-1d28247f5847        | CPG_DEMO_Openstack |
| 49671c1e-aee0-4527-9844-a384a4fd28c0         | CPG_ISCSI_R1        |
| fab7065b-ca61-4346-9546-d8631741f5d8         | CPG_ISCSI_R5        |
+--------------------------------------+------------------+
#


正しいCPGを登録します

# sirius register-cpg --cpgs 137fcaf9-670b-43c2-89c5-1d28247f5847 --storeserv-id  e29f3c58-7889-11e5-96e9-0017a477c444
Successfully registered the StoreServ CPG(s)

結果を確認します


# sirius cpg-list --storeserv-id e29f3c58-7889-11e5-96e9-0017a477c444
+--------------------------------------+------------------+------------+
| ID                                               | Name                     | Status     |
+--------------------------------------+------------------+------------+
| 137fcaf9-670b-43c2-89c5-1d28247f5847     | CPG_DEMO_Openstack     | registered |
+--------------------------------------+------------------+------------+
#

3. StoreServ CPGをクラウドのバックエンドとして追加する


# sirius add-storeserv-backend --storeserv-id  e29f3c58-7889-11e5-96e9-0017a477c444 --cpg-id 137fcaf9-670b-43c2-89c5-1d28247f5847 --backend-name   3par_iscsi_1
+---------------------------+--------------------------------------------------------------+
| Property                              | Value                                                        |
+---------------------------+--------------------------------------------------------------+
| backend_id                        | CPG_137fcaf9-670b-43c2-89c5-1d28247f5847                     |
| hp3par_api_url                    | https://10.223.148.158:8080/api/v1                           |
| hp3par_cpg                        | CPG_DEMO_Openstack                                             |
| hp3par_iscsi_chap_enabled     | true                                                         |
| hp3par_password                   | bananas                                                     |
| hp3par_username                   | storadm                                                      |
| iscsi_ip_address                  | 10.123.25.250                                                |
| san_ip                                | 10.223.148.158                                               |
| san_login                             | storadm                                                      |
| san_password                      | bananas                                                     |
| volume_backend_name           | 3par_iscsi_1                                                 |
| volume_driver                     | cinder.volume.drivers.san.hp.hp_3par_iscsi.HP3PARISCSIDriver |
+---------------------------+-------------------------------------------------------------+
#

確認します


# sirius cpg-show --storeserv-id e29f3c58-7889-11e5-96e9-0017a477c444 --cpg-id 137fcaf9-670b-43c2-89c5-1d28247f5847 --backend-name 3par_iscsi_1

選択されたCPGのcinder.confセクションプレビュー:

[CPG_137fcaf9-670b-43c2-89c5-1d28247f5847]
san_password=bananas
hp3par_username=storadm
volume_backend_name=3par_iscsi_1
san_login=storadm
hp3par_api_url=https://10.223.148.158:8080/api/v1
volume_driver=cinder.volume.drivers.san.hp.hp_3par_iscsi.HP3PARISCSIDriver
hp3par_password=bananas
hp3par_cpg=CPG_DEMO_Openstack
hp3par_iscsi_chap_enabled=true
san_ip=10.223.148.158
iscsi_ip_address=10.123.25.250


#

登録されているすべてのバックエンドを一覧表示します


# sirius storeserv-backend-list
+------------------------------------------+------------------+---------------------+
| Backend ID                                           | CPG Name                 | Volume Backend Name |
+------------------------------------------+------------------+---------------------+
| CPG_137fcaf9-670b-43c2-89c5-1d28247f5847     | CPG_DEMO_Openstack     | 3par_iscsi_1        |
+------------------------------------------+------------------+---------------------+
#

4. StoreServ CPGのcinder構成をプレビューする

これは、オーバークラウドの更新を実行した後に(以下のステップ6)、関連するノード(コントローラおよびコンピュート)のcinder.confファイルに自動的(heat)に更新される詳細を出力します。
1日にさらに時間があれば、この機能を使用して、構成ファイルに直接貼り付けることができる完全な「切り取り&貼り付け」出力を作成するようにチケットを起票したいと思いますが、代わりに切り取り、貼り付け、そして「3par :」を追加する際に間違いを犯す可能性があります。


# sirius storeserv-backend-list --format json
{
    "DEFAULT": {
        "enabled_backends": [
            "CPG_137fcaf9-670b-43c2-89c5-1d28247f5847"
        ]
    },
    "CPG_137fcaf9-670b-43c2-89c5-1d28247f5847": {
        "san_password": "bananas",
        "hp3par_username": "storadm",
        "volume_backend_name": "3par_iscsi_1",
        "san_login": "storadm",
        "hp3par_api_url": "https://10.223.148.158:8080/api/v1",
        "volume_driver": "cinder.volume.drivers.san.hp.hp_3par_iscsi.HP3PARISCSIDriver",
        "hp3par_password": "bananas",
        "hp3par_cpg": "CPG_DEMO_Openstack",
        "hp3par_iscsi_chap_enabled": "true",
        "san_ip": "10.223.148.158",
        "iscsi_ip_address": "10.123.25.250"
    }
}
#

5. オーバークラウド構成JSON(別名、kvm-custom-ips.json)を更新する

重要: 公式ドキュメントはここで混乱を招きます。それは /root/overcloud-config.json ファイルを参照していますが、公式ドキュメントに従ってHOS1.1.1をインストールした場合、このファイルは存在しません 🙂 参照すべきファイルは、クラウドを構築する際に構成される /root/tripleo/configs/kvm-custom-ips.json です。

修正前のファイルの外観は次の通りです


{
    "cloud_type": "KVM",
    "vsa_scale": 0,
    "vsa_ao_scale": 0,
    "so_swift_storage_scale": 0,
    "so_swift_proxy_scale": 0,
    "compute_scale": 2,
    "bridge_interface": "em1",
    "virtual_interface": "eth0",
    "fixed_range_cidr": "172.0.100.0/24",
    "control_virtual_router_id": "157",
    "baremetal": {
        "network_seed_ip": "10.123.25.13",
        "network_cidr": "10.123.25.0/24",
        "network_gateway": "10.123.25.1",
        "network_seed_range_start": "10.123.25.14",
        "network_seed_range_end": "10.123.25.34",
        "network_undercloud_range_start": "10.123.25.35",
        "network_undercloud_range_end": "10.123.25.135"
    },
    "neutron": {
        "public_interface_raw_device": "eth0",
        "overcloud_public_interface": "vlan1174",
        "undercloud_public_interface": "eth0"
    },
    "dns": {
        "overcloud_server": "10.123.121.10",
        "undercloud_server": "10.123.121.10",
        "seed_server": "10.123.121.10"
    },
    "ntp": {
        "overcloud_server": "10.123.226.30",
        "undercloud_server": "10.123.226.30",
        "seed_server": "10.123.226.30"
    },
    "floating_ip": {
        "start": "10.123.27.10",
        "end": "10.123.27.250",
        "cidr": "10.123.27.0/24"
    },
    "svc": {
        "interface": "vlan1173",
        "interface_default_route": "10.123.26.1",
        "allocate_start": "10.123.26.10",
        "allocate_end": "10.123.26.250",
        "allocate_cidr": "10.123.26.0/24",
        "overcloud_bridge_mappings": "svcnet1:br-svc",
        "overcloud_flat_networks": "svcnet1",
        "customer_router_ip": "10.123.25.1"
    },
    "codn": {
        "undercloud_http_proxy": "http://fw1.osh.gosh:8080",
        "undercloud_https_proxy": "http://fw1.osh.gosh:8080",
        "overcloud_http_proxy": "http://fw1.osh.gosh:8080",
        "overcloud_https_proxy": "http://fw1.osh.gosh:8080"
    }
}

修正後、ファイルは次のようになります


# cat tripleo/configs/kvm-custom-ips.json
{
    "cloud_type": "KVM",
    "vsa_scale": 0,
    "vsa_ao_scale": 0,
    "so_swift_storage_scale": 0,
    "so_swift_proxy_scale": 0,
    "compute_scale": 2,
    "bridge_interface": "em1",
    "virtual_interface": "eth0",
    "fixed_range_cidr": "172.0.100.0/24",
    "control_virtual_router_id": "157",
    "baremetal": {
        "network_seed_ip": "10.123.25.13",
        "network_cidr": "10.123.25.0/24",
        "network_gateway": "10.123.25.1",
        "network_seed_range_start": "10.123.25.14",
        "network_seed_range_end": "10.123.25.34",
        "network_undercloud_range_start": "10.123.25.35",
        "network_undercloud_range_end": "10.123.25.135"
    },
    "neutron": {
        "public_interface_raw_device": "eth0",
        "overcloud_public_interface": "vlan1174",
        "undercloud_public_interface": "eth0"
    },
    "dns": {
        "overcloud_server": "10.123.121.10",
        "undercloud_server": "10.123.121.10",
        "seed_server": "10.123.121.10"
    },
    "ntp": {
        "overcloud_server": "10.123.226.30",
        "undercloud_server": "10.123.226.30",
        "seed_server": "10.123.226.30"
    },
    "floating_ip": {
        "start": "10.123.27.10",
        "end": "10.123.27.250",
        "cidr": "10.123.27.0/24"
    },
    "svc": {
        "interface": "vlan1173",
        "interface_default_route": "10.123.26.1",
        "allocate_start": "10.123.26.10",
        "allocate_end": "10.123.26.250",
        "allocate_cidr": "10.123.26.0/24",
        "overcloud_bridge_mappings": "svcnet1:br-svc",
        "overcloud_flat_networks": "svcnet1",
        "customer_router_ip": "10.123.25.1"
    },
    "3par": {
      "DEFAULT": {
        "enabled_backends": [
            "CPG_137fcaf9-670b-43c2-89c5-1d28247f5847"
        ]
    },
    "CPG_137fcaf9-670b-43c2-89c5-1d28247f5847": {
        "san_password": "bananas",
        "hp3par_username": "storadm",
        "volume_backend_name": "3par_iscsi_1",
        "san_login": "storadm",
        "hp3par_api_url": "https://10.223.148.158:8080/api/v1",
        "volume_driver": "cinder.volume.drivers.san.hp.hp_3par_iscsi.HP3PARISCSIDriver",
        "hp3par_password": "bananas",
        "hp3par_cpg": "CPG_DEMO_Openstack",
        "hp3par_iscsi_chap_enabled": "true",
        "san_ip": "10.223.148.158",
        "iscsi_ip_address": "10.123.25.250"
    }
   },
    "codn": {
        "undercloud_http_proxy": "http://fw1.osh.gosh:8080",
        "undercloud_https_proxy": "http://fw1.osh.gosh:8080",
        "overcloud_http_proxy": "http://fw1.osh.gosh:8080",
        "overcloud_https_proxy": "http://fw1.osh.gosh:8080"
    }
}

6. 上記のファイルをソースし、オーバークラウド構成を更新する

シードVM(TripleOのクラウドの最初のもの)から、新しい構成ファイルをソースします


source tripleo/tripleo-incubator/scripts/hp_ced_load_config.sh tripleo/configs/kvm-custom-ips.json

そして、オーバークラウド heat-templates を再構成し、HOSインストーラを使用して適用します


bash -x tripleo/tripleo-incubator/scripts/hp_ced_installer.sh --update-overcloud |& tee 3ParIntegration.log

出力は次のようになります:


+ set -eu
+ set -o pipefail
++ basename tripleo/tripleo-incubator/scripts/hp_ced_installer.sh
+ SCRIPT_NAME=hp_ced_installer.sh
++ dirname tripleo/tripleo-incubator/scripts/hp_ced_installer.sh
+ SCRIPT_HOME=tripleo/tripleo-incubator/scripts
+ umask 077
+ export LANG=C
+ LANG=C
++ awk -F= '{print $1}'
++ grep '^LC_'
++ env
+ export SKIP_INSTALL_SEED=0
+ SKIP_INSTALL_SEED=0
+ export SKIP_INSTALL_UNDERCLOUD=0
+ SKIP_INSTALL_UNDERCLOUD=0
+ export SKIP_INSTALL_OVERCLOUD=0
+ SKIP_INSTALL_OVERCLOUD=0
+ export UPDATE_UNDERCLOUD=0
+ UPDATE_UNDERCLOUD=0
+ export UPDATE_OVERCLOUD=0
+ UPDATE_OVERCLOUD=0
+ export SKIP_DEMO=0
+ SKIP_DEMO=0
+ export POWER_OFF_NODES_WAIT_INTVL=15
+ POWER_OFF_NODES_WAIT_INTVL=15
+ export TRIPLEO_ROOT=/root/tripleo
+ TRIPLEO_ROOT=/root/tripleo
+ CE_FLAG=/root/tripleo/HP_Helion_OpenStack
+ BUILD_FLAG=/root/tripleo/HP_Helion_Version
+ '[' -e /root/tripleo/HP_Helion_Version ']'
++ cat /root/tripleo/HP_Helion_Version
+ VERSION='jenkins-release-ee-on-hlinux-hp-ee-stable-1.0-100: Thu May 14 07:40:45 UTC 2015'
+ export 'BUILD_TAG=jenkins-release-ee-on-hlinux-hp-ee-stable-1.0-100: Thu May 14 07:40:45 UTC 2015'
+ BUILD_TAG='jenkins-release-ee-on-hlinux-hp-ee-stable-1.0-100: Thu May 14 07:40:45 UTC 2015'
+ echo

.......SKIPPING LOTS OF OUTPUT.......

"value": "true"}, {"option": "rpc_response_timeout", "value": "120"}, {"option": "control_exchange", "value": "cinder"}, {"option": "notification_driver", "value": "messaging"}, {"comment": "Common hostname to avoid singleton limitation of Cinder volume manager", "option": "host", "value": "ha-volume-manager"}, {"option": "enabled_backends", "value": "CPG_137fcaf9-670b-43c2-89c5-1d28247f5847"}]}, {"section": "lvm-1", "values": [{"option": "volume-group", "value": "cinder-volumes"}, {"option": "lvm_type", "value": "thin"}, {"option": "volume_driver", "value": "cinder.volume.drivers.lvm.LVMISCSIDriver"}, {"option": "volume_backend_name", "value": "LVM_iSCSI"}]}, {"section": "CPG_137fcaf9-670b-43c2-89c5-1d28247f5847", "values": [{"option": "san_password", "value": "bananas"}, {"option": "hp3par_username", "value": "storadm"}, {"option": "volume_backend_name", "value": "3par_iscsi_1"}, {"option": "san_login", "value": "storadm"}, {"option": "hp3par_api_url", "value": "https://10.223.148.158:8080/api/v1"}, {"option": "volume_driver", "value": "cinder.volume.drivers.san.hp.hp_3par_iscsi.HP3PARISCSIDriver"}, {"option": "hp3par_password", "value": "bananas"}, {"option": "hp3par_cpg", "value": "CPG_DEMO_Openstack"}, {"option": "hp3par_iscsi_chap_enabled", "value": "true"}, {"option": "san_ip", "value": "10.223.148.158"}, {"option": "iscsi_ip_address", "value": "10.123.25.250"}]}]}, "swift": {"config": [{"section": "storage-policy:0", "values": [{"option": "name", "value": "Policy-0"}, {"option": "default", "value": "yes"}]}]}, "ceilometer_pipeline": {"sources": [{"interval": 604800, "meters": [{"name": "instance"}, {"name": "image"}, {"name": "image.size"}, {"name": "image.upload"}, {"name": "image.delete"}, {"name": "volume"}, {"name": "volume.size"}, {"name": "snapshot"}, {"name": "snapshot.size"}, {"name": "ip.floating"}, {"name": "network.*"}, {"name": "compute.instance.create.end"}, {"name": "compute.instance.delete.end"},

.......SKIPPING LOTS OF OUTPUT.......

UNDERCLOUD Endpoint: "http://10.123.25.14:5000/v2.0"
UNDERCLOUD IP: "10.123.25.14"
OVERCLOUD Endpoint: "https://10.123.25.35:5000/v2.0/"
OVERCLOUD IP: "10.123.25.35"
++ date
+ echo 'HP - completed - Thu Oct 22 08:49:18 UTC 2015'
HP - completed - Thu Oct 22 08:49:18 UTC 2015
+ exit 0

この場合、「exit 0」は成功を意味します。

7. 追加仕様キー値ペア 'volume_backend_name' と '3par_iscsi_1' を持つVolumeTypeを作成する
これでCLiを離れて、Horizon(オーバークラウド)にジャンプし、VolumeTypeを構成し、ストレージバックエンドに関連付ける最終ステップに進むことができます。詳細は http://docs.hpcloud.com/#commercial/GA1/1.1commercial.map.volumetype.html を参照してください。

これで、3Par - 高価な永続ストレージ - でcinderを使用してボリュームを作成する能力が得られるはずです。より手頃なクラウドスケールのブロック/ボリュームソリューションについては、オープンソースの代替手段であるCephを検討してください。

Originally published on allthingscloud.eu (2015-10-22).

← All posts