[2020年9月] Cloud Architect(Googleプロ認定資格)合格への道:第5回 Cloud Load Balancingに学ぶネットワークの基本

どうも、末岐碧衣です。

7月に Data Engineer 取ったばかりですが、9月末に今度は Cloud Architect に挑戦することになりました。

ということで、あと2週間切ってますが(!)、前回合格できた Professional Data Engineer の時と同じ手順で、お金をかけず、短期間で勝負を決めたいと思います。

私は技術畑をずっと歩いてきたエンジニアではないので、文系だったりあんまりI Tに自信ないけど、Google Cloud Certified プロ認定試験に挑戦して、資格取りたい!という方には参考にしていただける内容になると思います。

 

なお、このGoogleの教育プログラムなどに一切お金を使わず、2週間で集中学習する手順は、模試の受験が必須です。まだの方は、まずは模試を受験してみてください。その辺の手順は第1回の記事で詳しく記載しています。

 

今回のメインテーマ:Cloud Load Balancing

模試でいうと、8〜9問目までです。

模試:8問目

模試:9問目

 

暗記ポイント① オペレーション(旧称 Stackdriver)

モニタリング、エラー報告、デバッグ用に最適化されたログ監視ツール。

主な機能に、リアルタイムで大規模ログを取り込む「Cloud Logging」、それをダッシュボード で可視化したりアラート管理する「CLoud Monitoring」、トラブルシューティング機能やレイテンシ・費用の低減に役立つ「アプリケーションパフォーマンス管理(APM)」の3つがある。

 

暗記ポイント② Cloud Load Balancing

Cloud Load Balancing を使用すると、外部からアクセス可能である 1 つの IP アドレス、または Virtual Private Cloud(VPC)ネットワーク内部にある 1 つの IP アドレスの背後にリソースを配置できます。

 

Cloud Load Balancing には、内部や外部などいろんな種類がある

こんな使い方もできる。

  • ウェブ層: インターネットから入ってきたトラフィックが、外部の HTTP(S) ロードバランサによって負荷分散されます。
  • アプリケーション層: リージョン内部の HTTP(S) ロードバランサを使用して、アプリケーション層がスケーリングされます。
  • データベース層: データベース層は、内部 TCP / UDP ロードバランサを使用してスケーリングされます。

 

Cloud Load Balancing のすごいところ

  • 毎秒 100 万件以上のクエリに対応でき、安定した高パフォーマンスと低レイテンシを提供
  • ユーザーやトラフィックの増加に応じて自動スケーリング
  • 最先端プロトコルのサポート(HTTP/2、gRPC、HTTP/3、QUIC)

 

 

暗記ポイント③ Cloud CDN

Cloud CDN を HTTP(S) 負荷分散と連携させてユーザーにコンテンツを配信できます。HTTP(S) ロードバランサが、リクエストを受け取るフロントエンドの IP アドレスとポート、そしてリクエストに応答するバックエンドを提供します。負荷分散および GKE と連携させるように Cloud CDN を構成することもできます。

 

意味不明だったキーワード

エニーキャスト(anycast)

ルーティングトポロジーから見てデータを「 最も近い」または「最もよい」あて先に送信するネットワークのアドレッシング/ルーティング手法である(anycast―どこかに送信)。

 

高可用性(High Availability、HA)

可用性が高いことを示すIT用語。 システムなどにおいて、サービス提供が出来なくなる事態の発生頻度が少ないことを指す。 また、そのようなシステムをHA構成などと呼称する。

 

CDN(Content Delivery Network)

同一のコンテンツを、 多くの配布先、例えば多くのユーザーの端末に効率的に配布するために使われる仕組み。

CDNでは、世界中に配置されたキャッシュサーバー(オリジンサーバーからウェブコンテンツのコピー)の中から最も近いものにアクセスし、オリジンサーバーの代理でウェブコンテンツを配信します。

 

内部負荷分散

ネットに公開せず、マイクロサービス同士で通信させたい時に使う。

内部 HTTP(S) 負荷分散は、Compute Engine と Google Kubernetes Engine(GKE)でホストされているバックエンドに HTTP/HTTPS トラフィックを分散します。ロードバランサには、内部 IP アドレスを使用して Virtual Private Cloud(VPC)ネットワークの特定のリージョンでのみアクセスできます。

内部クライアントが動画と画像のコンテンツをリクエストしています。同じベース URL(mygcpservice.internal)を使用してますが、パスは異なります(/video/images)。

内部 HTTP(S) 負荷分散の URL マップに従い、パス /video に対するリクエストは動画のバックエンド サービスに送信され、/images に対するリクエストは画像のバックエンド サービスに送信されます。

 

プロキシ(Proxy)

とは「代理」の意味である。インターネット関連で用いられる場合は、特に内部ネットワークからインターネット接続を行う際、高速なアクセスや安全な通信などを確保するための中継サーバ「プロキシサーバ」を指す。

 

リバースプロキシ

特定のサーバへのリクエストが必ず通過するように設置されたプロキシサーバ。一般的なプロキシとは逆で、不特定多数のクライアントのアクセスに備えて特定のサーバー専用に設けられる。

GCPにおいてリバース プロキシ機能は、Google Front Ends(GFE)が提供する。

 

Envoy

Envoy(エンヴォイ)はクラウドネイティブなWebサービスのために設計された高機能なプロキシソフトウェアです。 L4/L7両機能を持ち、C++で実装されています。

 

L4/L7

ロードバランサー(L4):レイヤー4の負荷分散が可能(IPアドレスとポート番号による負荷分散が可能)

ロードバランサー(L7):レイヤー7で負荷分散が可能(URLやHTTPヘッダーで負荷分散が可能)

 

レイヤー4/レイヤー7

レイヤー4はトランスポート層、レイヤー7はアプリケーション層。

 

サブネット

IPネットワークを論理的に細分化したもののこと。

1つのネットワークを2つ以上のネットワークに分割することをサブネット化(subnetting)という 。

 

サブネットマスク

IPアドレスのうちネットワークアドレスとホストアドレスを識別するための数値。

例えば、これをサブネット化すると以下になる。

 

ネットワークプレフィックス

プレフィックスとは、接頭辞、前につける、などの意味を持つ英単語。

IPネットワーク上で機器を識別するアドレス体系の一つであるIPv6アドレスでは、アドレスの種類やネットワークの識別子として用いられる前半部分をプレフィックスという。

ちなみに、後半側はネットワーク内での機器の識別子などを表すインターフェースIDである。

 

プレフィックス表記とは、IPアドレスとサブネットマスクを一緒に表記する方法。例えば「/24」と書いてあった場合は、サブネットマスクとして

2進数11111111.11111111.11111111.00000000
10進数表記:255.255.255.0

を使うよ、ということ。2進数表記で見た場合、左から24個、1が並んでいます。

 

Traffic Director

複数のリージョンのさまざまなクラスタや VM インスタンスでのグローバルな負荷分散のデプロイ、サービス プロキシからのヘルスチェックのオフロード、高度なトラフィック制御ポリシーの構成を簡単に行うことができる。

 

サービスメッシュ

アプリケーションのさまざまな部分が互いにデータをどのように共有するかを制御する方法。完全接続ネットワークのこと。

 

データプレーン

ネットワーク上でデータ転送を行う際の3つの機能のうちの一つ。

  • コントロールプレーン(Cプレーン):データ転送における経路の制御や計算を行う機能
  • データプレーン(Dプレーン):フレームの転送を行う機能
  • アプリケーション:各プロトコルの機能を提供する機能

 

ゲートウェイ(Gateway)

コンピュータネットワークにおいて、通信プロトコルが異なるネットワーク同士がデータをやり取りする際、中継する役割を担うルータのような機能を備えた機器やそれに関するソフトウェアを意味します。

 

gRPC

Googleが開発を開始したオープンソースのリモートプロシージャコール システムである。gRPCは、HTTP/2をトランスポートとして利用し、Protocol Buffersをインタフェース記述言語として利用する。

 

リモートプロシージャコール(RPC)

Remote Procedure Call、直訳すると「遠隔手続き呼び出し」。

RPCはいわゆる「クライアント−サーバー」型の通信プロトコルであり、サーバー上で実装されている関数(Procedure、プロシージャ)をクライアントからの呼び出しに応じて実行する技術。

クライアントはサーバーに対し実行する処理を指定するパラメータや引数として与えるデータを送信し、それに対しサーバーはパラメータに応じた処理を実行してその結果をクライアントに返す、というのがRPCの基本的な流れだ。

 

プロシージャ (procedure)

プログラミングにおいて複数の処理を一つにまとめたものをいう。 手続きとするのが定訳である。

 

HTTP/2

従来のHTTPの新規格。「ストリーム」という概念を導入し、1つのコネクション内で複数のリクエスト/レスポンスを並行処理できるようになった。

つまり、より少ない通信量でより迅速にやり取りを行えるようになった。

 

HTTP/3

トランスポートプロトコルとして「QUIC」と呼ばれる新しいプロトコルを採用します。

 

TCP(Transmission Control Protocol)

IPと同様にインターネットにおいて標準的に利用されている プロトコルです。 TCPは、IPの上位プロトコルでトランスポート層で動作するプロトコル。

 

UDP (User Datagram Protocol)

UDPは、コネクションレス型のプロトコルであることから、TCPに比べると信頼性がないものの高速に転送を行うことができます。また、UDPヘッダサイズ(8byte)が少ない事から、その分アプリケーションのデータを多く送受信することができます。

ただし、パケットが到達する保証がないことから、パケットロスなどの場合アプリケーション側で再送処理をして通信を成立させるかパケットロスが容認できるアプリである必要があります。

 

TLS (Transport Layer Security)

TCP/IPを使ったさまざまなサーバとクライアントの通信で、 セキュアなチャンネル(通信路)を利用できるようにする仕組み。

 

QPS/RPS

Queries per Secondと Requests per Second。

秒間クエリ数のこと。

 

セッション アフィニティ

affinity、類似性。

セッションアフィニティとは、ロード・バランシング・アルゴリズムに優先して、セッション内のすべての要求を特定のアプリケーション・サーバー宛に送信すること。

 

WebSocket

ユーザーのブラウザーとサーバー間で対話的な通信セッションを開くことができる先進技術。TCP上で低コストで双方向通信が実現出来る。

 

うーむ、ネットワークはなんか覚えること多くて大変や。。

時間がないのですごくざっくりした理解で先にすすむ!笑

 

次回に続く!

それでは!

末岐 碧衣
  • 末岐 碧衣
  • フリーランス のシステムエンジニア。独立後、一度も営業せずに月収 96 万円を達成。1986年大阪生まれ。早稲田大学理工学部卒。システムエンジニア歴 12年。
    2009年、ITコンサルティング企業に入社。3年目でコミュ障が爆発し人間関係が崩壊。うつにより休職するも、復帰後はコミュ障の自覚を持ち、「チームプレイ」を徹底的に避け、会社組織内においても「一人でできる仕事」に専念。社内外から評価を得た。
    無理に「チームプレイ」するよりも「一人でできる仕事」に専念した方が自分も周囲も幸せにできることを確信し、2015年フリーランスとして独立。