今回は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世代を選択】をクリックしよう。過去は振り返らないよ。
インスタンスIDに任意の名前を。パスワードは好きなものを設定してね。
日本での利用ならリージョンは”asia-northeast1″で決まり。ゾーンは好きなのを選んでね。
【設定オプションを表示】するをクリックしよう。
お財布は痛いけど、【フェイルオーバーレプリカの作成】はおすすめです。マスターのDBが落ちたら、状況把握してすかさずマスターになるような頼れるやつ。ぜひチェックしていこう。
好きな時刻に設定してね。アクセスの少ない日曜の朝がおすすめだよ。
【作成】をクリックしよう。
疲れたね。
作成には数分かかるから、紅茶でも飲もうね。
データベースが仲良くならんでるね。これでオーケー。
APIでGCEから接続できるようにしよう!
下記のリンクにアクセスすると上の画面になるよ。
https://console.cloud.google.com/flows/enableapi?apiid=sqladmin&hl=ja
設定したいプロジェクトを選んで続行をクリックしよう。
これでGoogle Cloud SQL APIが有効になったよ。APIを利用するユーザを作成するよ。【認証情報に進む】をクリックしようね。
Google Compute Engineから接続するから、【はい、1つまたは両方を使用しています】にチェックを入れて、【必要な認証情報】をクリックしよう。
【サービスアカウント】をクリックしよう
【サービスアカウントを作成】をクリックしよう。
サービスアカウント名は好きなものを入力しよう。
役割の選択をしよう、【Project】>> 【編集者】を選択するよ。
【新しい秘密鍵の提供】にチェック、キーのタイプは【JSON】にチェックを入れて、【作成】をクリックしようね。
JSONファイルが自動的にダウンロードされるよ。この後使うから大事にもっておこう。
【閉じる】をクリックしてね。
ここのインスタンス接続名も重要だよ、メモ帳などにコピペしておこう。
Cloud SQL Proxyをインストールしよう
1 2 3 4 5 6 7 8 9 |
# 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/ |
ダウンロードしてあった鍵ファイルを貼り付けよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 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" } |
これが認証キーになるよ。
ソケットになるディレクトリを作るよ。
1 2 |
# mkdir /cloudsql # chmod 777 /cloudsql |
1 2 3 |
# 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が起動することが出来たよ。
違うコンソールを開いて接続できるか確認してね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# 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> |
接続できたね。
でも、これだとサーバを再起動をしたりしたらCloud SQL Proxyは立ち上がらないね。困ったね。Systemd化すれば再起動しても自動で起動することも簡単になるよ。
Systemd化しよう
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# 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 |
自動起動設定を行おうね。
1 2 |
# systemctl start cloud_sql_proxy # systemctl enable cloud_sql_proxy |
再起動しよう
1 |
# reboot now |
再起動してCloud SQL Proxyが起動していたら大丈夫。
お疲れ様です。