Amazon Lightsail:マネージドDBを導入する
Lightsail環境でマネージドDBを導入しました。
っといっても、これだけセットアップしても仕方ないので、インスタンスと込みでセットアップしました。
費用感ですが、こんな感じ。。
OSですが、今回はAmazon Linux2を選択しました。。。コレが後でえらい目に会うことになるのですが(^^;
私は普段はCentOSを使っています。Amazon Linux2はCentOS7と同じような構成とのことなんで、違いを調べてみました。
このページではマネージドDBのインストールを記載しています。
インスタンスのインストールはこちらを参照してください。
目次
Amazon Linux2とCentOSの違い
■Amazon LinuxはRedHatベースのディストリビューションです。
・Amazon がサポート。
・RDS や S3 など AWS 内の他サービスに接続するモジュールが事前に入っている。
・Amazon の yum を使用。
・「Amazon Linux AMI Security Center」で Amazon Linux に対する脆弱性の対応を確認することが可能。
・SeLinux がデフォルトで無効化。
・ユーザ名が root ではなく EC2-user。
・CentOSと同じく原則は無料。RedhatのAMIは使用量にライセンス料金が含まれている模様。
■Amazon Linuxのメリットデメリット
・メリット
・AWSに相性がよく、EC2として高性能でセキュアで安定している。
・AWS CLI (Command Line Interface)環境や cloud-init など AWS関連のツールが事前にインストールされている。
・デメリット
・RedHat、CentOS用のパッケージが使用できない可能性がある。Amazon Linux のレポジトリと競合する可能性あり。
・パッケージの更新が RedHat、CentOSより遅れる場合あり。
・コミュニティでの情報は少なめ。
■利用の方針
明確に使用したい RedHat、CentOS用のパッケージがある場合はCentOS、RedHat を使用すべき。
またエンタープライスサポートが必要な場合はRedHat でもよい。それ以外では Amazon Linuxを採用してもよい。
Amazon Linux 2のサポート期間は、「2023年06月30日」とされています。
■Amazon Linux 2 イメージ (HVM/64 ビット)
Amazon Linux 2 イメージは、Amazon Lightsail で使用するアマゾン ウェブ サービスによって提供される、サポートおよび維持された Linux のイメージです。
これは Lightsale 上で実行するアプリケーションのために、安定した安全で高性能な実行環境を提供できるよう設計されています。
また、起動設定ツールおよび多くの AWS 一般的なライブラリやツールなど、AWS の統合を容易にするいくつかのパッケージも含まれています。
AWS では、Amazon Linux 2 イメージを実行するすべてのインスタンスに対し、セキュリティと保守のアップデートを継続的に提供しています。
Lightsale のユーザーの方は、追加料金なしで Amazon Linux 2 イメージをご使用いただけます。
■LightsailでのCentOS7
CentOS Linux は、無料公開されている Red Hat Enterprise Linux (RHEL) のソースから派生したコミュニティ対応のディストリビューションです。
CentOS Linux は、RHEL と機能的に互換性があるように設計されており、予測可能かつ管理可能で、再現性が高く安定した Linux 環境を提供します。
このイメージは、最小限のプロファイルで構築された公式の CentOS-7 イメージ (CentOS-7 x86_64 HVM) であり、すべてのサイズの Lightsail インスタンスでの使用に適しています。
イメージには、Lightsail 内で実行するために必要なパッケージが含まれています。
SSH サーバーを起動し、ユーザーがログインできるようにします。
この CentOS-7 イメージには、重要なセキュリティアップデートを含むように、アップデートされたパッケージも含まれています。
マネージドDBを作成します。
今回は、普段使っているPostgreSQLで作成しました。
費用を確認したいのでキー値タグを設定しました。
こんな感じで作成できました(^^)
マネージドDBにインスタンスから接続します。
データベースを作ったからには、インスタンスからデータベースに接続する必要があります(^^)
エンドポイントのIPアドレスが 172.26.xx.xx で、インスタンスのIPアドレスが 172.26.yy.zz なんで、クラスBなんだ〜なんて眺めながら(^^;
ドキュメントを見てると、pgAdmin4 での接続が書かれているので、インストールしてみました。。。
が!Amazon Linux2 のyumにpgAdmin4が無いんです。。。
仕方ないんで、pgadminのホームページからリポジトリを獲得して、再度挑戦!
でも、ダメ。。
$ sudo yum install pgadmin4
amzn2-core | 3.7 kB 00:00:00
amzn2extra-docker | 3.0 kB 00:00:00
https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/redhat/rhel-2-x86_64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 – Not Found
リポジトリの $releasever が 2 になっちゃってます。。rhel-2-x86_64???
このあたりは /etc/redhat-release を参照しているのですが、Amazon Linux2 ではこのファイルがないんですよね。
そういや、CentOS7っぽいやつなんで、$releaseverを7に書き換えてやってみました・・・が、やっぱりNG。。
1 2 3 4 5 6 7 8 9 |
$ sudo yum install pgadmin4 いっぱいエラー:パッケージ:な表示。。。 問題を回避するために --skip-broken を用いることができます。 ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows: pgdg-redhat-repo-42.0-12.noarch は次の要求が不足ています: /etc/redhat-release 飛ばしました (依存性の問題): pgadmin4.noarch 0:4.25-1.el7 pgadmin4-desktop.x86_64 0:4.25-1.el7 pgadmin4-python3-mod_wsgi.x86_64 0:4.7.1-2.el7 pgadmin4-server.x86_64 0:4.25-1.el7 pgadmin4-web.noarch 0:4.24-1.el7 pgadmin4-web.noarch 0:4.25-1.el7 postgresql12-libs.x86_64 0:12.4-1PGDG.rhel7 |
webやらdesktopやらが飛ばされてしまってます。これではインストールできたとしても、GUIでの操作ができるのかな??
仕方ないんで、python3でインストールに挑戦。。
結果的にはこれもNGでした。。。
Python3とgccのインストールが必要でした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
■pipでインストールします。 $ sudo mkdir /var/lib/pgadmin $ sudo mkdir /var/log/pgadmin $ sudo chown $USER /var/lib/pgadmin $ sudo chown $USER /var/log/pgadmin $ python3 -m venv pgadmin4 $ source pgadmin4/bin/activate (pgadmin4) [ec2-user@ip-172-26-14-35 ~]$ pip install pgadmin4 Collecting pgadmin4 ERROR: Exception: Traceback (most recent call last): File "/home/ec2-user/pgadmin4/lib64/python3.7/site-packages/pip/_internal/cli/base_command.py", line 228, in _main status = self.run(options, args) File "/home/ec2-user/pgadmin4/lib64/python3.7/site-packages/pip/_internal/cli/req_command.py", line 182, in wrapper return func(self, options, args) File "/home/ec2-user/pgadmin4/lib64/python3.7/site-packages/pip/_internal/commands/install.py", line 324, in run reqs, check_supported_wheels=not options.target_dir |
ま、こんな感じ。。
あきらめて、いつもとおなじ、pgsqlでやることに。。
でも、あとあとのメンテナンスを考えると、pgadmin4を動かしたかったなぁ。。。
インストールできた方おられましたら、ぜひ教えて下さいm(_ _)m
Postgresql12クライアントのインストールします。
まずはパッケージの情報を。。
$ yum info postgresql
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
27 packages excluded due to repository priority protections
利用可能なパッケージ
名前 : postgresql
アーキテクチャー : x86_64
バージョン : 9.2.24
リリース : 1.amzn2.0.1
あらら、標準ではPostgresql9なんですね。。。
Amazon Linux 2は概ねCentOS 7をベースにしているので、CentOS 7用のリポジトリをインストールします。
https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo rpm -ivh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
/etc/redhat-releaseファイルへの依存関係を無視してインストールするため、「–nodeps」オプションを付けてインストールします。
$ sudo rpm -ivh –nodeps https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
リポジトリがインストールできました。
さて、先と同じで、〜.repoファイル内の”$releasever”が、2になってしまうため、”$releasever”を”7”に書き換えます。
$ sudo sed -i ‘s/\$releasever/7/g’ /etc/yum.repos.d/pgdg-redhat-all.repo
$ sudo yum install -y postgresql12
インストール中:
postgresql12 x86_64 12.4-1PGDG.rhel7 pgdg12 1.6 M
依存性関連でのインストールをします:
postgresql12-libs x86_64 12.4-1PGDG.rhel7 pgdg12 370 k
完了しました!やれやれ(^^;
データベースに接続します。
ようやくクライントがインストールできたんで、接続してみます。
$ psql -h エンドポイント -U dbmasteruser postgres
1 2 3 4 5 6 7 8 9 10 11 |
postgres=> \l データベース一覧 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限 -----------+--------------+------------------+-------------+-------------------+------------------------------- dbmaster | dbmasteruser | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | dbmasteruser | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | rdsadmin=CTc/rdsadmin template0 | rdsadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/rdsadmin + | | | | | rdsadmin=CTc/rdsadmin template1 | dbmasteruser | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/dbmasteruser + | | | | | dbmasteruser=CTc/dbmasteruser |
データベースを作成します。
1 2 3 4 5 6 7 8 9 |
CREATE DATABASE db01 template template0 encoding UTF8 lc_collate ‘ja_JP.UTF-8’ lc_ctype ‘ja_JP.UTF-8’; 名前 | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) | アクセス権限 -----------+--------------+------------------+-------------+-------------------+------------------------------- db01 | dbmasteruser | UTF8 | ja_JP.UTF-8 | ja_JP.UTF-8 | |
無事使えることが確認できました。
今回はここまで!