マルチテナントの実装
外部ネットワークとユーザーリソースの分離を使用して、 Netezza Performance Server 11.2.1.1 以降でマルチテナントを実装する方法を説明します。
1.外部ネットワークを分離する。
ネットワークの分離には2時間もかからないかもしれない。
- 外部接続の設定
- IBM Cloud Pak for Data Systemは、専用のファブリックスイッチ・アップリンク・ポートを使用することで、複数の外部ネットワークへの接続をサポートしています。 複数の外部ネットワークへの接続を成功させるには
- 追加ポートをケーブルで接続する。
各ファブリックスイッチのポート45-48は、顧客ネットワークのアップリンク専用です。
- LACPを設定する。
- IBM サポートに連絡して、 IBM Cloud Pak for Data System ネットワーク構成
ymlファイルを更新し、新しい構成を適用します。この手順を完了するには、以下の情報を IBM サポートに伝える必要があります:- 追加接続用にケーブル接続された IBM Cloud Pak for Data System ファブリック・スイッチ・ポート番号:顧客スイッチ・ポートに面した BM Cloud Pak for Data System で設定されたポート・タイプ(トランクまたはアクセス)、トランク・ポートの VLAN 番号。
- 追加ファブリックインターフェースで使用するフローティングIP、ゲートウェイIP、ネットマスク。
ネットワーク・コンフィギュレーションの例
yml顧客側にアクセス・ポートを持つ2つの外部ネットワークを持つファイル:all: children: [...] switches: hosts: FabSw1a: ansible_host: localhost external_connection_enabled: True external_connection_config: external_link1: switch_ports: ['45'] port_config: mtu: 9000 link_speed: 10000 vlans: ['4080'] strict_vlan: false name: h0 lacp_link: True lacp_rate: Fast clag_id: 100 partner_switch: 'Fabsw1b' external_link2: switch_ports: ['46'] port_config: mtu: 9000 link_speed: 10000 vlans: ['4081'] strict_vlan: false name: h1 lacp_link: True lacp_rate: Fast clag_id: 101 partner_switch: 'Fabsw1b' vars: [...] application_network_enabled: True application_network: network1: default_gateway: true vlan: 4080 # just number, no slash prefix: 24 gateway: 192.168.10.1 floating_ip: 192.168.10.10 mtu: <OPTIONAL> custom_routes: <OPTIONAL> network2: default_gateway: false vlan: 4081 # just number, no slash prefix: 24 gateway: 192.168.20.1 floating_ip: 192.168.20.10 mtu: <OPTIONAL> custom_routes: <OPTIONAL>
- 追加ポートをケーブルで接続する。
- 接続レベルの分離
複数の外部ネットワークに接続した後、対応するデータベースを分離することができます。
SET CONNECTION コマンドはデータベースに対する Netezza クライアントのホストアクセスレコードを定義します。SET CONNECTION HOSTSSL DATABASE dev_db IPADDR ‘192.168.10.0’ IPMASK ‘255.255.255.0’ SET CONNECTION HOSTSSL DATABASE qa_db IPADDR ‘192.168.20.0’ IPMASK ‘255.255.255.0’
2.データベースの分離。
スキーマの変更は1時間以内に完了するかもしれない。
- テナントごとにデータベースを作成する:
MYDB.SCH1 (USER)=> CREATE DATABASE dev_db with COLLECT HISTORY ON; MYDB.SCH1 (USER)=> CREATE DATABASE qa_db with COLLECT HISTORY ON; postgressql.confにdisable_crossdb_writeをONに設定する。 詳しくは説明書をご覧ください。
3.ユーザー・リソース・グループの作成
ACLの変更には1時間もかからないかもしれない。
- ユーザーやグループに付与される管理者権限。
- 特定のオブジェクト(例えばテーブルxyz)に関連付けられたオブジェクト権限。
- オブジェクトのクラス(例えば、すべてのテーブル)。
マルチテナントを実現するには、2つのリソースグループを持つことができます。 例えば、development_group や qa_group となります。
各リソースグループには複数のユーザーを入れることができます。 簡単にするために、管理者権限とオブジェクト権限をすべてグループに付与する。 必要に応じて権限を与えることができる。
詳細は Netezza Security Modelを参照。
リソースグループとは、最小リソースパーセンテージがゼロではない特別なグループである。 各リソースグループには、必要な割り当てに応じて、 RESOURCE MINIMUM 、 RESOURCE MAXIMUM 。 詳しくは、 リソースの最小値と最大値を参照。
手順
development_group、qa_groupグループを作成し、RESOURCE MINIMUMとRESOURCE MAXIMUMMYDB.SCH1(USER)=> CREATE GROUP development_group with RESOURCE MINIMUM 60 RESOURCE MAXIMUM 100;MYDB.SCH1(USER)=> CREATE GROUP qa_group with RESOURCE MINIMUM 40 RESOURCE MAXIMUM 100;development_groupとqa_groupに以下の権限を与える:MYDB.SCH1(USER)=> GRANT ALL ADMIN IN dev_db.ALL to group development_group; MYDB.SCH1(USER)=> GRANT ALL ADMIN IN qa_db.ALL to group qa_group; MYDB.SCH1(USER)=> GRANT ALL on dev_db to group development_group; MYDB.SCH1(USER)=> GRANT ALL on qa_db to group qa_group;- ユーザーを作成し、それぞれのグループに追加する:
MYDB.SCH1(USER)=> CREATE USER John with password 'abc123' in group development_group in resourcegroup development_group; MYDB.SCH1(USER)=> CREATE USER Bob with password '3566' in group qa_group in resourcegroup qa_group; - ユーザーをグループに追加します:
MYDB.SCH1(USER)=> ALTER USER Smith in group qa_group in resourcegroup qa_group;