目的
AWS環境 (Amazon Linux) に OpenMetadata を導入したい。それだけ (だと思ってた)。
後述の通りバージョン違いなどによる影響で何度かインスタンスを立てなおしたり、エラーにはまってひたすら時間を溶かしたりしたので共有します。
環境
- Amazon Linux 2
- OpenMetadata 1.1.1
- Docker 20.10.25
- Docker Compose v2.26.1
- Python 3.7.16
手順
1. EC2インスタンス構築
2. GUI環境構築
3. 各モジュールの導入
4. Dockerコンテナ起動
5. OpenMetadataにログイン
6. Airflowにログイン
EC2インスタンス構築
まず、下記要件を満たす必要があります。
Minimum sizing recommendations for OpenMetadata deployment include 2 vCPUs and 4 GiB of RAM, with 20 GiB of volume size for logs.
加えて、Linuxの場合はGUI環境が構築可能であること。
今回は下記設定でインスタンス作成。
- AMI
- Amazon Linux 2 with .NET 6, PowerShell, Mono, and MATE Desktop Environment
- インスタンスタイプ
- t2.large
- Storage
- 20 GB
- Security Group
- 社内ネットワークからのRDP, sshを許可
今回は導入の検証のため public subnet にインスタンスを配置します。
細かい構築手順は割愛します。
おまけ: Amazon Linux 2023 を使わない理由
Amazon Linux 2023 が最新ですが、GUI環境を構築できなかったので Amazon Linux 2 を採用しました。そのうち出来るようになるかもしれませんね。
GUI環境構築
以下、こちらを参考にしています。
パッケージ最新化と再起動
sudo yum update
sudo reboot
xrdpをインストール & 有効化
sudo amazon-linux-extras install epel
sudo yum install xrdp
sudo systemctl start xrdp
sudo systemctl enable xrdp
パスワード設定
認証のためパスワードを設定。
RDP接続時に利用します。
sudo passwd ec2-user
※ユーザー名がec2-userの場合
証明書ファイルとキーの作成
sudo openssl req -x509 -sha384 -newkey rsa:3072 -nodes -keyout /etc/xrdp/key.pem -out /etc/xrdp/cert.pem -days 365
ここで Country Name などを聞かれるので、回答してあげます。↓記事内の「証明書署名要求(CSR)を作成する」を参照。
xrdp 再起動
sudo systemctl restart xrdp
接続確認
ローカルからリモートデスクトップ接続できればOKです。
username と password は「パスワード設定」で設定したものです。
接続できない場合に確認したいこと
- セキュリティグループ (RDP許可)
- xrdpのステータス確認 (
sudo systemctl status xrdp
) - インスタンスの状態
- パブリック IP の確認 (Elastic IPを使っていない場合、再起動の度にIPが変わる)
各モジュールの導入
Docker インストール
version 20.10.0 以上が必要です。
sudo yum update -y
sudo yum -y install docker
sudo systemctl start docker
sudo systemctl enable docker
バージョン確認
docker --version
Docker Compose インストール
version 2.1.1 以上が必要です。実行権限も付与します。
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
バージョン確認
docker compose version
コンテナ用ディレクトリ作成・移動
mkdir openmetadata-docker && cd openmetadata-docker
※ディレクトリ名は任意
仮想環境の構築・有効化
python3 -m venv env
source env/bin/activate
pip setuptools のインストール
pip3 install pip setuptools==66.0.0
筆者は最初 version 68.0.0 をインストールしましたが、Dockerコンテナの起動で失敗しました。
バージョン 66.0.0 前後が推奨されていますが、厳密にどのバージョンまでOKかは不明です。
OpenMetadata モジュールのアップデート
pip3 install --upgrade "openmetadata-ingestion[docker]”
ユーザーをdockerグループに追加
sudo なしで docker コマンド実行できるようにします。
sudo usermod -a -G docker ec2-user
再起動
コンテナ起動する前にインスタンスを再起動しましょう。
Dockerコンテナ起動
metadata docker --start
数分~10分ほど待ちます。
OpenMetadata is up and running
が返ってくればOKです。
おまけ:コンテナ起動時に発生したエラー
-
No space left on device
- ディスク容量不足などの場合はここでエラーになります
- 自分は最初デフォルトの 8 GB で作成していて引っかかりました
-
Docker Service is not up and running
- status 確認しても running なのになぜ...? と、かなり時間を溶かしました
- ec2-user を docker グループに追加したところ解消しました
再起動用設定
検証用環境なので利用していない時間はインスタンスを停止したい。
そのまま再起動してもコンテナは勝手に起動してくれない (厳密には OpenMetadata用コンテナは起動しているようだが Airflow 用コンテナが起動していない?) ため、以下コマンドで自動的にコンテナを起動するよう設定。
docker update --restart unless-stopped $(docker ps -q)
OpenMetadataにログイン
- 構築したインスタンスにRDP接続・サインイン
- デスクトップ左下のメニューから「Applications > Internet > Chromium Web Browser」を選択
-
http://localhost:8585/
に接続 - 管理者としてログインする場合は username, passwordともに admin で通ります
Airflowにログイン
上と基本は同じで、http://localhost:8080/
に接続します。
いくつかサンプルのDAGが用意されており、 sample_data などを実行するとサンプルデータがOpenMetadata上に登録されます。
実行はDAG名の右の方にある再生ボタンを押し、「Trigger DAG」を選択するだけです。
終わりに
最初に作ったインスタンスが GUI 対応していなかったり、 Docker compose
と Docker-compose
を間違えていたりで何度かインスタンスを立て直すこととなりました。
色々な記事を参照した結果、バージョン違いによる影響をかなり受けたので、今回は一連の流れをまとめてみました。
以上、Qiita執筆デビューでした。