Open9

gcp

hanpenmanhanpenman

アカウント登録

無料枠からひょいひょいと登録できる。

予算アラート

「お支払い」から予算アラートのメニューで設定できる。
割と直感的に設定できる。

marketplace

1からvm作ってインストールするのめんどくさい人向けのサービス。
gceからあらかたインストールしてくれたものを展開してくれる

GCE

仮想マシン作成
ec2と同じ

マシン

  • 汎用マシンタイプ
    • E2 は汎用型の VM インスタンスであり、一番の特徴はコストパフォーマンスの高さです。他のマシンタイプファミリーと比較すると最大で40%程度も利用料金を抑えることができる
    • N2 & N2D は汎用型の VM インスタンスであり、機能の柔軟性やパフォーマンスを優先するワークロードに最適なソリューションです。利用用途としては、エンタープライズアプリ、中規模データベース、 web サービス、アプリ配信
  • メモリ最適化マシンタイプ
    • C2 はワークロード最適型の VM インスタンスであり、強力なコンピューティング能力が大きな特徴。ハイパフォーマンスな web サーバー、ゲーム、 HPC (ハイパフォーマンスコンピューティング)、メディアトランスコーディングなど、コアの力が求められる場合に有効
  • コンピューティング最適化マシンタイプ

https://www.topgate.co.jp/blog/google-service/13934

現実的にも金額的にも運用するならば「4 vCPU + 4 GB memory」N2を利用するのが良い気がした。で、ロードバランサーという感じで。

hanpenmanhanpenman

gceでsshボタンをクリックすると、ブラウザからterminalにアクセスできるようになる。

また以下の手順でもインスタンスにアクセスできる

gloud auth login
gcloud compute ssh --zone "zone" $instance-name --project $project-name

gloudはbrew install --cask google-cloud-sdkを行いpythonを3.8以上にすることでgcloudコマンドは起動できる。

エフェメラル なIPアドレスは短命なIPアドレスという意味。固定IPアドレスであると立ち上げ時に変更されることはない

Compute Engine は、SSH 認証鍵とユーザー名をメタデータから取得してユーザー名でユーザー アカウントを作成し、Linux VM では、その公開鍵を VM 上にあるユーザーの ~/.ssh/authorized_keys ファイルに格納します。Windows VM では、Compute Engine は VM に公開鍵を保存しません。

https://cloud.google.com/compute/docs/instances/ssh?hl=ja#gcloud

sshは各々のユーザで認証が実行

hanpenmanhanpenman

gcp vpc

仮想ネットワーク

VPCの中にリージョン
リージョンの中にサブネット
ただし、サブネットはリージョンを跨ぐことができる

用語

用語 内容
サブネット VPCを細かく分けるときに使う。DBのサーバはサブネット
グローバルIPアドレス 外部IPアドレス。IPアドレス
プライベートIPアドレス 内部IPアドレス。VPC内のアドレス
エフェメラル外部IPアドレス 一時的なIPアドレス。vmを立てた時一時的なIPアドレス
静的外部IPアドレス 変更されない外部アドレス

cloud dns

sudo apt-get install nginx
sudo apt update
sudo service nginx start

vi /etc/nginx/sites-available/default
server_name _; #自分のdomainに変更

DNS登録は以下のサイトが参考になる

https化はload balanceとかでできるっぽい

pm2での起動

hanpenmanhanpenman

gcs

初期ではアップロードした画像は公開されない。

ライフサイクルルール「アクセスログ」を保存

  • Standard → Nearline → Coldline → Archive
    右に行くほどアクセス頻度が少なくなる
hanpenmanhanpenman

cloud sql

サーバのインストール不要
スケーリング

パプリックIPアドレス

  • auth proxyによってDBにアクセスする。awsのprivate VPC内に立てるイメージをするとパプリックという感じでセキュリティ的にどうなの?と思ったがproxy挟むので安全、だとこと

https://cloud.google.com/sql/docs/mysql/connect-instance-compute-engine?hl=ja#console_3

コンソール上からmysql8.0を作成するとユーザごとのアクセス権限を作成することはできない、とのこと
https://zenn.dev/pharmax/articles/93c0ec00fd722c

mysqlサーバに入って作成させる必要がある

CREATE USER 'test_user' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON sample.* TO 'test_user';

use mysql;
mysql> show grants for test_user;
+------------------------------------------------------------------------------+
| Grants for test_user@%                                                       |
+------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `test_user`@`%`                                        |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `sample`.* TO `test_user`@`%`        |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `quickstart_db`.* TO `test_user`@`%` |
+------------------------------------------------------------------------------+
3 rows in set (0.04 sec)

prismaのmigrate

CREATE USER 'user_migrator' IDENTIFIED BY 'k(9A~^W3#';
GRANT CREATE, ALTER, DROP, REFERENCES   ON *.* TO 'user_migrator';

サービスアカウントは
https://cloud.google.com/sql/docs/mysql/iam-roles?hl=ja

にあるものを付与すれば良い。
で、ロールがあるかどうかは、アナライズを使う

hanpenmanhanpenman

loadbalance

loadbalance時に初期実行できるコマンドがある。

https://qiita.com/yoshinbo/items/1bb001dd84858f7dda34

イメージの作成

  • vmからのコピー
    インスタンステンプレートの作成
  • vm作るための設定
  • インスタンスを手動でやっていたが設定することで自動化
  • ここでイメージを設定し、そこからインスタンスが増加される。起動時スクリプトはここで定義する
    インスタンスグループ作成
  • インスタンスグループを作成した時点でvmが作成される
    ロードバランサー
    DNS作成