gcp
プロジェクトと請求先の関係
Google
リージョンとゾーン
リージョン:東京
ゾーン:ap-east1, ap-east2
アカウント登録
無料枠からひょいひょいと登録できる。
予算アラート
「お支払い」から予算アラートのメニューで設定できる。
割と直感的に設定できる。
marketplace
1からvm作ってインストールするのめんどくさい人向けのサービス。
gceからあらかたインストールしてくれたものを展開してくれる
GCE
仮想マシン作成
ec2と同じ
マシン
- 汎用マシンタイプ
- E2 は汎用型の VM インスタンスであり、一番の特徴はコストパフォーマンスの高さです。他のマシンタイプファミリーと比較すると最大で40%程度も利用料金を抑えることができる
- N2 & N2D は汎用型の VM インスタンスであり、機能の柔軟性やパフォーマンスを優先するワークロードに最適なソリューションです。利用用途としては、エンタープライズアプリ、中規模データベース、 web サービス、アプリ配信
- メモリ最適化マシンタイプ
- C2 はワークロード最適型の VM インスタンスであり、強力なコンピューティング能力が大きな特徴。ハイパフォーマンスな web サーバー、ゲーム、 HPC (ハイパフォーマンスコンピューティング)、メディアトランスコーディングなど、コアの力が求められる場合に有効
- コンピューティング最適化マシンタイプ
- M2メモリ最適化が大きな特徴であり、 SAP HANA のような大量のメモリを必要とするケースにおいて効果を発揮する VM インスタンス
https://cloud.google.com/compute/all-pricing?hl=JA#compute-engine-pricing
- M2メモリ最適化が大きな特徴であり、 SAP HANA のような大量のメモリを必要とするケースにおいて効果を発揮する VM インスタンス
現実的にも金額的にも運用するならば「4 vCPU + 4 GB memory」N2を利用するのが良い気がした。で、ロードバランサーという感じで。
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 に公開鍵を保存しません。
sshは各々のユーザで認証が実行
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での起動
gcpのoauth認可
gcs
初期ではアップロードした画像は公開されない。
ライフサイクルルール「アクセスログ」を保存
- Standard → Nearline → Coldline → Archive
右に行くほどアクセス頻度が少なくなる
cloud sql
サーバのインストール不要
スケーリング
パプリックIPアドレス
- auth proxyによってDBにアクセスする。awsのprivate VPC内に立てるイメージをするとパプリックという感じでセキュリティ的にどうなの?と思ったがproxy挟むので安全、だとこと
コンソール上からmysql8.0を作成するとユーザごとのアクセス権限を作成することはできない、とのこと
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';
サービスアカウントは
にあるものを付与すれば良い。
で、ロールがあるかどうかは、アナライズを使う
loadbalance
loadbalance時に初期実行できるコマンドがある。
イメージの作成
- vmからのコピー
インスタンステンプレートの作成 - vm作るための設定
- インスタンスを手動でやっていたが設定することで自動化
- ここでイメージを設定し、そこからインスタンスが増加される。起動時スクリプトはここで定義する
インスタンスグループ作成 - インスタンスグループを作成した時点でvmが作成される
ロードバランサー
DNS作成
cloudrun
cloudbuild
secretにアクセスするためには以下でシークレットキーにアクセス権限を付与する必要がある。
mysql cocket