🐈
【GCE】インスタンスグループの自動スケーリング についての備忘録
はじめに
インスタンスのグループの自動スケーリング についてまとめます
全体構成像
用語
マネージド インスタンス グループ(MIG)
- 複数の同一
VM
でのアプリケーション操作が可能
- 自動スケーリング、自動修復、リージョン(マルチゾーン)デプロイメント、自動更新などの自動化
MIG
サービスを活用することで、スケーラブルで可用性に優れたワークロード処理を実現できる
VM
仮想マシンのこと
スケールイン
スケールインしたVM
の必要性が低下した際に増やしたVM
を削除すること
スケールアウト
サーバー負荷に伴い、MIG
にVM
が追加されること
やり方
GCE
のイメージの作成
イメージ
イメージとは、VM の起動に必要なアプリケーションとオペレーティング システムを含むディスクのレプリカです
gcloud compute images create イメージ名 --project=プロジェクト名 --source-disk=ソースディスク名 --source-disk-zone=asia-northeast1-b --storage-location=asia-northeast1
インスタンステンプレートの作成
インスタンス テンプレート
仮想マシン(VM)インスタンスとマネージド インスタンス グループ(MIG)を作成するために使用できるリソース
テンプレート名・マシン構成を設定
作成したイメージをブートディスクに設定する
アクセス スコープ > API ごとにアクセス権を設定
- ストレージ > フル
- ファイアウォールの
HTTPトラフィック(HTTP通信)
を許可する
インスタンスグループの作成
インスタンスグループ
単一のエンティティとして管理できる仮想マシン(VM)インスタンスの集まり
前回作成したインスタンステンプレートを選択する
自動スケーリングを設定する
インスタンスの最小・最大数を設定する
設定したインスタンス数に応じてインスタンスが自動で作成される
CloudSQLに接続する
プライベートIPアドレスを設定する
設定したプライベートIPアドレスを設定する
/var/www/html/index.php
<?php
try {
$pdo = new PDO('mysql:host='プライベートIPアドレス名';dbname='DB名';charset=utf8','ユーザ名','パスワード',
[(PDO::ATTR_EMULATE_PREPARES => false)];
echo "成功";
} catch (PDOException $e) {
echo "失敗";
}
?>
<?php
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<p>";
echo $row["name"];
echo "</p>";
}
?>
イメージを作成
インスタンステンプレートを作成
作成したイメージをブートディスクに設定
GCSバケット
をマウントする処理を追加する
起動スクリプトに#! /bin/bash
sudo gcsfuse -o allow_other マウント元のバケット名 マウント先
インスタンスグループを更新
作成したインスタンステンプレートを設定する
インスタンスの再起動/置換を行う
マウントしたGCSの画像を表示する
ls -ltr /var/www/html/demo/
total 224
-rw-r--r-- 1 root root 25424 Jan 10 15:01 b551ca84-3de9-2e40-5ceb-c2d7f90bb8f6.png
-rw-r--r-- 1 root root 202962 Jan 10 15:01 Corporate_Sunrise.png
vi /var/www/html/index.php
/var/www/index.php
<div>
<img src="./demo/Corporate_Sunrise.png">
</div>
画像が表示できれば成功
さいごに
読んでいただきありがとうございます。
いいねしていただけると記事執筆の励みになりますので、参考になったと思った方は是非よろしくお願いします!
Discussion
有用な記事をありがとうございます。
勉強になります。
一点。
スケールイン、スケールアウトの用語ですが、
スケールイン :台数を減らす
スケールアウト:台数を増やす
で、用語の意味が逆で使用されているのではないかと思いました。
意図の取違などでしたらすみません。
ご指摘ありがとうございます!
こちら修正いたします