GCP

GCP Cloud SQLにCloud SQL Proxyで接続しよう。Systemd化してデーモン化!

優 GCP

GCP

今回はGoogle Cloud SQLを作成してみましょう。

 

データベースのマネージドサービスで、AWSでいうRDS/Auroraが相当します。GoogleのマネージドDBのGoogle Cloud SQLはIPベースでのホワイトリスト化で接続できます。しかし、少し手間にはなりますが認証キーによるAPIで接続するのが推奨されています、その理由としては、オートスケールを想定するとIPベースでの対応は難しいですが、ファイル認証のAPI形式は共通化できる為簡単に要件を満たせスマートになるのですね。

 

Cloud SQL v2 気になる性能

Googleでは公式ブログで、「Amazon Web Services(AWS)」で提供されているリレーショナルデータベースサービス「Aurora」との「sysbench」による比較を掲載。Cloud SQLのトランザクションあたりの待ち時間はAuroraの約半分で、1秒あたりのトランザクションを2倍にできるとしている。また、エンドツーエンドのレイテンシーについても半分以下とのことだ。

@see INTERNET Watch

AWS Auroraと比較しても性能が良いことがわかりますね。

 

 

 

 

Google Cloud SQLを作成しよう!

サイドバーから【SQL】を選んでね。

 

【インスタンスを作成】をクリックするよ。

 

 

 

MySQLを選択するよ。Cloud SQLのPostgreSQLはベータの品質だから、本番利用では気をつけてね。

 

 

もちろん、【第2世代を選択】をクリックしよう。過去は振り返らないよ。

 

Google Cloud SQL

インスタンスIDに任意の名前を。パスワードは好きなものを設定してね。

日本での利用ならリージョンは”asia-northeast1″で決まり。ゾーンは好きなのを選んでね。

【設定オプションを表示】するをクリックしよう。

 

 

 

Google Cloud SQL

お財布は痛いけど、【フェイルオーバーレプリカの作成】はおすすめです。マスターのDBが落ちたら、状況把握してすかさずマスターになるような頼れるやつ。ぜひチェックしていこう。

 

 

好きな時刻に設定してね。アクセスの少ない日曜の朝がおすすめだよ。

 

【作成】をクリックしよう。

 

Google Cloud SQL

疲れたね。

作成には数分かかるから、紅茶でも飲もうね。

 

 

データベースが仲良くならんでるね。これでオーケー。

 

 

APIでGCEから接続できるようにしよう!

Google Cloud SQL

下記のリンクにアクセスすると上の画面になるよ。

https://console.cloud.google.com/flows/enableapi?apiid=sqladmin&hl=ja

 

設定したいプロジェクトを選んで続行をクリックしよう。

 

 

これでGoogle Cloud SQL APIが有効になったよ。APIを利用するユーザを作成するよ。【認証情報に進む】をクリックしようね。

 

Google Cloud SQL

Google Compute Engineから接続するから、【はい、1つまたは両方を使用しています】にチェックを入れて、【必要な認証情報】をクリックしよう。

 

Google Cloud SQL

【サービスアカウント】をクリックしよう

 

 

 

Google Cloud SQL

【サービスアカウントを作成】をクリックしよう。

 

Google Cloud SQL

サービスアカウント名は好きなものを入力しよう。

役割の選択をしよう、【Project】>> 【編集者】を選択するよ。

 

 

 

Google Cloud SQL

【新しい秘密鍵の提供】にチェック、キーのタイプは【JSON】にチェックを入れて、【作成】をクリックしようね。

 

 

 

 

JSONファイルが自動的にダウンロードされるよ。この後使うから大事にもっておこう。

【閉じる】をクリックしてね。

 

 

 

Google Cloud SQL

ここのインスタンス接続名も重要だよ、メモ帳などにコピペしておこう。

 

 

 

 

Cloud SQL Proxyをインストールしよう

# cd /root

# wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy

# chmod +x cloud_sql_proxy

# chown root:root cloud_sql_proxy

# mv cloud_sql_proxy /usr/bin/

 

 

ダウンロードしてあった鍵ファイルを貼り付けよう。

# vi /root/GQL-Connect.json


{
  "type": "service_account",
  "project_id": "analog-vault-9999999",
  "private_key_id": "5844cf66d0c68af2a141e1c3a7",
  "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBg4qg==\n-----END PRIVATE KEY-----\n",
  "client_email": "dbadmin1641@analog-vault-188705.iam.gserviceaccount.com",
  "client_id": "11110000",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dbadmin1641%40analog-vault-55555.iam.gserviceaccount.com"
}

これが認証キーになるよ。

 

ソケットになるディレクトリを作るよ。

# mkdir /cloudsql
# chmod 777 /cloudsql

 

 

 

# cloud_sql_proxy -dir=/cloudsql -instances=analog-vault-9999999:asia-northeast1:sgdb1 -credential_file=/root/GQL-Connect.json &

2017/12/14 07:43:32 Ready for new connections

“-instances=インスタンス接続名”にはメモした接続名を入れてね。

これでCloud SQL Proxyが起動することが出来たよ。

 

違うコンソールを開いて接続できるか確認してね。

# mysql -u root -p -S /cloudsql/analog-vault-9999999:asia-northeast1:sgdb1


Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 227
Server version: 5.7.14-google-log (Google)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

 

 

Google Cloud SQL

接続できたね。

でも、これだとサーバを再起動をしたりしたらCloud SQL Proxyは立ち上がらないね。困ったね。Systemd化すれば再起動しても自動で起動することも簡単になるよ。

 

 

 

 

Systemd化しよう

# vi /etc/systemd/system/cloud_sql_proxy.service

[Unit]
Description = Cloud SQL Proxy Daemon
After = network.target

[Service]
ExecStart = /bin/cloud_sql_proxy -dir=/cloudsql -instances=analog-vault-9999999:asia-northeast1:sgdb1 -credential_file=/root/GQL-Connect.json
ExecStop = /bin/kill ${MAINPID}
ExecReload = /bin/kill -HUP ${MAINPID}
Restart = always
Type = simple
LimitNOFILE=65536

[Install]
WantedBy = multi-user.target

ExecStartの-instances=の後はGoogle Cloud SQLの接続インスタンス名を環境に合わせてそれぞれ変更してね。

 

自動起動設定を行おうね。

# systemctl start cloud_sql_proxy
# systemctl enable cloud_sql_proxy

 

再起動しよう

# reboot now

再起動してCloud SQL Proxyが起動していたら大丈夫。

お疲れ様です。

 

GCP
最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG