未解決
35 メッセージ
1
1121
【ECS解説第9回】ECS3.5 Community Edition VM版
-
皆さん、こんにちは。
前回、ECS V3.5の新しい機能をご紹介し、S3 IAMの動作について少々お伝えすることができました。なかなか奥の深い機能のほんの入り口だけのご紹介となってしまいましたが、パブリッククラウドのご利用経験と照らして試してみたいと思われた方もいらっしゃったのではないかと思います。
以前よりgithubでECS Community Editionは紹介されており(GitHub - EMCECS/ECS-CommunityEdition: ECS Community Edition "Free & Frictionless")、最新コードはV3.5.1が紹介されております。また、Docker Imageでは昨年4月からリリースされているので(MicroBadger - emccorp/ecs-software-3.5.0)、お試しになられた方もいらっしゃるかもしれません。一方、OVA形式でV3.5環境を試したいという話も多くあり、ついに社内でリリースされました。このブログではOVA形式の導入手順をご紹介し、ECS V3.5にご興味をお持ちいただきました方には、お問い合わせを頂戴しましたらOVA形式ファイルをご提供いたします。
今回ご紹介しますOVA形式のV3.5環境の導入は下記のサイトの記事を参照しております。
https://ecsce.readthedocs.io/en/latest/index.html
さて、OVAファイルを入手されているとして導入手順をご紹介していきます。
- OVAファイルをvSphere環境に展開
vCenterへ新規仮想マシンの展開を選択し、OVFファイルのデプロイメニューから入手されたOVAファイルを選択し、仮想マシンイメージの展開を実行ください。 - 必要リソース
Bootストレージに50GB, ECSのStoragePools領域に200GBが割り当てられます。(StoragePoolsの領域はGithubで公開されてきた~V3.4までは104-108GBでした)
あわせて8 vCPUに32GBメモリを設定しています。参照したサイトの記事の最小構成ではありませんが、推奨構成よりは少し小規模になっています。 - 仮想マシンの展開が行われ、Linux(Cent OS)が起動されましたら、コンソールからログインしてください。
-
userid: admin
password: ChangeMe
-
- ネットワークインターフェースの設定
ログインに成功したら、ご導入環境に合わせて仮想マシンのネットワークインターフェースにIPを割り当ててください。
プロンプトよりnmtui コマンドが使えます。下記の例では10.6.15.x/24のサブネットを持つネットワークに接続していましたので、10.6.15.199のIPアドレスを割り当てています。
ECSはNTPアクセスが必要なので、セグメント内にNTPがない場合は、DNS、ゲートウェイも忘れずに設定ください。設定後は、インターフェースをアクティベートして、設定を反映させてnmtuiを終了してください。 - ディスクデバイスの接続を確認
“$ sudo fdisk -l “で接続されているディスクデバイスを確認してください。特に/dev/sdbに100GB以上が割り当てられていることをチェックしてください。
後の手順で/dev/sdbをオブジェクトファイルの格納スペースに指定します。 - ECSのDockerイメージを展開するため下記の手順を実施します。
- /home/admin/ECS-CommunityEditionで以下を実行。
- $ videploy
- Videployを実行するとdeploy.ymlをviでの編集がはじまる。以下を環境に合わせ修正(環境上必須のため、必ず正しい値を入力)
- 9行目 License_accepted: true (falseを修正)
- 31行目 Install_node (自身のIPアドレスを設定)
65行目 dns_domain (任意のドメインを設定) - 66行目 dns_servers (環境に基づき、DNSのIPを設定)
67行目 ntp_servers (環境に基づき、NTPのIPを設定) - 102行目 /dev/sdb (sdbをfdisk -l でチェックした100GB以上のデバイス名を入力)
- 106行目以降、検証用にデータアクセステスト用の設定が記述されているので、requiredのパートを除き、optionalはコメントにして、設定後にGUIから設定が可能。以下、requiredの設定
- 106-115行目 Storage_pools: の記述: membersのIP変更, ecs_block_devicesを上記バイスへ合致させる
- 125-130行 virtual_data_centers は上記のstorage_poolsに合わせる。
- 以下はOptionalなので、無修正で問題ありません。適宜、コメントもしくは (無)修正にて編集を完了してください。
- 119-120行 virtual_data_centers_defaults
- 142-150行 replication_groups
- 178-185行 namespaces
- 189-194行 object_user_defaults
- 198-212行 object_users
- 216-236行 bucket_defaults および bucket
- 編集終了後 ‘wq’ で書き込み後、終了するとdeploy.ymlのチェックが行われる
- deploy.yml のチェックが下記のようにfailedやunreachableがなく完了すれば次のステップへ。
- ova-step1を実行
IPが正しく割り当ててあるのであれば、SSHでアクセスし実行するのがお勧めです。表示される標準出力のログ情報を見返せるので、万が一、設定ミスなどのエラーで処理が止まった際に出力情報を確認しやすくなります。
スクリプトが正常に終了(OKのみで、Failedのカウンタがゼロの状態)、ova-step1終了後にRebootされることをお勧めします。
リブートによってスクリプトで設定されたパラメータが確実に反映されるようです。 - ova-step2を実行
SP, VDC作成がOKでスクリプトが実行されれば、ECSの構成作業は成功。
※ 実際にECS Portal画面で確認するとSP(Storage Pools)、VDCなどは作成できていませんでした。
- /home/admin/ECS-CommunityEditionで以下を実行。
- ECS Portalへアクセス
https:// / でブラウザからアクセスすると…
このような画面が出力されます。 - deploy.yml に記述されていた(デフォルトを変更しなかった)管理者 root (P/W ChangeMe)でアクセスすると、初回はACKNOWLEDGEが出力されるので、最下部のボタンを押下
- パスワードの変更が即されるので、適宜対応ください。再度ログインが即されます。
- 7.と同じ手順でログインを試みると次の画面で、GO TO ECSを押下。
前述の通り、リソースが反映されないはずなので、この状態ではECSのセットアップはまだ未完成なので、以下の手順を続けます。 - Versionの確認
まずはECSのバージョンを確認してみましょう。左側のメニューからSettings > About this VDCを選択してください。
「ECS Object Version 3.5.0.0…..」が表示されれば、今回のイメージです。
- StoragePool (sp1)にノードを付与
Storage Poolを作成します。ECSは各分散ノードのストレージ領域をオブジェクトストレージとしてのストレージ領域にするため、ノードを集積して、Storage Poolというリソースとしてストレージ領域を形成します。今回はsp1という名称で作成してみました。
- StoragePool (sp1)にノードを付与
- 左側のメニューから Manage > Storage Poolsを選択、表示されたsp1 (deploy.ymlのStoragePoolsで設定されていたデフォルト)のEditをクリックしてください。
Available Nodsに表示されているノードを選択し、右側のSelected Nodesに移動させる。(ECS製品版は5ノードが最小ノード数)Saveを押下してください。
Initializingが進んで”Not Ready”からPartially Readyになるまで待ってください。結構時間を要します。 - VDCを設定するため、左側メニューから Manage > Virtual Data Centerを選択してください。NEW VIRTUAL DATA CENTERのボタンをクリックしてください。
- New Virtual Data Centerの入力項目に入力し、SAVEを押下してください
[入力例]
Name: 任意のVDCの名前
Key: GENERATEボタンを押下し生成
Replication Endpoints: クラスタにはこのノードしかないのでこのノードのIP
Management Endpoints: クラスタにはこのノードしかないのでこのノードのIP
- New Virtual Data Centerの入力項目に入力し、SAVEを押下してください
-
Replication Groupを作成するため、Manage > Replication Group を選択してください。
ECSはECSクラスター間でオブジェクトファイルのレプリケーションをする関係をReplication Groupというリソースで管理します。レプリケーション先がない、この状況でもオブジェクトファイルやBucketを管理するためにもReplication Groupの作成が必要です。NEW REPLICATION GROUPをクリックしてください。
(Name: 任意の名前を入力)
ADD VDCをクリックし、先ほど作成したVirtual Data CenterとStorage Poolを選択後、SAVEをクリックしてください。 - Namespace (テナント)の作成のため、左側メニューからManage > Namespace 選択し、NEW NAMESPACEをクリックしてください。
下記を入力してください。
Name: 任意の名前Replication Gourp: ドロップダウンより先に作成したreplication groupを選択
- オプションのNameapace Adminなどはテナント管理者を設定できるが、ユーザーを作成していないので、ここでは入力しないでください。
- S3 IAM アクセスユーザーを作成するため、Manage > Identity and Access (S3)を選択。
Select Namespace のドロップダウンリストから作成したNamespaceを選択すると、NEW USER ボタンがクリック可能になります。
New UserのページのNameに任意のユーザー名を入力し、NEXT ボタンをクリックしてください。
アクセスを確認するだけであれば、表示された設定のままでNEXTをクリックし設定を進めます。
TagsもそのままNEXTをクリックし、次画面でCREATE USERをクリックしUserを作成してください。
Download .csvボタンをクリックすると、Access Key IDとAccess Secret KeyがCSV形式のcsvファイルをダウンロードできます。(今回作成例)
===レコードイメージ===
Name,Access key ID,Access Secret key, iamuser1,AKIA7ADE218CBEFAC969,+FRJGeBe4KSfytYgTAIVcVMu2FeLOgK7V5RKf1co
================
COMPLETEをクリックすれば、ユーザー作成完了です。
この状態だとアクセス権が与えられていないので、User Permissionを設定する必要があります。
上記のIdentity and Access Management (S3)のユーザーリストに表示されているユーザーを選び、EDITボタンをクリックしてください。Permissions タブをクリックするとPermissionの設定画面に遷移します。
Policy Attached Directlyの表上のADD PERMISSIONをクリックしてください。Config Permissionの画面で、ATTACH POLICIESをクリックしてください。
S3FullAccessのチェックボックスをクリックし、SAVEしてください。
アクセス権を他のユーザーにつけるなどの操作が必要な場合はIAMFullAccessを付与することで操作が可能になります(もちろん、これらのアクセス権を限定して付与できることはIAMのメリットの一つですので、一般的な利用時は子細に設定されることお勧めします)。 - IAM Userが作成され、たので、作成されたIAM UserがオーナーのBucketの作成はアクセスユーザー自身が作成する(管理者は操作できない)ので、Amazonが提供するPython boto3を使用して、Bucketを操作してみましょう。今回はJupyternotebookで操作を試みます。
- OVAファイルをvSphere環境に展開
参考コード
import requests
import os
import boto3
s3endpoint = 'http://10.6.15.199:9020/'
newbucketname = 'bcktiamgen1'
AccessKeyId = 'AKIA7ADE218CBEFAC969'
SecretAccessKey = '+FRJGeBe4KSfytYgTAIVcVMu2FeLOgK7V5RKf1co'
num = 0
s3session = boto3.resource('s3', aws_access_key_id=AccessKeyId, aws_secret_access_key=SecretAccessKey, endpoint_url=s3endpoint, verify=False)
s3session.create_bucket(Bucket=newbucketname)
s3session = boto3.client('s3', aws_access_key_id=AccessKeyId, aws_secret_access_key=SecretAccessKey, endpoint_url=s3endpoint, verify=False)
res = s3session.list_buckets()
for bucket in res['Buckets']:
buckets = bucket['Name']
print("Bucket just created: %5d - %s" % (num, buckets))
num = num + 1
ECS Portalで作成されたBucketを確認。左側メニューから Manage > Buckets を選択すると上記で作成したBucketが表示されます。IAM S3 アクセスユーザーの作成したBucketはS3のみをサポートするため、他のプロトコルでは使えません。
S3以外のプロトコルを使用したいBucketを作成する場合は、上記の画面でNEW BUCKET ボタンを選択すると、他のアクセスプロトコルをサポートするBucketを作成できます。
- 注意
Community Editionの制限として、暗号化機能を使用できないほか、左側メニューにある「Advanced Monitoring」が使用できません(Kibanaが動作している必要があり、製品版以外では動作しません)。
今回、ここまでお付き合いいただきありがとうございます。ぜひ、来月次回もお読みください。
杉本 直之
デルテクノロジーズ株式会社
UDS事業本部SE部