Upload
midori-oge
View
3.327
Download
4
Embed Size (px)
DESCRIPTION
2013年6月27日に実施した、第9回Cloudnの勉強会資料です。
Citation preview
第9回 NTT Communicationsクラウド・エヌ 勉強会
〜SDKでAPIをたたいてみよう〜
2013/6/27
自己紹介
大削 緑/Midori Ogeみろりん @star76popin
☆某SI会社 → 某通信事業者 → NTTコミュニケーションズで の開発を担当しています
☆こんな記事を書いてますオープンソースの「クラウド基盤ソフトウェア」を比較する【第1回】機能を徹底比較! ~Eucalyptus、CloudStack、OpenStackオープンソースの「クラウド基盤ソフトウェア」を比較する【第2回】【徹底比較】Eucalyptus、CloudStack、OpenStackの仮想マシン性能
☆いろんなユーザ会にいます
APIって使ってます?
APIってめんどくさい?
たとえば仮想マシンを1台起動しようとした場合…
http://127.0.0.1:8080/client/api?command=deployVirtualMachine&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05&displayname=Server1&apikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw&signature=q23ytK6WVGaljH6QD0T69WTEV3w%3D
APIってめんどくさい?
たとえば仮想マシンを1台起動しようとした場合…
1. GUIからAPIキーと秘密鍵を発行APIキー:cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw秘密鍵:wVtEXi80ffJrukqfU0khN-T-2Lp9Ogsu9uKDETqyocn4Wy3HtNz9xBqD53-jULPDDhPab0ubk_-qIRgW7q-tpA
2. 署名を作成(1)コマンドとコマンドオプション、APIキーを並べる
command=deployVirtualMachineserviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cadtemplateid=c5ec872b-d278-11e2-8039-4ce6766f4f75zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05displayname=Server1apikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw
(2)(1)を&で連結する command=deployVirtualMachine&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05&displayname=Server1&apikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw
APIってめんどくさい?(3)(2)の中身だけをURLエンコードする
$ echo 'deployVirtualMachine' | perl -MURI::Escape -lne 'print uri_escape($_)'deployVirtualMachine$ echo '8b4d9a30-91c2-47fc-92da-ea9cc97c0cad' | perl -MURI::Escape -lne 'print uri_escape($_)'8b4d9a30-91c2-47fc-92da-ea9cc97c0cad$ echo 'c5ec872b-d278-11e2-8039-4ce6766f4f75' | perl -MURI::Escape -lne 'print uri_escape($_)'c5ec872b-d278-11e2-8039-4ce6766f4f75$ echo '0d89362f-b68f-4fb8-a619-a9a481882a05' | perl -MURI::Escape -lne 'print uri_escape($_)'0d89362f-b68f-4fb8-a619-a9a481882a05$ echo 'Server1' | perl -MURI::Escape -lne 'print uri_escape($_)'Server1$ echo 'cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw' | perl -MURI::Escape -lne 'print uri_escape($_)'cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw
(4)コマンドのアルファベット順で並び替えるapikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw&command=deployVirtualMachine&displayname=Server1&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05
APIってめんどくさい?
(5)(4)を小文字に変換する $ echo 'apikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw&command=deployVirtualMachine&displayname=Server1&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05' | tr A-Z a-zapikey=cmqdkrrsc6kfhghvhuglhxx_lshnwpu8jfjdd_rxeia4zjbva39xaqp0cvmlha7anafg0yse3wacsesa4kdbbw&command=deployvirtualmachine&displayname=server1&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05
(7)作成した署名をURLエンコードする$ echo 'q23ytK6WVGaljH6QD0T69WTEV3w=' | perl -MURI::Escape -lne 'print uri_escape($_)'q23ytK6WVGaljH6QD0T69WTEV3w%3D
(6)(5)を秘密鍵を使ってSHA1でハッシュし、Base64でエンコードして署名を作る$ echo -n "apikey=cmqdkrrsc6kfhghvhuglhxx_lshnwpu8jfjdd_rxeia4zjbva39xaqp0cvmlha7anafg0yse3wacsesa4kdbbw&command=deployvirtualmachine&displayname=server1&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05" | openssl sha1 -binary -hmac "wVtEXi80ffJrukqfU0khN-T-2Lp9Ogsu9uKDETqyocn4Wy3HtNz9xBqD53-jULPDDhPab0ubk_-qIRgW7q-tpA" | openssl base64q23ytK6WVGaljH6QD0T69WTEV3w=
APIってめんどくさい?3. URIを作成
(1)エンドポイントを用意するhttp://127.0.0.1:8080/client/api
(2)コマンドとコマンドオプションを並べて連結するcommand=deployVirtualMachine&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05&displayname=Server1&apikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw
(3)(1)と(2)および作成した署名を連結するhttp://127.0.0.1:8080/client/api?command=deployVirtualMachine&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05&displayname=Server1&apikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw&signature=q23ytK6WVGaljH6QD0T69WTEV3w%3D
4. APIを実行する$ curl "http://127.0.0.1:8080/client/api?command=deployVirtualMachine&serviceofferingid=8b4d9a30-91c2-47fc-92da-ea9cc97c0cad&templateid=c5ec872b-d278-11e2-8039-4ce6766f4f75&zoneid=0d89362f-b68f-4fb8-a619-a9a481882a05&displayname=Server1&apikey=cmqDKrrSc6kFhGhvhUGLhxX_lSHNWPU8JFjDd_rxEia4ZjBva39xaQP0CVmlha7AnAfG0ySe3WacSEsa4kdbbw&signature=q23ytK6WVGaljH6QD0T69WTEV3w%3D"
めっちゃめんどいぉ・・・
(´・ω・`)
ツールを使えばいいんじゃない・・・?
さらに食べやすくなりました
AWS SDKを使います
ソフトウェア開発キット(ソフトウェアかいはつキット、英語: Software Development Kit、SDK)は一般に、特定のソフトウェアパッケージ、ソフトウェアフレームワーク、ハードウェアプラットフォーム、コンピュータシステム、ゲーム機、オペレーティングシステムなどのためのアプリケーションを作成するためにソフトウェア技術者が使用する開発ツールのセットを意味する。
ウィキペディア (Wikipedia): フリー百科事典「ソフトウェア開発キット」 より
★AWS SDKAWSのAPIを簡単に呼び出すための専用プログラム
AWSが配布(Java,PHP他、 お客さま環境にあわせて言語を選択できる)
SDKってなぁに?
CloudnAPI ツールを使おう
httpclient
CloudnAPIツール
JDK
AWS Java SDK
お客さま環境
べんりだね!
今日はなにしよ?
Internet
お客さま web.pyonkey.net
server01.pyonkey.net
server02.pyonkey.net
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
#今回はLinux(CentOS/Ubuntu)での実行を想定しています
今日はなにしよ?
Internet
お客さま web.pyonkey.net
server01.pyonkey.net
server02.pyonkey.net
2
2
4
5
6 3
3
1
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
1.ツールの環境を用意しよう
(1)JDKのインストール
(2)作業用ディレクトリの作成
(3)httpclient のダウンロード&解凍
(4)AWS SDK のダウンロード&解凍
(5)CloudnAPIツールのダウンロード&解凍
(6)httpclientのjarファイルを作業ディレクトリにコピー
(8)CLASSPATHの設定
(7)AWS SDKのjarファイルを作業ディレクトリにコピー
(9)APIキー・秘密鍵を参照
(10)設定ファイルにキーを記入
(11)Javaコンパイル
(12)ツールを実行してみる
1.ツールの環境を用意しよう
(2)作業用ディレクトリの作成
[CentOS] $ yum search openjdk-devel
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environmentjava-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
$ sudo yum install java-1.7.0-openjdk-devel$ java -version
[Ubuntu]$ apt-cache show openjdk-7-jdk Version: 7u21-2.3.9-0ubuntu0.12.10.1$ sudo apt-get install openjdk-7-jdk$ java -version
(1)JDKのインストール
$ mkdir cloudn$ cd cloudn
ver1.7の方をインストールして下さい
ここでは「/home/pyonkey/cloudn」を作業ディレクトリとします
$ wget http://ftp.riken.jp/net/apache/httpcomponents/httpclient/binary/httpcomponents-client-4.2.5-bin.zip
$ unzip httpcomponents-client-4.2.5-bin.zip
(3)httpclient のダウンロード&解凍 httpclientはJavaプログラムからWebAPIをたたくために必要だよ
ダウンロード
解凍
$ wget http://str.cloudn-service.com/api/aws-java-sdk-1.3.21.1.zip$ unzip aws-java-sdk-1.3.21.1.zip
(4)AWS SDK のダウンロード&解凍
1.ツールの環境を用意しよう
$ wget http://str.cloudn-service.com/api/CloudnAPI.zip$ unzip CloudnAPI.zip
(5)CloudnAPIツールのダウンロード&解凍
$ cd ~/cloudn/httpcomponents-client-4.2.5/lib$ cp httpclient-4.2.5.jar httpcore-4.2.4.jar commons-logging-1.1.1.jar commons-codec-1.6.jar ~/cloudn/CloudnAPI/
(6)httpclientのjarファイルを作業ディレクトリにコピー
1.ツールの環境を用意しよう
$ cd ~/cloudn/aws-java-sdk-1.3.21.1/lib/$ cp aws-java-sdk-1.3.21.1.jar aws-java-sdk-flow-build-tools-1.3.21.1.jar ~/cloudn/CloudnAPI/
(7)AWS SDKのjarファイルを作業ディレクトリにコピー
$ export CLASSPATH=.:~/cloudn/CloudnAPI/aws-java-sdk-1.3.21.1.jar:~/cloudn/CloudnAPI/aws-java-sdk-flow-build-tools-1.3.21.1.jar:~/cloudn/CloudnAPI/httpclient-4.2.5.jar:~/cloudn/CloudnAPI/httpcore-4.2.4.jar:~/cloudn/CloudnAPI/commons-logging-1.1.1.jar:~/cloudn/CloudnAPI/commons-codec-1.6.jar
(8)CLASSPATHの設定
再起動してもPATHが通るようにするには、環境設定ファイルにも書いてあげてね
1.ツールの環境を用意しよう
(9)APIキー・秘密鍵を参照
APIキー、秘密鍵はここを参照してね
APIアクセスキー、秘密鍵管理
1.ツールの環境を用意しよう
$ vi ~/cloudn/CloudnAPI/CloudnCredentials.propertiesapikey=<アクセスキーID>secretkey=<秘密鍵>
$ vi ~/cloudn/CloudnAPI/CloudnCredentialsCom.propertiesapikey=<アクセスキーID>secretkey=<秘密鍵>
(10)設定ファイルにキーを記入
「サービス共通」の鍵を記入
「Compute(東日本)」の方の鍵を記入
$ cd ~/cloudn/CloudnAPI/$ javac CloudnAPIService.java
(11)Javaコンパイル
RELEASE_6をサポートしていますとのWarningが表示されるが気にしなくてOK
1.ツールの環境を用意しよう
$ java CloudnAPIService=== Start ===[2013/06/21 15:20:06]
> Which Service ? (Compute / LBA / ObjectStorage / AutoScaling / DNS / Monitoring / Exit) :ExitService =[Exit]
=== End ===[2013/06/21 15:21:24]
(12)ツールを実行してみる
わーいうごいた
1.ツールの環境を用意しよう
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
2.仮想マシンを作ってみよう
(1)セキュリティグループを作成
(2)仮想マシンの作成
2.仮想マシンを作ってみよう
(1)セキュリティグループを作成
仮想マシンが属するセキュリティグループを作成
(1)セキュリティグループを作成
「セキュリティグループの追加」
ボタンを押して名前と説明を入力
Port 22,80を
あけておく
2.仮想マシンを作ってみよう
$ java CloudnAPIService=== Start ===[2013/06/21 11:37:44]
> Which Service ? (Compute / LBA / ObjectStorage / AutoScaling / DNS / Monitoring / Exit) :ComputeService =[Compute]
URL =[https://comp-apia.jp-e1.cloudn-service.com/awsapi/]=== Start:CloudnAPICompute:publicMain ===[2013/06/21 11:38:24]
> Which Command ? (Describe / Create / Start / Stop / Delete / CreateTemplate / CreateTag / Exit) :CreateCommand =[Create]
(2)仮想マシンの作成
「Create」と入力
2.仮想マシンを作ってみよう
「Compute」と入力
DescribeZonesResult:{AvailabilityZones: [{ZoneName: jp-e1a, State: available, RegionName: , Messages: [{Message: Enabled, }], },{ZoneName: jp-e1b, State: available, RegionName: , Messages: [{Message: Enabled, }], }], }
> Enter Zone Name :jp-e1aAvailability Zone =[jp-e1a]
DescribeSecGroupsResult:{SecurityGroups: [{OwnerId: ff02929c-1819-4b93-95be-8f251564b83c:cln100050095, GroupName: pyonkey-secgroup, GroupId: 8a0dba8f-7afc-436b-878a-ab7dce6e2bf6, Description: for SDK test, IpPermissions: [{IpProtocol: tcp, FromPort: 22, ToPort: 22, IpRanges: [0.0.0.0/0], },{IpProtocol: tcp, FromPort: 80, ToPort: 80, IpRanges: [0.0.0.0/0], }], VpcId:, Tags: [{Key: , Value: , }], }], }
> Enter Security Group ID :8a0dba8f-7afc-436b-878a-ab7dce6e2bf6Security Group ID =[8a0dba8f-7afc-436b-878a-ab7dce6e2bf6]
(2)仮想マシンの作成
作成したセキュリティグループのIDを入力
2.仮想マシンを作ってみよう
仮想マシンを作成したい方のゾーン名を入力
{Images: [{ImageId: 8fdc326b-6e82-49a3-af22-69b0e3ab0cd7, ImageLocation: ,State: available, OwnerId: 1:admin, Public: true, ProductCodes:[{ProductCodeId: , ProductCodeType: , }], Architecture: , ImageType: machine,KernelId: , RamdiskId: , Platform: , StateReason: {Code: , Message: , },ImageOwnerAlias: , Name: CentOS 6.3 64bit, Description: CentOS 6.3 64bit,RootDeviceType: , RootDeviceName: , BlockDeviceMappings: [{DeviceName: , Ebs:{SnapshotId: , VolumeSize: 0, DeleteOnTermination: false, }, }], Tags: [{Key:, Value: , }], Hypervisor: , }], }
> Enter Image ID :8fdc326b-6e82-49a3-af22-69b0e3ab0cd7Image ID =[8abc326b-6e82-49a3-af22-69b0e3ab0cd7]
(2)仮想マシンの作成
Image IDを入力
2.仮想マシンを作ってみよう
> Enter Create Instance Type (t1.micro / m1.small / m1.medium / m1.large / m1.xlarge) :m1.smallInstance Type =[m1.small]
> Enter Minimum Count:2Minimum Count =[2]
> Enter Maximum Count:2Maximum Count =[2]
RunInstancesRequest:{ImageId: 8fdc326b-6e82-49a3-af22-69b0e3ab0cd7, MinCount: 2, MaxCount: 2, SecurityGroupIds: [8a0dba8f-7afc-436b-878a-ab7dce6e2bf6], InstanceType: m1.small, Placement: {AvailabilityZone: jp-e1a, }, }
Instance Create Start =[2013/06/21 12:35:33]
(2)仮想マシンの作成
仮想マシンのタイプを入力
2台作成するため「2」を入力
2台作成するためß「2」を入力
仮想マシン作成開始
2.仮想マシンを作ってみよう
Instance Create Finish =[2013/06/21 12:37:49]
RunInstancesResult:{Reservation: {ReservationId: , OwnerId: ff02929c-1819-4b93-95be-8f251564b83c:cln100050095, RequesterId: , Groups: [{GroupName: pyonkey-secgroup, GroupId: 8a0dba8f-7afc-436b-878a-ab7dce6e2bf6, }], GroupNames: [pyonkey-secgroup], Instances: [{InstanceId: 3030d851-1f30-4447-b17b-de44f113b439, ImageId: 8fdc326b-6e82-49a3-af22-69b0e3ab0cd7, State: {Code: 16, Name: running, }, PrivateDnsName: , PublicDnsName: , StateTransitionReason: , ProductCodes: [{ProductCodeId: , ProductCodeType: , }], InstanceType: m1.small, Placement: {AvailabilityZone: jp-e1a, }, KernelId: , RamdiskId: , Platform: , Monitoring: {State: , }, SubnetId: , VpcId: , PrivateIpAddress: 153.128.37.234, StateReason: {Code: , Message: , }, Architecture: , RootDeviceType: , RootDeviceName: , VirtualizationType: , InstanceLifecycle: , SpotInstanceRequestId: , ClientToken: , Tags: [{Key: , Value: , }], SecurityGroups: [{GroupName: , GroupId: , }], Hypervisor: , }, {InstanceId: 46161e43-4388-4039-9182-7d59487b2830, ImageId: 8fdc326b-6e82-49a3-af22-69b0e3ab0cd7, State: {Code: 16, Name: running, }, PrivateDnsName: , PublicDnsName: , StateTransitionReason: , ProductCodes: [{ProductCodeId: , ProductCodeType: , }], InstanceType: (略)
(2)仮想マシンの作成
仮想マシン作成完了
2.仮想マシンを作ってみよう
作成されたInstanceIDとIPアドレスを控えておく
> Which Command ? (Describe / Create / Start / Stop / Delete / CreateTemplate / CreateTag / Exit) :DescribeCommand =[Describe](略)DescribeInstancesResult:{Reservations: [{ReservationId: 546695f6-52b2-4980-8ecd-38c3f2de0726, OwnerId: ff02929c-1819-4b93-95be-8f251564b83c:cln100050095, RequesterId: , Groups: [{GroupName: pyonkey-secgroup, GroupId: 8a0dba8f-7afc-436b-878a-ab7dce6e2bf6, }], GroupNames: [pyonkey-secgroup], Instances: [ (略){InstanceId: 3030d851-1f30-4447-b17b-de44f113b439, ImageId: 8fdc326b-6e82-49a3-af22-69b0e3ab0cd7, State: {Code: 16, Name: running, }, PrivateDnsName: , PublicDnsName: , StateTransitionReason: , ProductCodes: [{ProductCodeId: , ProductCodeType: , }], InstanceType: m1.small, Placement: {AvailabilityZone: jp-e1a, GroupName: , }, KernelId: , RamdiskId: , Platform: , Monitoring: {State: , }, SubnetId: , VpcId: , PrivateIpAddress: 153.128.38.229, StateReason: {Code: , Message: , }, Architecture: , RootDeviceType: , RootDeviceName: 0, InstanceLifecycle: , SpotInstanceRequestId: , Tags: [{Key: , Value: , }], SecurityGroups: [{GroupName: , }], Hypervisor: , (略) }], }], }
「Describe」を入力
2.仮想マシンを作ってみよう
(2)仮想マシンの作成(確認)
2.仮想マシンを作ってみよう
Cloudnオフィシャルテンプレートを使用して仮想マシンを作成する場合は、パスワードリセット機能が有効となっています。
本ツールは初期パスワードの通知機能がないため、仮想マシンを作成後、GUIにログインしパスワードのリセットを実施する必要があります。
ショボーン(´・ω・`)
ただし…
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
3.Webサイトを立ち上げてみよう
[CentOS]# yum install httpd.x86_64# service httpd startStarting httpd: [ OK ]
[Ubuntu]$ sudo apt-get install apache2$ cd /etc/apache2/sites-available$ vi forsdktest$ sudo a2dissite default$ sudo a2ensite forsdktest$ sudo service apache2 reload
Apacheのインストール
<Virtualhost *:80>DocumentRoot /home/pyonkey<Directory /home/pyonkey>AllowOverride allOptions -MultiViews</Directory></VirtualHost>
かわいい〜♪
3.Webサイトを立ち上げてみよう
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
4.LBを作ってみよう
$ java CloudnAPIService=== Start ===[2013/06/21 09:04:01]
> Which Service ? (Compute / LBA / ObjectStorage / AutoScaling / DNS / Monitoring / Exit) :LBAService =[LBA]
URL =[https://lba-api.jp-e1.cloudn-service.com/]URL =[https://comp-apia.jp-e1.cloudn-service.com/awsapi/]=== Start:CloudnAPILBA:publicMain ===[2013/06/21 09:05:31]
> Which Command ? (Describe / Create / Delete / RegisterInstance / CreateListener / DefineHealth / HealthCheck / Exit) :CreateCommand =[Create]
> Enter Create LBA Name :pyonkeyLBACreate LBA Name =[pyonkeyLBA]
「LBA」を入力
「Create」を入力
LBAの名前を入力
LBの作成
4.LBを作ってみよう
DescribeZonesResult:{AvailabilityZones: [{ZoneName: jp-e1a, State: available, RegionName: , Messages: [{Message: Enabled, }], },{ZoneName: jp-e1b, State: available, RegionName: , Messages: [{Message: Enabled, }], }], }
> Enter Zone Name :jp-e1aAvailability Zone =[jp-e1a]
DescribeSecGroupsResult:{SecurityGroups: [{OwnerId: ff02929c-1819-4b93-95be-8f251564b83c:cln100050095, GroupName: pyonkey-secgroup, GroupId: 8a0dba8f-7afc-436b-878a-ab7dce6e2bf6, Description: for SDK test, IpPermissions: [{IpProtocol: tcp, FromPort: 22, ToPort: 22, IpRanges: [0.0.0.0/0], },{IpProtocol: tcp, FromPort: 80, ToPort: 80, IpRanges: [0.0.0.0/0], }], VpcId:, Tags: [{Key: , Value: , }], }], }
> Enter Security Group ID :8a0dba8f-7afc-436b-878a-ab7dce6e2bf6Security Group ID =[8a0dba8f-7afc-436b-878a-ab7dce6e2bf6]
LBAを作成したい方のゾーン名を入力
LBAにSecurityGroupを設定
LBの作成
4.LBを作ってみよう
> Enter LBA Protocol (HTTP / HTTPS / TCP / SSL) :HTTPLBA Protocol =[HTTP]
> Enter LBA Port :80LBA Port =[80]
> Enter Instance Protocol (HTTP / HTTPS / TCP / SSL) :HTTPInstance Protocol =[HTTP]
> Enter Instance Port :80Instance Port =[80]
CreateLoadBalancerRequest:{LoadBalancerName: pyonkeyLBA, Listeners: [{Protocol: HTTP, LoadBalancerPort: 80, InstanceProtocol: HTTP, InstancePort: 80, }], AvailabilityZones: [jp-e1a], SecurityGroups: [8a0dba8f-7afc-436b-878a-ab7dce6e2bf6], }
CreateLoadBalancerResult:{DNSName: pyonkeyLBA-1371897092.lba.jp-e1.cloudn-service.com, }
LBの80番ポートにきたHTTPリクエストを仮想マシンの80番ポートに転送
LBの作成
DNSName が返ってくるのでメモしておく
4.LBを作ってみよう
> Which Command ? (Describe / Create / Delete / RegisterInstance / CreateListener / DefineHealth / HealthCheck / Exit) :DescribeCommand =[Describe]
DescribeLoadBalancersResult:{LoadBalancerDescriptions: [{LoadBalancerName: pyonkeyLBA, DNSName: pyonkeyLBA-1371897092.lba.jp-e1.cloudn-service.com, CanonicalHostedZoneName: pyonkeyLBA-1371897092.lba.jp-e1.cloudn-service.com, CanonicalHostedZoneNameID: BBB1874A1E3A46, ListenerDescriptions: [{Listener: {Protocol: HTTP, LoadBalancerPort: 80, InstanceProtocol: HTTP, InstancePort: 80, SSLCertificateId: , }, }], Policies: {}, BackendServerDescriptions: [{InstancePort: 80, }], AvailabilityZones: [jp-e1a], VPCId: , HealthCheck: {Target: HTTP:80/index.html, Interval: 5, Timeout: 3, UnhealthyThreshold: 2, HealthyThreshold: 10, }, SourceSecurityGroup: {OwnerAlias: , GroupName: , }, SecurityGroups: [8a0dba8f-7afc-436b-878a-ab7dce6e2bf6], CreatedTime: Fri Jun 21 09:31:33 JST 2013, Scheme: internet-facing, }], }
LBが作成された
LBの作成(確認)
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
5.LBに仮想マシンを登録
> Which Service ? (Compute / LBA / ObjectStorage / AutoScaling / DNS / Monitoring / Exit) :LBAService =[LBA]> Which Command ? (Describe / Create / Delete / RegisterInstance / CreateListener / DefineHealth / HealthCheck / Exit) :RegisterInstanceCommand =[RegisterInstance]
> Enter LBA Name :pyonkeyLBALBA Name =[pyonkeyLBA]
> List Instance? (Y/N) :N
DescribeInstancesResult:(略)> Enter Register Instance ID :216f442f-34bc-4b05-aa74-4914a7de65ecRegister Instance ID =[216f442f-34bc-4b05-aa74-4914a7de65ec]
LBに仮想マシンを登録するには「RegisterInstance」を入力
該当のLB名を入力
「N」を入力
先程メモした仮想マシンのIDを入力
(1)1台目の仮想マシンを登録
RegisterInstancesWithLoadBalancerRequest:{LoadBalancerName: pyonkeyLBA, Instances: [{InstanceId: 216f442f-34bc-4b05-aa74-4914a7de65ec, }], }
RegisterInstancesWithLoadBalancerResult:{Instances: [{InstanceId: 216f442f-34bc-4b05-aa74-4914a7de65ec, }], }
LBに仮想マシンが登録された
5.LBに仮想マシンを登録(1)1台目の仮想マシンを登録
5.LBに仮想マシンを登録
> Which Command ? (Describe / Create / Delete / RegisterInstance / CreateListener / DefineHealth / HealthCheck / Exit) :RegisterInstanceCommand =[RegisterInstance]
> Enter LBA Name :pyonkeyLBALBA Name =[pyonkeyLBA]
> List Instance? (Y/N) :N
DescribeInstancesResult:(略)
> Enter Register Instance ID :8a5bfa47-645e-494a-adf6-042f2a99f8c5Register Instance ID =[8a5bfa47-645e-494a-adf6-042f2a99f8c5]
LBにインスタンスを登録するには「RegisterInstance」を入力
該当のLB名を入力
「N」を入力
先程メモした仮想マシンのIDを入力
(2)2台目の仮想マシンを登録
RegisterInstancesWithLoadBalancerRequest:{LoadBalancerName: pyonkeyLBA, Instances: [{InstanceId: 8a5bfa47-645e-494a-adf6-042f2a99f8c5, }], }
RegisterInstancesWithLoadBalancerResult:{Instances: [{InstanceId: 216f442f-34bc-4b05-aa74-4914a7de65ec, }, {InstanceId: 8a5bfa47-645e-494a-adf6-042f2a99f8c5, }], }
LBに仮想マシンが登録された
5.LBに仮想マシンを登録(2)2台目の仮想マシンを登録
> Which Command ? (Describe / Create / Delete / RegisterInstance / CreateListener / DefineHealth / HealthCheck / Exit) :DescribeCommand =[Describe]
DescribeLoadBalancersResult:{LoadBalancerName: pyonkeyLBA, DNSName: pyonkeyLBA-1371897092.lba.jp-e1.cloudn-service.com, CanonicalHostedZoneName: pyonkeyLBA-1371897092.lba.jp-e1.cloudn-service.com, CanonicalHostedZoneNameID: BBB1874A1E3A46, ListenerDescriptions: [{Listener: {Protocol: HTTP, LoadBalancerPort: 80, InstanceProtocol: HTTP, InstancePort: 80, SSLCertificateId: , }, }], Policies: {}, BackendServerDescriptions: [{InstancePort: 80, }], AvailabilityZones: [jp-e1a], VPCId: , Instances: [{InstanceId: 216f442f-34bc-4b05-aa74-4914a7de65ec, }, {InstanceId: 8a5bfa47-645e-494a-adf6-042f2a99f8c5, }], HealthCheck: {Target: HTTP:80/index.html, Interval: 5, Timeout: 3, UnhealthyThreshold: 2, HealthyThreshold: 10, }, SourceSecurityGroup: {OwnerAlias: cln100050095, GroupName: pyonkey-secgroup, }, SecurityGroups: [8a0dba8f-7afc-436b-878a-ab7dce6e2bf6], CreatedTime: Sat Jun 22 19:31:33 JST 2013, Scheme: internet-facing, }], }
5.LBに仮想マシンを登録(3)登録されたことを確認
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
6.DNSを登録
(1)ゾーンを作成
(2)ゾーン情報の表示
(3)独自ドメインを取得した場合
(4)レコードの登録(LB)
(5)レコードの登録(仮想マシン)
6.DNSを登録
$ java CloudnAPIService=== Start ===[2013/06/21 09:04:01]
> Which Service ? (Compute / LBA / ObjectStorage / AutoScaling / DNS / Monitoring / Exit) :DNSService =[DNS]
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :CreateCommand =[Create]
> Enter Create Zone Name :pyonkey.netZone Name =[pyonkey.net]
> Enter Caller Reference :pyonkey.netCaller Reference =[pyonkey.net]
(1)ゾーンを作成
「DNS」を入力
「Create」を入力
ゾーン名を入力
再度ゾーン名を入力
6.DNSを登録
> Enter Comment (empty is available) :
Comment =[]
CreateHostedZoneRequest:{Name: pyonkey.net, CallerReference: pyonkey.net, HostedZoneConfig: {Comment: , }, }
CreateHostedZoneResult:{HostedZone: {Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, Config: {Comment: , }, ResourceRecordSetCount: 2, }, ChangeInfo: {Id: c5e8ad4b0cd047, Status: PENDING, SubmittedAt: Sun Jun 23 23:54:49 JST 2013, }, DelegationSet: {NameServers: [ns-08.dns.jp-e1.cloudn-service.com, ns-09.dns.jp-e1.cloudn-service.com, ns-10.dns.jp-e1.cloudn-service.com], }, }
(1)ゾーンを作成
コメントを入力(任意)
ゾーンが作成された
「PENDING」…作成中のステータス
6.DNSを登録
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :GetChangeCommand =[GetChange]
> Enter Change ID :c5e8ad4b0cd047Change ID =[c5e8ad4b0cd047]
GetChangeRequest:{Id: c5e8ad4b0cd047, }
GetChangeResult:{ChangeInfo: {Id: c5e8ad4b0cd047, Status: INSYNC, SubmittedAt: Fri Jun 21 13:54:49 JST 2013, }, }
「INSYNC」となっていることを確認
「GetChange」と入力
Change IDを入力
(1)ゾーンを作成(確認)
6.DNSを登録
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :ListCommand =[List]
ListHostedZonesResult:{HostedZones: [{Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, ResourceRecordSetCount: 2, }], IsTruncated: false, MaxItems: 100, }
ゾーンが作成されていることを確認
(1)ゾーンを作成(確認)
6.DNSを登録
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :InfoCommand =[Info]
ListHostedZonesResult:{HostedZones: [{Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, ResourceRecordSetCount: 2, }], IsTruncated: false, MaxItems: 100, }
> Enter Zone ID :BF04903FDB584FZone ID =[BF04903FDB584F]
GetHostedZoneRequest:{Id: BF04903FDB584F, }
GetHostedZoneResult:{HostedZone: {Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, Config: {Comment: , }, ResourceRecordSetCount: 2, }, DelegationSet: {NameServers: [ns-08.dns.jp-e1.cloudn-service.com, ns-09.dns.jp-e1.cloudn-service.com, ns-10.dns.jp-e1.cloudn-service.com], }, }
(2)ゾーン情報の表示
Zone ID を入力
「Info」と入力
6.DNSを登録
ListResourceRecordSetsRequest:{HostedZoneId: BF04903FDB584F, }
ListResourceRecordSetsResult:{ResourceRecordSets: [{Name: pyonkey.net., Type: SOA, TTL: 60, ResourceRecords: [{Value: ns-08.dns.jp-e1.cloudn-service.com. root.cloudn2.net. 1 7200 900 1209600 86400, }], },{Name: pyonkey.net., Type: NS, TTL: 60, ResourceRecords: [{Value: ns-08.dns.jp-e1.cloudn-service.com., }, {Value: ns-09.dns.jp-e1.cloudn-service.com., }, {Value: ns-10.dns.jp-e1.cloudn-service.com., }], }], IsTruncated: false, MaxItems: 100, }
(2)ゾーン情報の表示
ネームサーバ名を確認
6.DNSを登録
(3)独自ドメインを取得した場合
レジストラにCloudnをネームサーバとして登録する必要があります。
例【対象ドメイン】 pyonkey.net
【ネームサーバ情報】 プライマリNS: ns-08.dns.jp-e1.cloudn-service.com セカンダリNS: ns-09.dns.jp-e1.cloudn-service.com
6.DNSを登録
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :EditCommand =[Edit]
ListHostedZonesResult:{HostedZones: [{Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, ResourceRecordSetCount: 3, }], IsTruncated: false, MaxItems: 100, }
> Enter Zone ID :BF04903FDB584FZone ID =[BF04903FDB584F]
> Enter Action (CREATE / DELETE) :CREATEAction =[CREATE]
> Enter Type (A / AAAA / CNAME / MX / NS / PTR / SOA / SPF / SRV / TXT) :CNAMEType =[CNAME]
(4)レコードの登録(LB)
ゾーンIDを入力
「Edit」と入力
「CREATE」と入力
「CNAME」と入力※
※現在公開中のツールはA/AAAAレコードのみ対応しています。 CNAME登録は、順次対応予定です。
6.DNSを登録
> Enter TTL :3600TTL =[3600]
> Enter Canonical Name (FQDN) :web.pyonkey.netCanonical Name =[web.pyonkey.net]
> Enter Host Name (FQDN) :pyonkeylba-1371897092.lba.jp-e1.cloudn-service.comHost Name =[pyonkeylba-1371897092.lba.jp-e1.cloudn-service.com]
ChangeResourceRecordSetsRequest:{HostedZoneId: BF04903FDB584F, ChangeBatch: {Changes: [{Action: CREATE, ResourceRecordSet: {Name: web.pyonkey.net, Type: CNAME, TTL: 3600, ResourceRecords: [{Value: pyonkeylba-1371897092.lba.jp-e1.cloudn-service.com, }], }, }], }, }
TTL値を入力
LBの別名を入力
メモしておいたLBの DNSName を入力
(4)レコードの登録(LB)
6.DNSを登録
ChangeResourceRecordSetsResult:{ChangeInfo: {Id: eb9330e8d52946, Status: PENDING, SubmittedAt: Mon Jun 24 11:17:35 JST 2013, }, }
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :GetChangeCommand =[GetChange]
> Enter Change ID :eb9330e8d52946Change ID =[eb9330e8d52946]
GetChangeRequest:{Id: eb9330e8d52946, }
GetChangeResult:{ChangeInfo: {Id: eb9330e8d52946, Status: INSYNC, SubmittedAt: Mon Jun 24 11:17:35 JST 2013, }, }
「INSYNC」となったことを確認
(4)レコードの登録(LB)
Change IDを入力
6.DNSを登録
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :InfoCommand =[Info]
ListHostedZonesResult:{HostedZones: [{Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, ResourceRecordSetCount: 4, }], IsTruncated: false, MaxItems: 100, }
> Enter Zone ID :BF04903FDB584FZone ID =[BF04903FDB584F]
GetHostedZoneRequest:{Id: BF04903FDB584F, }
GetHostedZoneResult:{HostedZone: {Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, Config: {Comment: , }, ResourceRecordSetCount: 4, }, DelegationSet: {NameServers: [ns-08.dns.jp-e1.cloudn-service.com, ns-09.dns.jp-e1.cloudn-service.com, ns-10.dns.jp-e1.cloudn-service.com], }, }
(4)レコードの登録(LB)(確認)
Zone IDを入力
6.DNSを登録
ListResourceRecordSetsRequest:{HostedZoneId: BF04903FDB584F, }
ListResourceRecordSetsResult:{ResourceRecordSets: [{Name: pyonkey.net., Type: SOA, TTL: 60, ResourceRecords: [{Value: ns-08.dns.jp-e1.cloudn-service.com. root.cloudn2.net. 1 7200 900 1209600 86400, }], },{Name: pyonkey.net., Type: NS, TTL: 60, ResourceRecords: [{Value: ns-08.dns.jp-e1.cloudn-service.com., }, {Value: ns-09.dns.jp-e1.cloudn-service.com., }, {Value: ns-10.dns.jp-e1.cloudn-service.com., }], },{Name: server01.pyonkey.net., Type: A, TTL: 3600, ResourceRecords: [{Value: 153.128.37.234, }], },{Name: web.pyonkey.net., Type: CNAME, TTL: 3600, ResourceRecords: [{Value: pyonkeylba-1371897092.lba.jp-e1.cloudn-service.com., }], }], IsTruncated: false, MaxItems: 100, }
(4)レコードの登録(LB)(確認)
レコードが登録されている
6.DNSを登録
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :EditCommand =[Edit]
ListHostedZonesResult:{HostedZones: [{Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, ResourceRecordSetCount: 2, }], IsTruncated: false, MaxItems: 100, }
> Enter Zone ID :BF04903FDB584FZone ID =[BF04903FDB584F]
> Enter Action (CREATE / DELETE) :CREATEAction =[CREATE]
> Enter Host Name (FQDN) :server01.pyonkey.net.Host Name =[server01.pyonkey.net.]
(5)レコードの登録(1台目の仮想マシン)
Zone IDを入力
「CREATE」と入力
ホスト名を入力
「Edit」と入力
6.DNSを登録
> Enter Type (A / AAAA) :AType =[A]
> Enter TTL :3600TTL =[3600]
> Enter IP Address :153.128.37.234IP Address =[153.128.37.234]
ChangeResourceRecordSetsRequest:{HostedZoneId: BF04903FDB584F, ChangeBatch: {Changes: [{Action: CREATE, ResourceRecordSet: {Name: server01.pyonkey.net., Type: A, TTL: 3600, ResourceRecords: [{Value: 153.128.37.234, }], }, }], }, }
ChangeResourceRecordSetsResult:{ChangeInfo: {Id: ca3a3ad691014f, Status: PENDING, SubmittedAt: Fri Jun 21 10:31:28 JST 2013, }, }
(5)レコードの登録(1台目の仮想マシン)
「A」と入力
「3600」と入力
先程メモしたIPアドレスを入力
6.DNSを登録
> Which Command ? (List / Info / Create / Delete / Edit / GetChange / Exit) :InfoCommand =[Info]
ListHostedZonesResult:{HostedZones: [{Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, ResourceRecordSetCount: 3, }], IsTruncated: false, MaxItems: 100, }
> Enter Zone ID :BF04903FDB584FZone ID =[BF04903FDB584F]
GetHostedZoneRequest:{Id: BF04903FDB584F, }
GetHostedZoneResult:{HostedZone: {Id: BF04903FDB584F, Name: pyonkey.net., CallerReference: pyonkey.net, Config: {Comment: , }, ResourceRecordSetCount: 3, }, DelegationSet: {NameServers: [ns-08.dns.jp-e1.cloudn-service.com, ns-09.dns.jp-e1.cloudn-service.com, ns-10.dns.jp-e1.cloudn-service.com], }, }
Zone ID を入力
「Info」と入力
(5)レコードの登録(1台目の仮想マシン)(確認)
6.DNSを登録
ListResourceRecordSetsRequest:{HostedZoneId: BF04903FDB584F, }
ListResourceRecordSetsResult:{ResourceRecordSets: [{Name: pyonkey.net., Type: SOA, TTL: 60, ResourceRecords: [{Value: ns-08.dns.jp-e1.cloudn-service.com. root.cloudn2.net. 1 7200 900 1209600 86400, }], },{Name: pyonkey.net., Type: NS, TTL: 60, ResourceRecords: [{Value: ns-08.dns.jp-e1.cloudn-service.com., }, {Value: ns-09.dns.jp-e1.cloudn-service.com., }, {Value: ns-10.dns.jp-e1.cloudn-service.com., }], },{Name: server01.pyonkey.net., Type: A, TTL: 3600, ResourceRecords: [{Value: 153.128.37.234, }], }], IsTruncated: false, MaxItems: 100, }
Aレコードが登録された
(5)レコードの登録(1台目の仮想マシン)(確認)
6.DNSを登録
$ dig server01.pyonkey.net
; <<>> DiG 9.8.3-P1 <<>> server01.pyonkey.net;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53291;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 2
;; QUESTION SECTION:;server01.pyonkey.net. IN A
;; ANSWER SECTION:server01.pyonkey.net.3600IN A 153.128.37.234
;; AUTHORITY SECTION:pyonkey.net. 60 IN NS ns-10.dns.jp-e1.cloudn-service.com.pyonkey.net. 60 IN NS ns-09.dns.jp-e1.cloudn-service.com.pyonkey.net. 60 IN NS ns-08.dns.jp-e1.cloudn-service.com.(略)
(5)レコードの登録(1台目の仮想マシン)(確認)
名前解決できた
わ〜い♪
おしながき
1. ツールの環境を用意しよう
2. 仮想マシンを作ってみよう
3. Webサイトを立ち上げてみよう
4. LBを作ってみよう
5. LBに仮想マシンを登録しよう
6. DNSを登録しよう
7. アクセスしてみよう
7.アクセスしてみよう
(1)仮想マシンにブラウザでアクセスしてみよう
(2)LBにブラウザでアクセスしてみよう
できたかな〜♪
ありがとうございました
資料はこちら