1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GCPを試す

Last updated at Posted at 2021-01-29

基本

GCPのコンソールに行く
アカウント作成
プロジェクト作成(プロジェクト一覧から)
請求アラート作成(お支払い-> 予算とアラート)
料金見積もり
CloudShell(ナビゲーションのアイコンをクリック)

GCE

これがサーバです。

インスタンス作成

リージョンとサーバスペックを選択、HTTPを許可

パッケージインストール

SSHで開く(ブラウザウィンドウ)

sudo apt-get update
sudo apt-get install -y apache2
sudo apt-get install -y php
php -v
sudo systemctl start apache2 // サービス起動
ps -aux | grep apache // プロセス表示

外部IPからアクセス

/var/www/html/index.php の変更

スナップショット(増分)

スナップショットを作成
詳細から「インスタンスを作成」ボタンで復元

エフェメラルIP

インスタンスを停止、起動するとIPが変わってしまう
「VPCネットワーク - 外部IPアドレス」エフェメラル->静的

GCS

ストレージです。

バケットの作成

Storage - ブラウザ - バケットの作成
アクセスする頻度によってリージョン、ストレージクラスを決める
Multi,Dual,Regional
Sdandard,Nearline,Coldline,Archive(あとから変えられる)
権限
オブジェクトライフサイクル - 古いものをColdlineに移動など

ファイルをアップロード
ファイルを公開 - 権限の編集 - Public(一般公開)

GCSとGCEをマウント

一般公開せずに、GCEのコンピュータ内にGCSをマウントしアクセスさせる。
サービスアカウントを変更するためGCEを一旦停止する
GCEのインスタンス詳細から編集
アクセススコープ - 各APIにアクセス権設定 - ストレージ(フル)

gcsfuseをインストール
https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/installing.md
gcsfuseを使う
https://github.com/GoogleCloudPlatform/gcsfuse

GCEの中にマウント先のフォルダを作り、マウントする
sudo mkdir storage(/var/www/htmlの中)
sudo gcsfuse -o allow_other udemy-study-2020-1205 /var/www/html/storage
中にstorageのファイルが出たか確認

インスタンス再起動でマウントが外れないようにスクリプトを設定

カスタムメタデータに下記を追加

#! /bin/bash
sudo gcsfuse -o allow_other udemy-study-2020-1205 /var/www/html/storage

CloudSQL

データベースです。Mysql, Postgres, SQLServerなどが使えます。

SQL - Mysql - インスタンス作成 - リージョン - DBバージョン - マシンタイプ
データベースの作成 - CloudShellを使用して接続 - Shellにコードが出るのでEnter - メッセージの通りCloud SQL Admin APIを有効化
rootパスワードを入力してログイン

GCEからCloudSQLへ接続

https://cloud.google.com/sql/docs/mysql/connect-compute-engine
やり方: パブリックIPを使う、他にもプライベートIP、CloudSQLProxyを使うやり方
GCEのIPを許可する: GCEの外部IPをコピー、SQLの承認済みネットワークに追加
34.97.112.139

GCEでShellを起動しクライアントインストール

sudo apt-get update
sudo apt-get install -y mariadb-client

CloudSQLのIPを指定し接続する

mysql -u root -h xxx.xxx.xxx.xxx -p

phpからアクセス

sudo apt-get -y install php-mysql
sudo systemctl restart apache2

InstanceGroup

インスタンスの自動増減でき、最小最大、基準となるCPU使用率などを設定

GCEのインスタンスからイメージの作成

もととなるインスタンスを停止 - もととなるソースを選択 - ディスク - インスタンスを選択

インスタンステンプレートの作成

マシンタイプなどのインスタンスプロパティ
https://cloud.google.com/compute/docs/instance-templates/?hl=ja
作成 - マシンタイプ選択 - ブートディスクを変更 - 作成したイメージを選択 - その他設定

インスタンスグループの作成

作成 - 作成したインスタンステンプレートを選択 - 自動スケーリング指標、最小、最大を設定
インスタンスを消したら新しいインスタンスが自動で復活する

CloudSQLにアクセス

インスタンスごとに違うパブリックIPを許可してられないのでプライベートIPを使う
同一リージョン、同一プロジェクトのみ接続可

SQL - プライベートIPを有効化 - 割り当てて接続 - 保存(時間がかかるので待ってブラウザ更新)
GCEに接続 - ソースをプライベートIPに変更 - イメージ、テンプレートの作り直し -
インスタンスグループの更新 - ローリング再起動/置換 - オペレーション置換(一台ずつ置き換えなど)

CloudLoadBalancing

負荷分散をする(HTTP、TCP、UDPなど)

HTTP負荷分散

ネットワークサービス - 負荷分散 - ロードバランサの作成 - HTTP負荷分散 - インターネットからVM
バックエンドサービスの作成 - インスタンスグループ(作ったグループ) - ポート80 - 使用率で割り振る - ヘルスチェックを作成(異常なインスタンスには割り振らないように)
ホストとパスのルール - そのまま(ホストとパスによって違うバックエンドに転送できる)
フロントエンドの構成 - そのまま

作成されたら、フロントエンドのIPポートにアクセス(完了でもロードバランサの起動に時間がかかる印象)

確認

起動中のインスタンスのデータをわざと変え、違うデータが表示されるか

CloudDNS

ドメインからロードバランサにアクセスする

DNSゾーンの作成

ネットワークサービス - CloudDNS - ゾーンの作成 - ゾーン名、取得したDNS名を入力
(GoogleAPIライブラリのCloudDNSAPIを有効化しないとエラー)
ネームサービス側の設定にGCPのタイプNSのデータを追加
レコードセットの追加 - タイプはA、キャッシュ時間の設定、ロードバランサのIPを追加

CloudFunction

関数を作成

関数を作成 - リージョン - 割当メモリ - ソースを書くorアップロード - 最初に実行される関数(エントリポイント)を選択
発行されたURLにアクセスすると実行される(未認証を許可した場合)or 詳細からテストを実行
ソース中身を変えた場合、バージョンを変えないと反映されない

CloudSQLにアクセス

Proxyを使ってアクセスできるようにする
CloudSQLでパブリックIPを有効にする
nodejsにmysqlパッケージを入れ、接続名を使って接続

後片付け

AWSはいちいちインスタンスを落とす必要があるが、GCPはプロジェクトごとにシャットダウンし課金を止められる

IAMと管理 - 設定 - シャットダウン

参考

現役エンジニアが教える、手を動かして学ぶGoogle Cloud Platform(GCP) 入門

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?