Google Cloudはとかく専門用語が多いです。一通りの用語を覚えていれば、適切なサービスを選び、そのサービスの使用にも役立ちます。用語集兼解説集ということでpart.4まであります。今回紹介するGoogle Cloudのサービスは “Compute Engine”のみです。
- 事前知識編
- Compute Engine編① Virtual Machine
- Compute Engine編② ネットワーク
- Compute Engine編③ ハードウェア
- Compute Engine編④ ロードバランシング
- Compute Engine編⑤ IPアドレス
- Compute Engine編⑥ OS
- Compute Engine編⑦ 割引方法
- Compute Engine編 その他
- Compute Engine編⑧ Managed Instance Group
- Compute Engine編⑨ Managed Instance Group – autoscaling
- Compute Engine編⑩ Managed Instance Group – auto healing
- Compute Engine編⑪ Google Managed Service (Related)
事前知識編
Compute Engine編① Virtual Machine
Google Cloudの提供するサービスの1つ。仮想サーバーのこと。クラウドにアプリをデプロイするには仮想サーバーが必要である。Compute engineでは仮想マシンのインスタンス(VM Instance)を作成でき、このインスタンスのライフサイクル(起動→停止→再起動→終了)を行える。仮想マシン=GCPにおける仮想サーバー。複数のVM instanceに対してロードバランシングとオートスケーリングを実装できる。
物理的なサーバーハードウェア上に複数の仮想的なサーバーを作成し、それぞれが独立して動作する仮想化技術を利用したサーバーのこと。通常、1台の物理サーバー上で複数の仮想サーバーを稼働させ、それぞれが独自のOSやアプリを実行できる。クラウドプロバイダーの保有する物理的なマシンにインターネット経由でアクセスして、その物理マシン上に仮想サーバーを作る。データセンターにずらっと並んでいる物理的サーバーのどれかを使って自分の望むサーバーを構築するイメージ。データを保存したり、アプリを動かしたりする。
Virtual Machine Instanceのこと。仮想マシン(=仮想サーバー)の分身であり、仮想サーバーそのものだと思えば良い。ゾーンやリージョンを設定できて、外部IPと内部IPを持つ。
サーバー負荷に応じて、自動的にクラウドサーバーの台数を増減させる機能のこと。
短命で安価なcompute instanceのこと。Preemptible instanceを実行できる最大時間は24時間である。またフリークレジットが適用されない。割引方法の1つ。
Preemptible VMの最新版。スポットVMには最大実行時間がない。それ以外は大体同じ。
VMインスタンスのテンプレートを作成すること。個別にVMインスタンスの詳細を指定しなくて済むので、複数のインスタンスを作成する際に便利である。
仮想マシンのリソース(CPUやメモリ)を増加(減少)させること。スケールアップなら性能が向上する。スケールダウンなら余分なリソースを解放してコストを下げられる。
“Scale in”とは、ロードが減ったときVMインスタンスの数を減らす。”Scale out”とは、ロードが増えた時VMインスタンスの数を増やす。
データの取得/保存を特定の仮想マシンに行うこと。
仮想マシンを実行するハードウェアのこと。”Machine configuration”で選ぶ。
VMインスタンスの起動時に何らかのソフトウェアをインストールしたり、OSパッチをインストールしたりするプロセスのこと。
VMマシンの起動時にスクリプトを実行し、Apacheサーバーを自動的にインストールする。
OSパッチとソフトウェアがプリインストールされたもの。VMインスタンスの起動時に時間がかかる問題を解決することができる。
企業のセキュリティ標準に準拠したVMインスタンスを作成し、そこからイメージを作成するプロセスのこと。セキュリティ標準に準拠したイメージになる。
既存の定義済みVMマシン・タイプがワークロードに十分でない場合、ニーズに合わせてカスタマム・マシンタイプを作る。custom machine typeでは、vCPU数(コア数)やメモリ量(GB)、GPUを必要に応じて増減させられる。
Compute Engine編② ネットワーク
Secure Shellの略。ネットワーク経由でサーバー(ほかのコンピュータ)に接続して遠隔操作するための仕組み。通信内容は全部暗号化される。暗号化されないtelnetより強力。黒いカバンで手紙を届けるようなこと。
つまりwebサーバーのこと。
許可すると外部から仮想マシン上で実行中のアプリケーションにアクセスできる。
潜在的に悪意のあるネットワークトラフィックをフィルタリングするもの。
通信分野において異なる機器やアプリ間で互いに通信できるようにするための原則。プロトコルは通信形式やデータ構造を定めており、プロトコルがあるから異なる機器やソフトウェア間で相互作用できる。例えば 通信プロトコルの1つであるTCP/IP (Transmission Control Protocol/Internet Protocol)はデータをパケットに分割し、それを送信元と宛先の機器間で信頼性を持って転送するための規則や手順を提供している。ほかにも HTTP (Hypertext Transfer Protocol)や SSL (Secure Sockets Layer)など、特定の通信用途に特化したプロトコルが存在する。尚、SSLは脆弱性が発見され、後継バージョンである TLS(Transport Layer Security)が主流になった。
ネットワークにおいて特定のサービスが通信するために割り当てられた識別子。通信がどのプロセスやサービスに向けられているかを示すためにポート番号が使用される。ポート番号は16ビットの整数で0~65535まで番号がある。Well-known PortsとRegisterd Portsの2種類の主要なカテゴリーがある。前者は一般的なプロトコルで0~1023まである。HTTPなら80、HTTPSなら443である。後者は特定のサービスやプロトコルに割り当てられており 1024~49151まである。
クライアントとサーバーとの間に立ち、クライアントからのリクエストやサーバーからのレスポンスを中継する中間装置。通信の管理やアクセス制御に役立つ。HTTPプロキシはHTTPトラフィックを中継するためのプロキシ。クライアントが直接ウェブサーバーと通信する代わりに、プロキシがクライアントとサーバーの中継を行う。SSL/TLSプロキシは暗号化された通信を中継するためのプロキシ。クライアントとサーバー間のSSL/TLS暗号化を解除してその内容を認識したりする。
クライアントがウェブサーバーに対して送信するHTTPリクエスト内の一部。HTTPリクエストは、クライアントがサーバーに対して何を要求しているかを伝えるもので、その要求の中でリクエストパスが指定される。リクエストパスは通常、ファイルやディレクトリへのパスを指定する。一般的にURL内のパスの一部として表現され、ウェブサーバーはこれを解釈して要求されたリソースを特定する。たとえば、/path/to/resource みたいなものがリクエストパス。
デフォルトのインターネットからのトラフィックを選ぶ。意味は〇〇。
バックエンドは入ってくるトラフィックをリダイレクトする場所だ。今回、バックエンドはMIGである。すべてのトラフィックをマネージド・インスタンス・グループに送る。
トラフィックをバックエンドにリダイレクトする方法を示すルールを設定する。
フロントエンドはトラフィックを受け取る場所である。フロントエンドはロードバランサーのURLを持つので、 基本的にフロントエンドであるロードバランサーにトラフィックが集まり、設定したルールに基づいて、 インスタンスグループであるバックエンドにトラフィックがリダイレクトされる。
Compute Engine編③ ハードウェア
HHDやSSDのこと。パソコンなどのデータを保存する記憶装置のこと。
ストレージ(記憶装置)を割り当てること。”どこにそれを保存するか”関連だなと思えば良い。
不摘発性のディスク。VM を停止しても保存されたデータが削除されない性質を持つ。永続ディスクはVM からデタッチ (取り外し) が可能であり、別の VM にアタッチ (取り付け) することも可。
永続ディスクのコピー。
Compute Engine編④ ロードバランシング
複数のサーバー間で、負荷がかからないように均等に処理を分散して割り当てること。複数のリージョンにあるVMインスタンス間でトラフィックを分散するために使用される。クラウドのロードバランシングはグローバルである。異なる地域(region)に配置されたVMインスタンス間で負荷を分散することができる。
HTTP(S)アプリやウェブアプリや REST APIでは基本的にほぼすべてこれを利用している。これはHTTPとHTTPsアプリケーションのためのレイヤー7のロードバランシングである。インターネット向けのロードバランサーや内部向けのロードバランサーを作ることもできる。
これはTCPやSSLプロトコルを使用するアプリケーションのロードバランシングのためのレイヤーである。一般的に、 ゲーム・アプリケーションは高い性能を必要とする。TCPやSSLを使ったロードバランシングのためのレイヤーを使うのはそのときだ。
UDPは、 UDPプロトコルを使用するアプリケーションの負荷分散のためのレイヤーである。UDPロードバランシングの制限のひとつは、単一リージョンにしかできないということだ。マルチリージョンのUDPロードバランサーを作成することはできない。
Compute Engine編⑤ IPアドレス
ネットワーク上の機器に割り当てられるインターネット上の住所のようなもの。ネットワークに接続する際、スマホやPCといった機器に番号が割り振られる。データの送信元や送信先を識別できないとデータを送受信できないが、子の識別にIPアドレスが使われる。IPアドレスで通信相手を指定している。192.168.0.0みたいにピリオドによって4つのブロックに区切られるものがIPv4。
インターネット上のさまざまな機器からあなた(私)を見つけるための番号のこと。VM instanceの場合は、インターネットからこの仮想マシンに接続するためのIPのこと。startやstopするたびに外部IPの値は変化する。”External IP Address”。
接続されているすべてのネットワーク機器に対してルーターが割り当てる番号。アクセスを制限して保護することもできる。要求される番号を聞いて、その番号に繋げる処理をする。startしてもstopしても内部IPの値は変化しない。仮想マシンが作成された特定のネットワーク内でのみ使用できる。特定のネットワーク以外では使用できない。”internal IP Address”。
ユーザーは外部IPを使ってアクセスしてくるが、外部IPの値は一定ではない。そこで、仮想マシンに固定IPアドレスを与えることでこの課題を解決する。つまり静的IPアドレスは、仮想マシンに割り当てられる恒久的な外部IPアドレスのこと。英語では”static IP Address”。
インターネット上で公開されていること。ITにおいて publicとかprivateの表現が出てきたら”公開”か”非公開”かを設定するもので間違いない。Githubのpublic/privateもそういう意味。
特定のネットワーク内であり、インターネット上には公開されていない。
Compute Engine編⑥ OS
“Boot disk”で仮想マシンにどのOSを入れるか選ぶ。DebianやUbuntuなどがある。コンピュータ全体の動作を管理制御する役割を持つ。
有料のOS。Red Hat Enterprise Linux (RHEL)やUbuntu Pro、 Windows Serverなど。
ライセンスを既に持っている場合、それを再利用してCompute Engineを使ってVMを作成できる。
Compute Engine編⑦ 割引方法
請求月の大部分でVMインスタンスを稼動させた場合に適用される自動割引のこと。何もしなくても勝手に適用される。一部適用対象外となるサービスもある。マシンのタイプがE2やA2の場合には持続的使用割引が適用されない。
特定の仮想マシンを長期間(1年や3年)必要とする場合に受けられる割引。この割引を受けるためには手続きが必要であり、途中でキャンセルできない。
Compute Engine編 その他
問題が起こる前提で「ヤバいことになったら、どうする?」を想定して備えること。もしくは、問題が発生した際に機能や性能を制限することなく動かし続けるための備えのこと。
クラウド事業者の物理サーバーを占有できる。ある顧客専用のハードウェア上の仮想化インスタンスである。sole-tenantは単独所有という意味。
ユーザーがサービスを提供する者との間で、サービスの品質について合意する契約のこと。
新しい仮想マシン・インスタンスを作成し、 そのインスタンスを特定のnode groupにデプロイしたい場合は、必ずaffinity labelを割り当てる。”node template”で設定する。
Compute Engine編⑧ Managed Instance Group
単一のエンティティとして管理される仮想マシン(VM)インスタンスのグループ
テンプレートを使用して作成された同一のVMであり、同じmachine type, image, configurationを持っている。
データベースのようなものを作成する場合は statefulを選ぶ。
ウェブアプリや REST APIでは通常 stateを持たない (statelessを選ぶ)。データが永続化されないままインスタンスが削除されることを避けられる。
ダウンタイムなしに、 あるバージョンから別のバージョンへ移行することができる。
段階的に新しいバージョンをリリースする。一度に何パーセントかのインスタンスを新しいバージョンに更新可能である。
現在稼働している10のインスタンスのうち、2つのインスタンスを選ぶことができる。この2つのインスタンスでテストして、他のインスタンスすべてに一度に展開できる。
異なる設定のVMを持つグループ。オートスケーリングやオートヒーリングのような機能はなく、異なる種類のVMが必要な場合を除いて推奨されない。
Compute Engine編⑨ Managed Instance Group – autoscaling
インスタンス・グループを使用するユーザー数に基づいてcompute instance数を増減できる。最大数と最小数を予め決めておく。
オートスケーリングでは負荷に応じてインスタンス数を自動的に調整する。最小インスタンス数や最大インスタンス数を設定するが、どんな基準でオートスケールするかがオートスケーリング・メトリクスだ。⑴CPUの使用率に基づいて行う方法、⑵ロードバランスの使用率に基づく方法、⑶Google Cloudが提供する監視ツール(=スタックドライバー)を使う方法がある。
オートスケーリング・メトリクスをもう一度見る前に待つ時間。オートスケーリング条件が設定された後、メトリクスをもう一度見るまでにどのくらい待つか。これによって、 スケールアップやスケールダウンが頻繁に起こらないようにすることができる。
Google Cloudは先週または数日前のデータを見ることができ、そのデータを使って予測自動スケーリング(Predictive autoscaling)を行う。
スケジュールに基づいたオートスケール機能である。「この時点までは、 この特定のものに対するインスタンス数を増やし、以後はインスタンス数を減らす』とスケジュールできる。
Compute Engine編⑩ Managed Instance Group – auto healing
ヘルス・チェックを設定することができ、ヘルス・チェックが失敗した場合、特定のインスタンスは自動的に新しいインスタンスに置き換えられる。
マイクロサービスのインスタンスの1つが正しく動作していない場合、コンテナのオーケストレーションでそれを識別し、 動作するインスタンスに置き換えることを望む。
1分ごと、 あるいは10秒ごとにヘルスチェックを実行したいとする。それが”check interval”で設定できる。”timeout”はリクエストが失敗とみなされるまでの待ち時間。”Healthy threshold”(基準点)はVMインスタンスをヘルシーとマークする基準だ。X回連続して障害が発生しなければ健全(healthy)であると判断するか。
「5分間で10%以上、 あるいは3インスタンス以上スケールインしたくない」などを設定する。”Scale in”とは、ロードが減ったときVMインスタンスの数を減らす。”Scale out”とは、ロードが増えた時VMインスタンスの数を増やす。ユーザーが沢山いて100個のインスタンスがあったが、ある時間でユーザー数が突然減ったとしても、インスタンスの数をいきなり5個や10個にしたくない。段階的にVMインスタンスを増やしたり減らしたりできる。
ヘルスチェックを実行する前に、 アプリが初期化されるまでどのくらい待つべきか。
Compute Engine編⑪ Google Managed Service (Related)
Google Cloudが提供する Managed Kubernetes Service。
Google Cloudが提供するオブジェクトストレージ。ファイルを保存し、そこからイメージを作成することもできる。
Google Cloudのマネージド・ロギング・サービス。ログを記録する。
コメント