GCP

gcloud/kubectlコマンドの補完をインタラクティブに選択可能にするalpha版が登場

Google Compute Platform の操作をするためのCLI gcloud コマンドで新しい補完スタイルが提案されました。これまでも bash や zsh ではコマンドの引数を <TAB> で保管する事が出来ます。通常はこれでも十分に実用的な機能として利用できます。

今回の新しい機能を導入すると下の図のように引数の候補、説明などが表示されます。(今環境は mac + iTerm2 上で動かしていますので Windows 環境だとどんな感じなのかはチョットわかりません)

  • gcloudだけじゃなくて kubectl も補完されるので k8s ユーザにもおすすめ
  • 引数の説明は覚え切らないのでヘルプがとても便利(ON/OFF可能)
  • キー操作は vi / emace に切り替え可能

導入は簡単でalpha版の機能を有効にするだけです

gcloud components  update
gcloud components install alpha
gcloud alpha interactive --update-cli-trees
gcloud alpha interactive

これだけで利用することが出来ます。

ブログのサイトを無料枠範囲のUSリージョンへ移動

このサイトもGCPに移動していましたがよく考えたら無料枠を使っていませんでした。

あまりアクセスもなく現状 micro (コンピュートエンジンのリソースのサイズの中で一番小さいモデル)で十分問題がなさそうです。したがって無料枠であるUSリージョンに移動しました。

  1. snapshot の取得
  2. us-regionへインスタンスを作成(1で取得したsnapshotを利用): wp02
  3. instance-groupを作成 : wp-group-us
  4. 既存のload Balancerの background の配下に 3で作成したinstance groupを追加 : wp-lb-background

以上でトラフィックが分配されるのが確認できました。

問題がなさそうなので既存の日本リージョンに作成していたインスタンス wpを停止しておきました。GCPは停止しているインスタンスには課金がされないのも良いところですね。

それにしてもこの作業を行うのにホンの10分程度で出来てしまって拍子抜け。素晴らしいですね。最初からLB配下において動かしていたことも良かったと思います。このサイトはだいぶ前からCDNはCloudFireを利用しているのでGCPの機能は利用してないのですがこちらもいつか使ってみたいと思います。

Google Cloud Certified Professional Cloud Architect に合格しました

件名のとおりですが「Google Cloud Certified Professional Cloud Architect」というGoogleが提供しているCloudサービスの認定資格に合格しました。ネットにも書籍でもまだまだGCPは少ない(とは言え IBM Cloudも似たようなもんだ)ので試験勉強も一苦労でした。

誰かの参考になればと思いますので、とりあえずやった勉強内容だけ書いておきます。

スペック

  • AWS Associate (既に失効 2014)
  • IBM Cloud Developer Application (v1(2016)/v2(2017))
    仕事でさわっている順に資格も取っているのでクラウド関連の一般的な事は理解している

GCP歴

  • はるか昔にGoogle App Engine
  • 最近このブロクサイトをGCPに移籍

試験勉強期間

  • 大体まる二日くらい
  • とは言えGoogle Nextや国内でするGoogleイベントは数年前から参加している
  • 先日無料のFandamentalが受講できたので受講済み(たまにTopGateさん主催などでやっているので見逃さないように)

勉強内容

  • 試験対象の「サービス」が明記されてないのは、全般的に出るのだろうと思いとりあえず公式の模試をしました
  • ユースケースが事前に公開されていますがあそのユースケースに沿った問題が出ててきています。なのでつまりこのユースケースを実現するための問題が幾つか出てくるのだろうと予想しました。
  • ユースケースを実現するために必要そうな、GCPの各サービスのマニュアルを読みました。だいたい概要、コンセプト、あればチュートリアルを実施(あまりしなかったけど)

何をしたらよいか不安だったので色々研修コースをみました。
公式からの紹介されているコンテンツは良さそうでしたがどれも結構なお値段だったので今回は諦めました。

  • この内容をみて明らかにサービスっぽいのは重点的にマニュアル読みました。

ちょうど特売していたので Udemyのコースを2つ購入してみました。

  • そもそも私の英語能力はさっぱりですが、輪をかけて早口で聞き取れなかったです(英語の自動字幕もダメダメできちんと拾えてなかった)
  • 資料もあまり図がないため音声が聞き取れないとツライ感じ。
  • とりあえず触ったことない部分を4時間くらいは聞いたと思います。英語がわかれば逆に電車とかで聞けて良い感じだと思います。

模試の内容的に「設計」に関する質問が多そうでコマンドの細かい範囲は出てなかったので基本的にはマニュアル読んでいました。例題やハンズオン資料が無く、闇雲に読んでも仕方ないのでユースケースからシチュエーション想像してその辺のドキュメント見るという感じで進めてました。

試験感想

  • 試験の申込時に、日本語サイトから申し込まないと日本語の選択は出てこない
  • 私の場合にはAWS時代に試験を受けていたので、ログイン後に「AWSの試験」しか選択肢に出てこないという状況になりましたが問い合わせた所再度アカウントを作り直すように指示れました。
  • アーキテクト/設計(つまりGCPのどのサービスを組み合わせるか)が中心の問題のため、複数の正解から最適なものを選んでいく事になりどの程度あっているか不明でした。
  • 結果が「合格/不合格」しか表示されないため、次回に生かせないという一度落ちると何も信じれなくなりそうなスタイルです。
  • 今まで楽し権では、さらっとやって時間前に終わるのですが初めて見直ししたりして120分使い切りました
  • 「合格」のフォントが小さいしその後、証書などをくれないので申し込みサイトから確認してしまいました。
  • 確かに終わってみればAWSアソシエイトと同様のレベルのような気もしますが、ズバッとこれという答えがないのでモヤモヤが残ります。

まぁ何にせよ一回で勉強が終わって(合格して)良かった。

参考

私は使っていなのですが良さそうだったのはやはり公式サイトからGuideされている内容。

  • Qwiklabさんの研修コース。AWSのときにはお世話になったやつですね。今はすっかりGCPです。
  • 月額サブルスクリプションで$55です。下手な参考書よりはこちらをやったほうが良かった気もします。実際に役に立つという意味でも。
  • こちらは公式のオンライン学習教材、これは普通に良さそうでしたが高い(3万)ので受けて見てないです。
  • 研修などに参加するよりは安いとおもいます、不明な個所を自力で調べたり出来る人はこちらのほうが良いのかもしれません。

合格するとパーカーが貰えるそうなので楽しみ。

[ubuntu] ansibleでswapfileを作成する

GCPのf1-microインスタンスがメモリ不足になっていたのでSwapファイルを設定しています。パフォーマンス的には別のディスクに書き出したほうが良いと思います。このあたりは IBM Cloud の場合にはどのサイズのインスタンスを作ってもSwapは別に用意されていて親切さを感じます。

gistに貼ったのでちょっと不親切な状態になっていますが実際には以下のようなディレクトリ構成だと思っていてください。

~/ansible/roles/swap$ du -a
4       ./vars/main.yml
8       ./vars
4       ./handlers/main.yml
8       ./handlers
4       ./templates/swapfile.swap.j2
8       ./templates
4       ./tasks/main.yml
8       ./tasks
36      .

Ansibleのソースは次のようなものを用意しています。

完全に自分用のメモですが以下のコマンドで導入されます。以下は cloud shell上に ansibleを導入している環境を前提にしています。またSwapを作りたいGCEのインスタンスには、ネットワークタグに swap を追加しています。こうすることで tag_swap と dynamic_inventory で認識されたインスタンスのみに上記の Playbook が導入されていきます。

ansible-playbook -i inventory/gce.py -l tag_swap --private-key=~/.ssh/google_compute_engine main.yml

色々やり方があるとは思いますが systemd 的には今回のようにするのが推奨されているのかなと思います。ただしmount系は /etc/fstab でも動くとは思いますので任意の方法で試してください。パフォーマンスの低下が気にならない範囲であればメモリだけの問題であれば swap は1つの手として昔ながらの方法として普通に使えます。

ブログのサイトをAzureからGCPへお引っ越し

はじめに

お世話になっていたAzureもそろそろ無料で利用できなくなるので Google Cloud Platform (以降GCP)に移行をしてみました。
GCPは、Google社が自社で提供しているサービスが実際に動いている基盤をクラウドサービスとして利用できるようになっているクラウドサービスです。特に安くて早いと評判ですね。GCPの目指すところは、運用入らずの「NoOps」ということなので運用も楽になるといいなと思っています。

GCP上では色々な方式でWordpressを動かすことが出来ますが今回は、Containerでするか、Google App Engineでするか、通常のVM(Google Compute Engine)で行うか悩んだのですが、まずは Google Compute Engine(GCE)で行ってみることにしました。

環境

移行前 Azure (VM)

  • Standard DS1 (1 vcpu, 3.5 GB memory)
  • Ubuntu 16.04 LTS
  • Nginx(1.10.3-0ubuntu0.16.04.2) + php(7.0) + php-fpm + mySQL(5.7)
  • Region : Japan East

移行後 Google Cloud Platform (GCE)

  • f1-micro(vCPU x 1、メモリ 0.6 GB)
  • Intel(R) Xeon(R) CPU @ 2.20GHz
  • Ubuntu 17.10
  • Nginx(1.12.1-0ubuntu2) + php(7.1) + php-fpm + mySQL(5.7)
  • Region: asia-northeast1-a

PHPが少しだけバージョンが上がった事、OSの新しいリリースがその差になります。

移行の流れ

WordPressの以降についてはもう散々語られているので特に書くべきことはないのですが

  1. 元のサイトでバックアップの取得(今回は, BackWPup プラグインを利用しました)
  2. 新規サイト側でOSからMySQLいれてPHP動くところまで構築(普段使っている Ansible Scritpt で流した)
  3. バックアップを htdocsに展開、wp-config.phpを修正、mySQLを復元
  4. CDNで利用しているCloudFlareでサイトの方向を新規に切替

で動きました。

ちょっとメモ

MySQL5.7のメモリ利用量が多い

こちらで記載されていますが初期設定のメモリの量が増えている模様です、この設定無効化するオプションを /etc/mysql/conf.d/mysql.cnf に追記しました。初期の導入中では、大きなサイズのインスタンスでインストールしていたので、メモリサイズを小さいインスタンスにしたらmySQLが起動せず気が付きました。ログを見るとAppArmorのエラーが出るのですがそもそも起動していたので関係ないのだと思います。

[mysqld]
performance_schema = off

CDNの構成

普段からCDNには、CloudFlare を利用しています。私みたいに、普段からちょいちょいサイトを移動する人にはこういったフロントエンドを利用しておくと切り替える時に便利です。このサービスはCDNと同時にDNSの管理もしてくれておりとても便利です。

  • CloudFlare(CDN) -> { LB -> Instance Group -> wordpress_server }

という構成にしてみました。GCP上では1台なのですがLBの配下においています。したがって CloudFFlareに登録するIPアドレスは LBの「静的IP」を指定しています。

スペック不足..

やはりg1-small(vCPU x 1、メモリ 1.7 GB)に変更しています。もう少し時間が有る時に調べていきたいと思いますがメモリなさすぎて落ちまくっていました。定期的に何かのプログラムがメモリ食ってKillされているという流れ。事前に全く調べてなかったのですが Swapが指定されていないですね。 cat /proc/meminfo で確認するとSwapが0KBです。

sudo dd if=/dev/zero of=/swapfile bs=1024K count=1024
sudo mkswap /swapfile
sudo /sbin/swapon /swapfile
  • [todo] 自動マウントさせようとしたけどなんか旨く動かないので後で確認する
  • とりあえずは動いているのでf1-micro(vCPU x 1、メモリ 0.6 GB)で様子を見てみる。

ちなみにStackDriver使うとあとからでもログを管理コンソールから参照できてすごく便利

あとから調べたら結構似たような人は沢山いる。いま f1-micro(US)は1つまで無料なのですね。

まとめ

  • スペックはIaaSとしてはCPUの性能比を除けばメモリサイズとなります。メモリが割当たっていれば当面は十分そうです。この辺はStackDriverなりの画面を後で見ながら確認して行こうと思います。
  • 監視とかそのあたりの機能については出来ることを全部やってみてみたいと思います(特に StackDriverまわり)

.

上部へスクロール