投稿

4月, 2014の投稿を表示しています

Dart Editor でアプリ実行時にエラーがでる

Dart というWebアプリ開発向けのプログラミング言語があり、ちょっと触ってみようかなと Dart Editor を使おうとしたら editor 上でアプリを実行しようとするとエラーがでる。

!ENTRY com.google.dart.tools.debug.core 4 0 2014-04-12 21:17:25.265 !MESSAGE Dartium output: /home/user/dart/chromium/chrome: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory
環境は ubuntu 13.10 x86_64。
dart editor に含まれている chromium を動かすのに必要な libudev.so.0 が見つからんということらしい。

それっぽいものを locate コマンドで探してみる。
locate libudev.so 出力結果。
/lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.1.3.5
libudev.so.1 は libudev.so.1.3.5 のシンボリックリンク。というわけで、libudev.so.1.3.5 を使ってやればなんか動くんじゃないかと試しに以下のコマンドを打ってみる。
cd /lib/x86_64-linux-gnu/ sudo ln -s libudev.so.1.3.5 libudev.so.0
これで動くようになった。

[GCE] リージョン毎の遅延

イメージ
Google Cloud Platformもアジアリージョンができたことだし、リージョン毎にどれくらい遅延があるのか測ってみた。

各リージョンとゾーンでインスタンスを作る。あと、ネットワークのデフォルトの設定だと外部からのicmpは閉じているので事前に開けておく。テスト終わったら閉じるのを忘れずに。

各インスタンスにpingを投げた結果こんな感じ。
asia: 100ms くらいeurope: 400ms くらいus: 250ms くらい まあ当然ですが asia > us > europe の順に早い。asiaだと100msくらいなんで日本から普通に使えるレベルなのかなきっと。私ネットワーク詳しくないんでよくわかりませんが。


各インスタンスのping結果はこちら。

asia-a
ping -c 5 107.167.181.64 PING 107.167.181.64 (107.167.181.64): 56 data bytes 64 bytes from 107.167.181.64: icmp_seq=0 ttl=44 time=103.378 ms 64 bytes from 107.167.181.64: icmp_seq=1 ttl=44 time=93.266 ms 64 bytes from 107.167.181.64: icmp_seq=2 ttl=44 time=100.718 ms 64 bytes from 107.167.181.64: icmp_seq=3 ttl=44 time=97.191 ms 64 bytes from 107.167.181.64: icmp_seq=4 ttl=44 time=98.686 ms --- 107.167.181.64 ping statistics --- 5 packets transmitted, 5 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 93.266/98.648/103.378/3.398 ms
asia-b
ping -c 5 107.167.181.10 PING 107.167.181.10 (107.167.181.10): 56 data bytes 64 bytes…

Google Cloud PlatformのCompute Engine使ってみた

イメージ
Google Cloud PlatformのCompute Engineを使ってみた記事のまとめ。

Compute Engineをさわるために必要な事前準備はこちらの2つ。
Google Developers Consoleでプロジェクトを作成する。作成したプロジェクトの課金情報を登録する。 プロジェクト作成後の初期画面はこちら。

左側のメニューから「Compute Engine」をクリックすると初期化される。Compute EngineのAPIを有効化しているらしい。

初期化が終わるとこんな画面になる。


ここからいろいろ操作していきます。

Google Developers Consoleを使ったインスタンス操作(GUI)
Compute Engineでインスタンスを作成ディスクの作成インスタンスにディスクをアタッチファイアウォール ルールの追加VMのクローンの作成(失敗)スナップショットの作成スナップショットからインスタンスを作成インスタンスの負荷分散ネットワークの追加
Google Cloud SDKを使った操作(CUI)
Google Cloud SDKのセットアップgcutilをインストールインスタンスにssh接続リージョン毎の遅延

[GCE] ネットワークの追加

イメージ
ネットワークを追加する。

Compute Engineのプロジェクト作成時に default というネットワークが作成されるが、 10.240.0.0/16 というネットワーク決め打ちのようなので一旦削除して新規にネットワークを追加してみる。

「Compute Engine」→「ネットワーク」の画面で「新しいネットワーク」をクリック。

必要な情報を入れて「作成」をクリック。

以下の情報で作成してみた。
名前:networkアドレス範囲:10.0.0.0/8 ゲートウェイを空欄で作成すると、セグメントの先頭(xxx.xxx.xxx.1)が使われるようだ。

作成が完了すると一覧に表示される。


これでネットワークの作成は完了だが、デフォルトで外部からの全通信がブロックされるのでファイアウォール追加する。

作成したネットワークをクリックして、ファイアウォール ルールの項目で「新規作成」をクリック。

必要なルールを追加する。

追加したルールは以下。ポート番号を省略すると全ポート対象という扱いになる。

ルール1
名前:internalソースIPの範囲:10.0.0.0/8プロトコルとポート:tcp; udp; icmp ルール2
名前:sshソースIPの範囲:0.0.0.0/0プロトコルとポート:tcp:22
これで内部ネットワークは全通信許可、外部からはsshのみ許可というネットワークの作成が完了。


インスタンス作成時のネットワーク設定項目でこのネットワークを選択して作成することで利用できる。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] インスタンスの負荷分散

イメージ
ロードバランサを使ってみる。

「Compute Engine」→「負荷分散」で設定する。

「転送ルール」「ターゲットプール」「ヘルスチェック」の3つの設定項目があり、利用する場合は「ヘルスチェック」→「ターゲットプール」→「転送ルール」の順に設定を作成していく。
ヘルスチェックは省略可能。省略するとインスタンス障害時に切り離しといったことはできない。


とりあえず負荷分散できるかを見るためにまずはターゲットプールを作成する。画面上で「新しいターゲットプール」をクリック。

必要事項を入力して「作成」をクリック。

今回は以下の情報で作成した。
名前:lb-pool01地域:us-central1VMインスタンス:us-central1-a <tegetege-demo01>, us-central1-b <tegetege-demo03> ターゲットとするインスタンスは同一リージョンのものである必要がある。でもゾーンは異なっていても大丈夫らしい。作成が完了すると一覧に表示される。

次は、「転送ルール」で「新しい転送ルール」をクリック。

必要情報を入力して「作成」をクリック。

転送ルールは先ほど作成したターゲットルールを指定。
名前:lb-rule01地域:us-central1ターゲットプール:lb-pool01
作成が完了すると一覧に表示される。


インスタンスは以前httpdを立ち上げたものを使ったので、転送ルールの欄に表示されるIPアドレスにブラウザでアクセスするとapacheのテストページが見れる。インスタンスにログインして
sudo tail -f /var/log/httpd/access_log などとすると、両方のインスタンスにアクセスがきていることがわかる。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] スナップショットからインスタンスを作成

イメージ
スナップショットからインスタンスを新規に作成する。

「Compute Engine」→「VMインスタンス」の画面で「新しいインスタンス」をクリック。

必要な情報を入力して「作成」をクリック。スナップショットから作成するために以下の値を入力。
ブートソース:スナップショットから永続ディスクを新規作成スナップショット:snapshot-01 (作成済みのスナップショットを選択する)
元のインスタンスはゾーンを us-central1-a で作成しているが、試しに新規インスタンスでリージョンが異なる europe-west1-a で作成してみても特に問題なかった。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] スナップショットの作成

イメージ
インスタンスのスナップショットを作成する。

「Compute Engine」→「スナップショット」の画面で「新しいスナップショット」をクリック。


「ソースディスク」で元となるディスクを選択して「作成」をクリック。


作成が完了すると一覧に表示される。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] VMのクローンの作成(失敗)

イメージ
VMインスタンスの画面一番下に「クローンを作成」というボタンがあるので試してみる。


「クローンを作成」をクリックすると仮想マシンの新規作成と同じ画面に飛ぶ。


インスタンス名が「(元のインスタンス名)-clone」となっている。入力値は変更せず「作成」ボタンをクリックすると、「イメージが必要です」と怒られた。

試しに centos のイメージを選択して作成をしてみたが、やっぱり素の centos が作成された。

現在のインスタンスの状態をスナップショットにとってそれからクローンしてくれるという動作を期待していたんだが、どうやら勝手にやってくれる訳ではないらしい。クローンを作成する前に手作業でスナップショットでイメージを作成しろということみたい。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] ファイアウォール ルールの追加

イメージ
標準で作成されるネットワークにファイアウォールのルールを追加する。試しにapacheを入れてアクセス確認。

事前にインスタンスにhttpdを入れて起動しておく。
sudo yum -y install httpd sudo service httpd start sudo chkconfig httpd on

Google Developers Consoleからファイアウォールルールを追加する。「Compute Engine」 → 「ネットワーク」 とクリック。


インスタンスの接続しているネットワークをクリック。初期状態ではネットワーク名「default」。


ファイアウォール ルールの「新規作成」をクリック。


ルールの作成画面になるので必要事項を入力して「作成」をクリック。80番を開けるので下のルールを追加した。

名前:default-httpソースIPの範囲:0.0.0.0/0プロトコルとポート:tcp:80

これでしばらく待つとルールが追加される。


ブラウザ開いて http://(instance IP) でwelcomeページにアクセスできることを確認。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] インスタンスにディスクをアタッチ

イメージ
インスタンスにディスクをアタッチする。

「Compute Engine」→「VMインスタンス」でインスタンスを選択後、「ディスク」の項目で「接続」をクリックすると接続可能なディスクが表示されるので選択する。

接続モードを選んで「ディスクの接続」をクリック。

しばらく待つと接続したディスクが表示される。

インスタンスからはscsiのディスクとして見えるみたい。
[user@tegetege-demo01 ~]$ dmesg | tail SELinux: 81 classes, 277800 rules scsi 0:0:2:0: Direct-Access Google PersistentDisk PQ: 0 ANSI: 6 sd 0:0:2:0: Attached scsi generic sg1 type 0 sd 0:0:2:0: [sdb] 2097152 512-byte logical blocks: (1.07 GB/1.00 GiB) sd 0:0:2:0: [sdb] 4096-byte physical blocks sd 0:0:2:0: [sdb] Write Protect is off sd 0:0:2:0: [sdb] Mode Sense: 1f 00 00 08 sd 0:0:2:0: [sdb] Write cache: disabled, read cache: disabled, doesn't support DPO or FUA sdb: unknown partition table sd 0:0:2:0: [sdb] Attached SCSI disk
fdisk でパーティションを作成して mke2fs でフォーマットしてやればマウントできる。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] ディスクの作成

イメージ
新規ディスクを作成する。

「Compute Engine」→「ディスク」の画面で「新しいディスク」をクリック。

必要情報を入力して「作成」をクリック。今回は以下の情報で作成。

名前:disk-1ゾーン:us-central1-aソースの種類:なし(空のディスク)サイズ(GB):1

しばらく待つと作成したディスクが画面に表示される。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] インスタンスにssh接続

イメージ
インスタンスにsshで接続する。

接続するためのコマンドはDevelopers Consoleの Compute Engine → VM インスタンス で各インスタンスの一番右にある「SSH」というボタンをクリックすると確認できる。

コマンドはこんな感じ。括弧内は自分の環境にあわせる。
gcutil --service_version="v1" --project="(project ID)" ssh --zone="(zone ID)" "(instance ID)"
こんな感じで接続できたらOK。
WARNING: You don't have an ssh key for Google Compute Engine. Creating one now... Enter passphrase (empty for no passphrase): Enter same passphrase again: INFO: Updated project with new ssh key. It can take some time for the instance to pick up the key. INFO: Waiting 10 seconds before attempting to connect. INFO: Running command line: ssh -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /home/user/.ssh/google_compute_engine -A -p 22 user@xxx.xxx.xxx.xxx -- Warning: Permanently added 'xxx.xxx.xxx.xxx' (RSA) to the list of known hosts. [user@tegetege-demo01 ~]$

【まとめ】
Google Cloud PlatformのCompute Engine使ってみた

[GCE] gcutilをインストール

Compute Engineのインスタンスを操作するために gcutil というものを入れる。

Google Cloud SDKのインストールで gcloud というコマンドが使えるようになったが、 gcloud はGoogle Cloud Platform全体管理ツールで、Google Cloud Platformの各サービス(App Engine, Compute Engineとか)のAPIを操作すにはCloud Platform Tools(gcloudとか)を入れる必要があるらしい。

今インストールされているCloud Platform Toolsの一覧は gcloud コマンドで確認できる。
gcloud components list
こんな感じで出力される。

The following are the components available through the Google Cloud SDK. You may choose to install one or more of the pre-configured packages (which contain everything you need to get started), and/or any of the individual components below. ------------------------------------------------------------------------------- | Packages | |-----------------------------------------------------------------------------| | Status | Name | ID | Size | |---------------+-----------------------------------------+------------+------| | Not Install…

[GCE] Google Cloud SDKのセットアップ

イメージ
Google Cloud SDKのセットアップ。といってもQuick Startの通りにやればいいので特に難しくはない。

google cloud sdkを拾ってきてインストールスクリプトを実行。
wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.zip unzip google-cloud-sdk.zip sh google-cloud-sdk/install.sh
↓こんな感じで出力されるんで、いくつか質問に答えていくと必要なものをダウンロードしてきてくれる。
Welcome to the Google Cloud SDK! The Google Cloud SDK is currently in developer preview. To help improve the quality of this product, we collect anonymized data on how the SDK is used. You may choose to opt out of this collection now (by choosing 'N' at the below prompt), or at any time in the future by running the following command: gcloud config --global-only set disable_usage_reporting true Do you want to help improve the Google Cloud SDK (Y/n)? This will install all the core command line tools necessary for working with the Google Cloud Platform. If you are developing an App Engine application, please select the language your application is written in. This will install the required tools a…

[GCE] Compute Engineでインスタンスを作成

イメージ
Google Cloud PlatformのCompute Engineでインスタンスを作成してみる。

こちらがCompute Engineの初期画面。「新しいインスタンス」をクリック。

必要な情報を入力してインスタンス作成。

インスタンスを作成すると画面に表示される。


インスタンスのイメージとして選択できるものは5つ。
backports-debian-7-wheezy-v20140331debian-7-wheezy-v20140318centos-6-v20140318rhel-6-v20140318sles-11-sp3-v20140306 インスタンスのスナップショットを作成して、そのスナップショットをイメージとしてインスタンスを作成することもできるっぽい。この辺はAWS触ったことある人なら特に違和感ないはず。


インスタンスの削除は、対象のインスタンスを選択して一番下にある「削除」ボタンをクリック。

インスタンスにログインするにはGoogle Cloud SDKというものを使わないといけないらしい。


【まとめ】
Google Cloud PlatformのCompute Engine使ってみた