#■Object Storage と Service Gateway
OCI の Object Storage は AWSのS3と同じ インターネット経由でアクセスされるパブリック・サービスです。
Service Gateway は、プライベートIPアドレスを持たないクラウド・リソースに対するプライベート・アクセスを提供します。
Service Gateway を使用している場合は、許可されたVCNまたはCIDRブロックからの要求のみを許可することで、Object Storageを保護できます。
本構成後、Object Storageへのアクセステストを行います。
・CLIによるファイル転送
・Pre-Authenticated Request(PAR)ファイル転送によるデータ共有(おまけ)
・Database Cloudのバックアップテスト
・Cross Region Copy(おまけ)
#■本検証構成イメージ
Private Subnet で構成された DBインスタンスが Object Storage に プライベート・アクセスできるよう Service Gateway を構成します
#■Service Gateway設定
##●1. Service Gateway作成
①設定するVCNから「Service Gateways」を選択し、[Create Service Gateway]ボタンをクリックして、
以下項目を設定し、[Create]ボタンをクリック
・NAME:適切な名前を設定
・SERVICES: Object Storage を選択
②作成した Service Gatewayを確認
##●2. Route Table設定
①設定するVCNから、設定する「Route Tables」を選択し、[Edit Route Rules]ボタンをクリックし、以下設定を行い[SAVE]をクリック
・TARGET TYPE:「Service Gateway」を選択
・DESTINATION SERVICE:「Object Storage」 を選択
・TARGET SERVICE GATEWAY:作成した Service Gateway を選択
②設定されたことを確認
##●3. Security Lists(Firewall) 設定
例)HTTPS(TCPポート443)のトラフィックをサブネットからオブジェクトストレージに出力するステートフルルールを追加したい場合、ルールを追加する手順は次のようにします
①設定するVCNから、設定する「Security Lists」を選択し、[Edit Edit All Rules]ボタンをクリックして、以下項目を設定し、[Save Security List Rules]ボタンをクリック
・Stateless check box : チェック無し
・Destination Type: 「Service」を選択
・Destination Service: 「Object Storage」を選択
・IP Protocol: 「TCP」を選択
・Source Port Range: 「All」を記入
・Destination Port Range: 「443」を記入
②設定されたことを確認
#■Object Storageアクセス確認
上記手順により Service Gateway 経由で Object Storageへアクセスできます
まず、Object Storageのbucketを作成しテストデータを転送します
##●1. bucket作成
ここでは、OCIの CLI(Command Line Interface)で test-bucket01 バケットを作成
[opc@db01 ~]$ oci os bucket create --name test-bucket01 -c ocid1.compartment.oc1..aaaaaa4acompartment
{
"data": {
"compartment-id": "ocid1.compartment.oc1..aaaaaa4acompartment",
"created-by": "ocid1.user.oc1..aaaaate32rguser",
"defined-tags": {},
"etag": "ccec3fac-efc7-4072-9723-f265fd3fe8e8",
"freeform-tags": {},
"metadata": {},
"name": "test-bucket01",
"namespace": "namespace014419",
"public-access-type": "NoPublicAccess",
"storage-tier": "Standard",
"time-created": "2018-08-07T03:55:22.108000+00:00"
},
"etag": "ccec3fac-efc7-4072-9723-f265fd3fe8e8"
}
##●2. bucket作成確認
[opc@db01 ~]$ oci os bucket list -c ocid1.compartment.oc1..aaaaaa4acompartment --output table
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
| compartment-id | created-by | defined-tags | etag | freeform-tags | name | namespace | time-created |
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
| ocid1.compartment.oc1..aaaaaa4acompartment | ocid1.user.oc1..aaaaate32rguser | None | etag-1234-5678 | None | test-bucket01 | namespace014419 | 2018-08-07T03:55:22.108000+00:00 |
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
※作成したBuket削除手順
$ oci os bucket delete --name test-bucket01
##●3. テストファイルをBuketへ配置
・テストファイル作成
[opc@db01 ~]$ echo "This file is test file01" > /tmp/test-file01.txt
##●4. テストファイル転送
[opc@db01 ~]$ oci os object put -ns namespace014419 -bn test-bucket01 --file /tmp/test-file01.txt --name test-file01.txt --no-multipart
Uploading object [####################################] 100%
{
"etag": "72D0E7F54E161C95E053C23BC00AFEAD",
"last-modified": "Tue, 7 Aug 2018 04:01:48 GMT",
"opc-content-md5": "TtMIEUm1JQ1/QFy5M/h4iA=="
}
##●5. テストファイル転送確認
[opc@db01 ~]$ oci os object list -ns namespace014419 -bn test-bucket01 --output table
+--------------------------+-----------------+------+----------------------------------+
| md5 | name | size | time-created |
+--------------------------+-----------------+------+----------------------------------+
| TtMIEUm1JQ1/QFy5M/h4iA== | test-file01.txt | 25 | 2018-08-07T04:01:48.810000+00:00 |
+--------------------------+-----------------+------+----------------------------------+
prefixes: []
##●6. ディレクトリ配下転送
ディレクトリとそのすべてのサブディレクトリ内のファイルのバケットへのアップロードするには次のようにします
[opc@db01 ~]$ oci os object bulk-upload -bn test-bucket01 --src-dir /tmp/
Uploaded tpch02_01.dmp [####################################] 100%
Uploaded tpch02_02.dmp [####################################] 100%
Uploaded tpch02_03.dmp [####################################] 100%
{
"skipped-objects": [],
"upload-failures": {},
"uploaded-objects": {
"tpch02_01.dmp": {
"etag": "59928c1e-570c-40a4-9396-f5ab756010e4",
"last-modified": "Sun, 12 Sep 2021 11:22:58 GMT",
"opc-content-md5": "ABOb6Q1MDNIlEsI6rR+oYQ=="
},
"tpch02_02.dmp": {
"etag": "074ed283-1c46-42fa-8c0e-9b9733acc112",
"last-modified": "Sun, 12 Sep 2021 11:23:21 GMT",
"opc-multipart-md5": "OEd60NVhjpF6pIV2UlRamw==-50"
},
"tpch02_03.dmp": {
"etag": "313a4993-07fd-4181-a8d3-4ed59e86930a",
"last-modified": "Sun, 12 Sep 2021 11:24:17 GMT",
"opc-multipart-md5": "xhLJI2sWlSKFg06e9n6ePg==-50"
}
}
}
#■Service Gateway 通信可否テスト
Internet Gatewayは無いため、Service Gateway経由でしか Object Storage にアクセスできません
Service Gatewayの Allow / Block 許可設定で Object Storage にアクセスできるか確認します
##●1. Internetアクセスできないこと確認
ます、インターネットに接続できないことを確認
インターネット アクセスを行うとTime out でErrorが出力されます
[opc@db01 ~]$ curl https://www.oracle.com/
curl: (7) Failed to connect to 2a00:1450:400e:80b::2003: Cannot assign requested address
##●2. Service Gateway 通信を 停止
Service Gatewayの コンソール画面で [Block Traffic]をクリック
これで、Object Storage にアクセスすることができなくなります
##●3. Object Storage アクセスできないことを確認
bucket アクセスを行うとTime out でErrorが出力されます
[opc@db01 ~]$ oci os bucket list -c ocid1.compartment.oc1..aaaaaa4acompartment --output table
Usage: oci os bucket list [OPTIONS]
Error: Unable to retrieve namespace internally. Please provide the namespace using the option "--['namespace-name']".
##●4. Service Gateway 通信を許可
Service Gateway の コンソール画面で [Allow Traffic]をクリック
これで、Object Storage にアクセスすることがでます
##●5. Object Storage アクセス確認
bucket アクセスできることを確認
[opc@db01 ~]$ oci os bucket list -c ocid1.compartment.oc1..aaaaaa4acompartment --output table
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
| compartment-id | created-by | defined-tags | etag | freeform-tags | name | namespace | time-created |
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
| ocid1.compartment.oc1..aaaaaa4acompartment | ocid1.user.oc1..aaaaate32rguser | None | etag-1234-abcd | None | test-bucket01 | namespace014419 | 2018-08-07T07:34:22.607000+00:00 |
+--------------------------------------------+---------------------------------+--------------+----------------+---------------+---------------+-------------+----------------------------------+
#■ Pre-Authenticated Request(PAR)ファイル転送
"Object StorageのPre-Authenticated Request(PAR)機能は、第三者との間でデータを共有する仕組みで、Object Storage 内の共有したい対象データに期間限定でURLリンクを発行する機能です。
この発行されたリンクをLinuxの wget コマンドで取得することができます。
このwget はPrivate Subnet でもService Gatewayにより取得が可能です。
##● PAR作成
① 共有したいファイルの [Pre-Authenticated Requests]を選択し[Create Pre-Authenticated Request]をクリック
② PAR設定
以下情報を設定し、[Create Pre-Authenticated Request]をクリック
NAME:適切な名前を設定
PRE-AUTHENTICATED REQUEST TARGET:BUKET/OBJECTを選択
ACCESS TYPE:READS/WRITES権限を選択
EXPIRATOPN DATE/TIME:有効期限を設定
③ 作成されたPARのURLリンクをCopy
##● PAR ファイル 取得と確認
取得したい Private Subnet にある Instance から wget でファイル取得
[opc@db01 ~]$ wget https://objectstorage.us-ashburn-1.oraclecloud.com/p/gSDTyRwGD/test-tenancy/bucket/test/test.txt
--2018-08-04 00:49:47-- https://objectstorage.us-ashburn-1.oraclecloud.com/p/gSDTyRwGD/test-tenancy/bucket /test/test.txt
Resolving objectstorage.us-ashburn-1.oraclecloud.com...
Connecting to objectstorage.us-ashburn-1.oraclecloud.com|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4 [text/plain]
Saving to: “test.txt”
100%[======================================>] 4 --.-K/s in 0s
2018-08-04 00:49:53 (225 KB/s) - “test.txt” saved [4/4]
[opc@db01 ~]$ ls
test.txt
#■ Database Cloudのバックアップテスト
Internetを使用しないPrivate Subnetに配置したDatabaseがService Gateway 経由でObject Storageにバックアップできることを確認します
・参考: Installing the Backup Module on the DB System
##●DBへ バックアップ・モジュールのインストール
①DBへログインして、oracleユーザーにスイッチ
ssh -i id_rsa opc@db01
login as: opc
sudo su - oracle
②バックアップ・モジュールopc_install.jarのディレクトリに移動
[oracle@db-inst01 ~]$ cd /opt/oracle/oak/pkgrepos/oss/odbcs
③ バックアップ・モジュールをインストール
次の構文でインストールを実施
java -jar opc_install.jar -opcId -opcPass '' -container -walletDir ~/hsbtwallet/ -libDir ~/lib/ -configfile ~/config -host https://swiftobjectstorage..oraclecloud.com/v1/
パラメータ | 内容 | 今回の設定値 |
---|---|---|
user_id | OCIユーザー・アカウントのユーザー名 | test@oci.com |
auth_token | OCIのUser設定で作成したAuth Token | gcccUF36O8dwr |
bucket_name | バケット名 | test-bucket01 |
region_name | 参照:Regions and Availability Domains | us-ashburn-1 |
tenant | テナント名 | oci014419 |
[oracle@db-inst01 odbcs]$ java -jar opc_install.jar -opcId test@oci.com -opcPass 'gcccUF36O8dwr' -container test-bucket01 -walletDir ~/hsbtwallet/ -libDir ~/lib/ -configfile ~/config -host https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/oci014419
Oracle Database Cloud Backup Module Install Tool, build 12.2.0.1.0DBBKPCSBP_2017-11-28
Oracle Database Cloud Backup Module credentials are valid.
Backups would be sent to container test-bucket01.
Oracle Database Cloud Backup Module wallet created in directory /home/oracle/hsbtwallet.
Oracle Database Cloud Backup Module initialization file /home/oracle/config created.
Downloading Oracle Database Cloud Backup Module Software Library from file opc_linux64.zip.
Download complete.
④作成されたconfigを確認
[oracle@db-inst01 ~]$ cat /home/oracle/config
OPC_HOST=https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/oci014419
OPC_WALLET='LOCATION=file:/home/oracle/hsbtwallet CREDENTIAL_ALIAS=alias_opc'
OPC_CONTAINER=test-bucket01
##●RMANの構成
① .oraenvを使用してORACLE_HOMEおよびORACLE_SID環境変数を設定
[oracle@db-inst01 ~]$ . oraenv
ORACLE_SID = [oracle] ? orcl
The Oracle base has been set to /u01/app/oracle
② RMAN接続
[oracle@db-inst01 ~]$ rman target /
Recovery Manager: Release 12.2.0.1.0 - Production on Tue Nov 20 05:38:13 2018
Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved.
connected to target database: ORCL (DBID=1520446095)
③SBTデバイスにバックアップ・モジュールで作成されたconfigファイルを指すようにRMANのDEVICE TYPEを構成
RMAN> CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
④その他SBT_TAPEの構成を設定
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F';
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
⑤RMAN設定確認
RMAN> show all;
RMAN configuration parameters for database with db_unique_name ORCL_IAD38S are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO '%F';
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 5 BACKUP TYPE TO COMPRESSED BACKUPSET;
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 2 G;
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE ON;
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO 'SBT_TAPE';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+RECO/ORCL_IAD38S/controlfile/snapcf_orcl_iad38s.f';
##●Internetアクセスできないこと確認
ます、インターネットに接続できないことを確認
インターネット アクセスを行うとTime out でErrorが出力されます
[opc@db01 ~]$ curl https://www.oracle.com/
curl: (7) Failed to connect to 2a00:1450:400e:80b::2003: Cannot assign requested address
##●Databaseバックアップ
①暗号化を設定
RMAN> SET ENCRYPTION IDENTIFIED BY "password" ONLY;
executing command: SET encryption
②DatabaseとARCHIVELOGをバックアップ
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;
Starting backup at 20-NOV-18
current log archived
allocated channel: ORA_SBT_TAPE_1
channel ORA_SBT_TAPE_1: SID=20 device type=SBT_TAPE
channel ORA_SBT_TAPE_1: Oracle Database Backup Service Library VER=12.2.0.2
allocated channel: ORA_SBT_TAPE_2
channel ORA_SBT_TAPE_2: SID=494 device type=SBT_TAPE
channel ORA_SBT_TAPE_2: Oracle Database Backup Service Library VER=12.2.0.2
・・・
②バックアアップを確認
RMAN> list backup;
List of Backup Sets
===================
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
2 Full 512.00K SBT_TAPE 00:00:02 20-NOV-18
BP Key: 2 Status: AVAILABLE Compressed: YES Tag: TAG20181120T045035
Handle: ORCL_12349876_02tilpcr_1_1_20181120_992667035 Media: swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/dbbackupiad/b
Control File Included: Ckp SCN: 1775556 Ckp time: 20-NOV-18
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
3 Full 18.00M SBT_TAPE 00:00:01 20-NOV-18
BP Key: 3 Status: AVAILABLE Compressed: NO Tag: TAG20181120T045037
Handle: c-12349876-20181120-01 Media: swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/dbbackupiad/b
SPFILE Included: Modification time: 20-NOV-18
SPFILE db_unique_name: ORCL_IAD38S
Control File Included: Ckp SCN: 1775562 Ckp time: 20-NOV-18
・・・
##●Object Storage 内に作成されたBackupファイルを確認
opc@inst01 ~]$ oci os object list -bn test-bucket01 --output table
+--------------------------+------------------------------------------------------------------------------------------------------+-----------+----------------------------------+
| md5 | name | size | time-created |
+--------------------------+------------------------------------------------------------------------------------------------------+-----------+----------------------------------+
| +WlfR0qC7S3oz6hWWv5xDg== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/30tilu8u_1_1/KTVs8w9V0wwD/0000000001 | 104857600 | 2018-11-20T06:14:08.362000+00:00 |
| eLpbVDComN67rCwJ49ePug== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/30tilu8u_1_1/KTVs8w9V0wwD/0000000002 | 78643200 | 2018-11-20T06:14:16.710000+00:00 |
| rr4Czk+cJDyqOZH0idAV7Q== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/30tilu8u_1_1/KTVs8w9V0wwD/metadata.xml | 1790 | 2018-11-20T06:14:18.766000+00:00 |
| CzMoFlorliipXP87X26BhQ== | file_chunk/12349876/ORCL/backuppiece/2018-11-20/31tilu8u_1_1/KTVs8w9V0wwD/0000000001 | 104857600 | 2018-11-20T06:14:08.274000+00:00 |
・・・
+--------------------------+------------------------------------------------------------------------------------------------------+-----------+----------------------------------+
prefixes: []
#■Cross Region Copy
異なるBucketにオブジェクトをコピーする機能で異なるリージョンにもコピーができます。
##●Policy設定
オブジェクトのコピーを実行する場合は、ソース・バケットと宛先バケットの両方への必要なアクセス権が必要なので、下記書式でPolicy Statementを追加したPolicyを作成
・書式:
allow service objectstorage-<region_name> to manage object-family in compartment <compartment_name>
##●Cross Region Copy実施
Tokyo Region にある test01ファイルをSeoul Regionにコピーしてみます
①コピーするobjectを選択して、アクション・アイコン(・・・)から[コピー]を選択してクリック