Helm Charts をはじめよう (ScalarDB Analytics with PostgreSQL)
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このガイドでは、Kubernetes クラスターの Helm Chart をテスト環境として使用して、ScalarDB Analytics with PostgreSQL を開始する方法について説明します。さらに、このガイドの内容は、テスト用に Mac または Linux 環境がすでにセットアップされていることを前提としています。minikube について言及していますが、説明されている手順はどの Kubernetes クラスターでも機能するはずです。
あなたが作成するもの
次のコンポーネントを Kubernetes クラスターにデプロイします。
+-------------------------------------------------------------------------------------------------------------------------------------------+
| [Kubernetes クラスター] |
| |
| [ポッド] [ポッド] [ポッド] |
| |
| +------------------------------------+ |
| +---> | ScalarDB Analytics with PostgreSQL | ---+ +-----------------------------+ |
| | +------------------------------------+ | +---> | MySQL (「顧客」スキーマ) | <---+ |
| | | | +-----------------------------+ | |
| +-------------+ +---------+ | +------------------------------------+ | | | |
| | OLAP クライアント | ---> | サービス | ---+---> | ScalarDB Analytics with PostgreSQL | ---+---+ +---+ |
| +-------------+ +---------+ | +------------------------------------+ | | | | |
| | | | +-----------------------------+ | | |
| | +------------------------------------+ | +---> | PostgreSQL (「順序」スキーマ) | <---+ | |
| +---> | ScalarDB Analytics with PostgreSQL | ---+ +-----------------------------+ | |
| +------------------------------------+ | |
| | |
| +-------------+ | |
| | OLTP クライアント | ---(テスト OLTP ワークロードでサンプルデータをロードする)-----------------------------------------------------------------------+ |
| +-------------+ |
| |
+-------------------------------------------------------------------------------------------------------------------------------------------+
ステップ1. Kubernetes クラスターを開始する
まず、Kubernetes クラスターを準備する必要があります。minikube 環境を使用している場合は、Scalar Helm Charts をはじめようを参照してください。すでに Kubernetes クラスターを開始している場合は、この手順をスキップできます。
ステップ2. MySQL および PostgreSQL ポッドを開始する
ScalarDB Analytics with PostgreSQL を含むScalarDBは、バックエンドデータベースとして数種類のデータベースシステムを利用できます。このガイドでは、MySQL と PostgreSQL を使用します。
次のようにして、Kubernetes クラスターに MySQL と PostgreSQL をデプロイでき ます。
-
Bitnami Helm リポジトリを追加します。
helm repo add bitnami https://charts.bitnami.com/bitnami
-
Helm リポジトリを更新します。
helm repo update bitnami
-
MySQLをデプロイします。
helm install mysql-scalardb bitnami/mysql \
--set auth.rootPassword=mysql \
--set primary.persistence.enabled=false -
PostgreSQLをデプロイします。
helm install postgresql-scalardb bitnami/postgresql \
--set auth.postgresPassword=postgres \
--set primary.persistence.enabled=false -
MySQL および PostgreSQL ポッドが実行されているかどうかを確認します。
kubectl get pod
次の出力が表示されるはずです。
kubectl get pod
次のような結果が表示されます:
NAME READY STATUS RESTARTS AGE
mysql-scalardb-0 1/1 Running 0 3m17s
postgresql-scalardb-0 1/1 Running 0 3m12s
ステップ3. 作業ディレクトリを作成する
いくつかの構成ファイルをローカルに作成するので、それらのファイル用の作業ディレクトリを作成します。
mkdir -p ~/scalardb-analytics-postgresql-test/
ステップ4. ScalarDB、ScalarDB Analytics with PostgreSQL、およびチャートのバージョンを設定します
以下の3つの環境変数を設定します。別のバージョンの ScalarDB および ScalarDB Analytics with PostgreSQL を使用する場合は、必ず使用するバージョンに設定してください。
ScalarDB Analytics with PostgreSQL のマイナーバージョン (例: 3.10.x) を ScalarDB と同じにする必要がありますが、パッチのバージョンを一致させる必要はありません。たとえば、ScalarDB 3.10.1と ScalarDB Analytics with PostgreSQL 3.10.3を併用できます。
SCALARDB_VERSION=3.10.1
SCALARDB_ANALYTICS_WITH_POSTGRESQL_VERSION=3.10.3
CHART_VERSION=$(helm search repo scalar-labs/scalardb-analytics-postgresql -l | grep -e ${SCALARDB_ANALYTICS_WITH_POSTGRESQL_VERSION} | awk '{print $2}' | sort --version-sort -r | head -n 1)
ステップ5. OLTP トランザクションを 実行して、サンプルデータを MySQL および PostgreSQL にロードします
ScalarDB Analytics with PostgreSQL を導入する前に、OLTPトランザクションを実行してサンプルデータを作成します。
-
Kubernetes クラスターで OLTP クライアントポッドを開始します。
kubectl run oltp-client --image eclipse-temurin:8-jdk-jammy --env SCALARDB_VERSION=${SCALARDB_VERSION} -- sleep inf
-
OLTP クライアントポッドが実行されているかどうかを確認します。
kubectl get pod oltp-client
次の出力が表示されるはずです。
kubectl get pod oltp-client
次のような結果が表示されます:
NAME READY STATUS RESTARTS AGE
oltp-client 1/1 Running 0 17s -
OLTP クライアントポッドで bash を実行します。
kubectl exec -it oltp-client -- bash
この手順の後、OLTP クライアントポッドで各コマンドを実行します。
-
git および curl コマンドを OLTP クライアントポッドにインストールします。
apt update && apt install -y curl git
-
ScalarDB サンプルリポジトリのクローンを作成します。
git clone https://github.com/scalar-labs/scalardb-samples.git
-
ディレクトリ
scalardb-samples/multi-storage-transaction-sample/
に移動します。cd scalardb-samples/multi-storage-transaction-sample/
pwd
次の出力が表示されるはずです。
# pwd
/scalardb-samples/multi-storage-transaction-sample -
Kubernetes クラスター内の MySQL および PostgreSQL にアクセスするための構成ファイル (
database.properties
) を作成します。cat << 'EOF' > database.properties
scalar.db.storage=multi-storage
scalar.db.multi_storage.storages=storage0,storage1
# Storage 0
scalar.db.multi_storage.storages.storage0.storage=jdbc
scalar.db.multi_storage.storages.storage0.contact_points=jdbc:mysql://mysql-scalardb.default.svc.cluster.local:3306/
scalar.db.multi_storage.storages.storage0.username=root
scalar.db.multi_storage.storages.storage0.password=mysql
# Storage 1
scalar.db.multi_storage.storages.storage1.storage=jdbc
scalar.db.multi_storage.storages.storage1.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres
scalar.db.multi_storage.storages.storage1.username=postgres
scalar.db.multi_storage.storages.storage1.password=postgres
scalar.db.multi_storage.namespace_mapping=customer:storage0,order:storage1
scalar.db.multi_storage.default_storage=storage1
EOF -
ScalarDB Releases から Schema Loader をダウンロードします。
curl -OL https://github.com/scalar-labs/scalardb/releases/download/v${SCALARDB_VERSION}/scalardb-schema-loader-${SCALARDB_VERSION}.jar
-
Schema Loader を実行してサンプルテーブルを作成します。
java -jar scalardb-schema-loader-${SCALARDB_VERSION}.jar --config database.properties --schema-file schema.json --coordinator
-
サンプルワークロードの初期データをロードします。
./gradlew run --args="LoadInitialData"
-
OLTP トランザクションのサンプルワークロードを実行します。これらのコマンドを実行すると、サンプルデータとしていくつかの
order
エントリが作成されます。./gradlew run --args="PlaceOrder 1 1:3,2:2"
./gradlew run --args="PlaceOrder 1 5:1"
./gradlew run --args="PlaceOrder 2 3:1,4:1"
./gradlew run --args="PlaceOrder 2 2:1"
./gradlew run --args="PlaceOrder 3 1:1"
./gradlew run --args="PlaceOrder 3 2:1"
./gradlew run --args="PlaceOrder 3 3:1"
./gradlew run --args="PlaceOrder 3 5:1"
-
OLTPクライアントを終了します。
exit
ステップ6. ScalarDB Analytics with PostgreSQL のデプロイ
バックエンドデータベースにScalarDB経由でサンプルデータを作成した後、ScalarDB Analytics with PostgreSQL をデプロイします。
-
ScalarDB Analytics with PostgreSQL のカスタム値ファイル (
scalardb-analytics-postgresql-custom-values.yaml
) を作成します。cat << 'EOF' > ~/scalardb-analytics-postgresql-test/scalardb-analytics-postgresql-custom-values.yaml
scalardbAnalyticsPostgreSQL:
databaseProperties: |
scalar.db.storage=multi-storage
scalar.db.multi_storage.storages=storage0,storage1
# Storage 0
scalar.db.multi_storage.storages.storage0.storage=jdbc
scalar.db.multi_storage.storages.storage0.contact_points=jdbc:mysql://mysql-scalardb.default.svc.cluster.local:3306/
scalar.db.multi_storage.storages.storage0.username=root
scalar.db.multi_storage.storages.storage0.password=mysql
# Storage 1
scalar.db.multi_storage.storages.storage1.storage=jdbc
scalar.db.multi_storage.storages.storage1.contact_points=jdbc:postgresql://postgresql-scalardb.default.svc.cluster.local:5432/postgres
scalar.db.multi_storage.storages.storage1.username=postgres
scalar.db.multi_storage.storages.storage1.password=postgres
scalar.db.multi_storage.namespace_mapping=customer:storage0,order:storage1
scalar.db.multi_storage.default_storage=storage1
schemaImporter:
namespaces:
- customer
- order
EOF -
PostgreSQL のスーパーユーザーパスワードを設定するためのシークレットリソースを作成します。
kubectl create secret generic scalardb-analytics-postgresql-superuser-password --from-literal=superuser-password=scalardb-analytics
-
ScalarDB Analytics with PostgreSQL を導入します。
helm install scalardb-analytics-postgresql scalar-labs/scalardb-analytics-postgresql -n default -f ~/scalardb-analytics-postgresql-test/scalardb-analytics-postgresql-custom-values.yaml --version ${CHART_VERSION}