本記事は PostgreSQL Advent Calender 2019の3日目です。
本記事のテーマ
Amazon Web Service RDS for PostgreSQL
に比べて圧倒的に記事が少ないことと、Google Cloud Platform
を触れる機会に恵まれていることもあり、Google Cloud Platform Cloud SQL for PostgreSQL
を お触りしましたので書きます。
※2019/12/03現在の記事です。
前置き
Old Type の ITエンジニアなので、本題以外の記述がやたらめったら多いです。適宜読み飛ばしてください
-
投稿の経緯(思い立ったが吉日)
2016年12月 アジアで初めてのpostgreSQLカンファレンス pgconf.Asia 2016 が開催されました。
私はその当時、お客さまと一緒にOSS活用を推進し、PostgreSQL を使用したシステム構築に携わっておりました。DBエンジニアの自負心がはみ出し、調子にのって、ライトニングトークに申し込み、投票の結果、皆様のおかげで登壇することができました。
登壇を期にいろんな方とつながりを持ち、また、セミナーや勉強会などでお話をお伺いする機会も増えました。
OSSのコミュニティやその思想には大変感謝しており、日本のPostgreSQL界隈のイケメン神さまやCUDA神さまや猫拉麺神さまなど、多くの神さまとお話させていただける機会に恵まれたと思っております。
この度、(LTでしたけど)登壇した12月3日と言う記念日に、advent Calendar を、勢いあまってポチりました。
- 投稿の経緯(真面目な経緯)
Amazon Web Service RDSに関する情報は、いっときの赤いMSDBMS を凌駕するくらい豊富にありますが、GCP/CloudSQLに関する情報は少ないです。
現職は Google Cloud Platform(GCP) をガッツリ使ったサービス開発をしております。
GCPに触れる機会に恵まれていることからも、些細なことでも書くことで誰かのお役に立てることになれば。と思い立った次第です。
ちなみに、現職のサービスはNoSQLで実装されており、RDBMSを全くと言っていいほど使ってません。
DBMSに賭けた人生、忘れ去ってなるものか! と、自分を奮い立たせるためにもポチりました。
稚拙ではございますが、少しでも活動の端に居続けさせていただければと思います。
本題
- Cloud SQL for PostgreSQL について(2019/12/03現在)
- インスタンス登録してみた
- 追加で
pgAdmin4
で接続してみた - まとめ
1. Cloud SQL for PostgreSQL について
サービス概要ではなく、PostgreSQL に関する部分について記載します。
無料枠
- AWS/RDS
- Aurora, MySQL, MariaDB, Oracle, MS-SQLServer が選択できます
- 無料枠は db.t2.micro+SSD20GB+DBSnap20GB で 750時間/月を12か月利用できます
- GCP/CloudSQL
- DBMS は、MySQL, PostgreSQL が選択できます。アルファですけど、MS-SQLServerもお試し出来ます
- $300 までか12か月間が無料
- core数は8coreが上限で、それ以外は課金上限まで制限はないです
- 冗長化やレプリケーションなどもお試しできます
-
Always Free
プログラムがありますが、CloudSQLは対象外みたいです
選択できるPostgreSQLのバージョン
- AWS/RDS
原則、コミュニティでサポートされているバージョン・リビジョンは全て選択可能です - GCP/CloudSQL
9.6のみです。11.1はベータ扱いです(2019\12\11訂正)
11.1 と 9.6 が選択できます。
選択肢は少ないですが、迷いはなくなります!
その他
-
入門ガイドが分かりやすい
最初にやらなくちゃいけないことなど、作業の順序を意識しやすい構成になっています
2. インスタンス登録してみた
最初にしておくこと
- Googleアカウントの登録
GmailやAndroid端末をお使いの場合のGooglePlayのアカウントで大丈夫です - 本人確認用のクレジットカード
- Google Cloud Platform へアカウント登録
トップページから無料トライアル
ボタンをポチって登録してください
プロダクションで利用するときは、プロジェクトの設定やユーザIDや権限管理を登録したり、仮想プライベートネットワークを設計実装したりといろいろあります。
お試し程度で利用する場合、なんとなくいい感じに設定してくれます。
Google Cloud Platform CloudSQL インスタンスの登録
パブリッククラウドサービスのインスタンス作成なんて、書くほどのことじゃないですけど
-
いきなりクラウドコンソールから作成してもいいのですが、入門ガイドから進むと、操作の前後で何が起きるのか。など凄く分かりやすいです
-
インスタンス登録は、3つの操作方法で登録することができます
- CONSOLE --> WebのGUI操作
- GCLOUD --> ローカルに
Cloud SDK
を導入し、CLIで操作 - CURL --> curlコマンドなどを利用した、WebAPIで操作
今回は
CONSOLE
で作成しました
-
インスタンスID,postgresユーザのパスワード、リージョンとゾーン、データベースバージョンなど設定して登録
-
起動出来たら、クラウドコンソールでインスタンスの詳細を確認します
- AWSコンソールもそうですが、見慣れるまでどこに何があるのか?把握しづらいものですね
その他
- パブリッククラウドでサービスを起動すると、Old Typeな元インフラエンジニアとしては、職を失った気持になります
- OSカーネルパラメータまで触ってゴリゴリチューニングしなくても済むのはビジネスとして良いですが、
基本のき
を知っているとパブリッククラウドであっても色々役に立つことがあります - OS上のファイルシステムバッファーとDBMSのバッファーをキャッシュヒット率を見ながら、絶妙なメモリ配分をするとかは、ロストテクノロジーになっていくと思うと寂しさあります
3.追加でpgAdmin4
で接続してみた
クラウドコンソールは良く出来ていて一般的にPostgreSQLを運用するには十分だと思います
ただ、テーブルの統計情報だったり、DDLの確認だったり、使い慣れたコンソールが必要なこともあります
そして、 Old Typeな元インフラ園児エンジニアには、自分のPCで管理したくなる衝動に駆られるものです
WindowsPCでなくても利用できるようになったpgAdmin4をubuntuに導入し、接続してみました
ubuntuへの導入手順はググればたくさん出ますが、また別途記事にできたらと思います
パブリッククラウド側の設定
Google AppEngine(GAE)や Google Compute Engine(GCE)などのサービスで利用するのは簡単です(今回は省略)
GCP/CloudSQL for PostgreSQLでは、外部アプリケーションとの接続にいくつかの方法があります。
- パブリックIP(グローバルIP)を直接アクセス(平文通信とSSL通信が選択出来る)
- Cloud Shell を利用したpsql実行
- Cloud SQL Proxy を利用した接続
個別にファイアーウォールを設定しなくてもパブリッククラウド間接続やオンプレミスアプリケーションとの接続を簡単かつ安全に行えるサービスです - JDBCソケットライブラリによる接続
今回はパブリックIPを直接アクセスする方法で行いました
- ネットワーク(ファイアーウォール)の設定。5432ポートを誰に見せるのかのルールを追加します
- とりあえず、0.0.0.0/0 で、来るもの拒まずで設定しました
- クラウドコンソールのインスタンスの詳細にある接続設定でパブリックIPを選択し、自分のプロバイダから払いだされたグローバルIPアドレスをえいやー!と24bitマスクで設定しました。PPPoEが再起動すると使えなくなりますけどね
pgAdmin4の起動
- pgAdmin4では、serverの追加で、クラウドコンソールのインスタンスの詳細に表示されるパブリックIPアドレスを直設定します
- 設定したserverを選択すると、postgres ユーザのパスワードが聞かれます
- それ以降はオンプレミス環境と同じ設定操作でいとも簡単に接続できました
- CloudSQL固有のオブジェクトも見ることができたり、色々ムフフな感じです
- オンプレミス環境にpgAdmin4 を起動しておけば、ハイブリッドなクラウド環境も統合的に管理できそうです
- Import/Export もそのままできそうなので、リフトアップも従来のサーバ移行と同じ感覚で出来そうです
4.まとめ
- 入門ガイドのまとめ方がとても分かりやすく、作業手順としても十分活用でき、新たな人への指導書・引継書として十分活用できる
- Google Cloud Platform では、postgreSQLのバージョンの選択肢は少ないがゆえに、迷いは少なくて済む
- クラウドサービスであっても、pgAdmin4がすんなりつながるところから、postgreSQL には変わりない(当たり前)
- 環境構築はパブリッククラウドなのでとても簡単。~~Old Type のインフラエンジニアは不要になってくるが、~~簡単がゆえに接続設定やインスタンスの配置、ユーザIDや権限管理(IAM)を丁寧に設計しないと、すぐ乗っ取られそう
- 今回は書いてないですが、contribには一般的なツールはそろっており、派手な拡張はできそうにないですが、一般的なpostgreSQLとしては十分活用できる
-
ここで
Me too
すると、拡張モジュールを追加してもらえるかもしれません(追加されると信じてます)
-
ここで
- 今回は書いてないですが、ほとんどのDBパラメータは設定可能で、ある程度のチューニングはできそう