Upgrade to Pro — share decks privately, control downloads, hide ads and more …

1. ScalarDB Cluster Deployment - Prerequisites

1. ScalarDB Cluster Deployment - Prerequisites

【主な内容】

導入に必要なリソースと要件:
Linux環境、Kubernetes環境、およびバックエンドDB(PostgreSQL、MySQL)などの必要なリソースとソフトウェア要件について説明します。

環境構築の参考例:
Ubuntuを利用したLinux環境への関連パッケージ(kubectl、helm、Git、OpenJDKなど)のインストール手順を紹介します。

ネットワーク設定要件:
ScalarDB ClusterやKubernetes環境で利用する通信ポートおよびプロトコルについて解説します。

事前動作確認手順:
インストールした各コマンド(java、helm、kubectl、git)の動作確認に加え、テストPodを用いたKubernetes環境からバックエンドDB(MySQL、PostgreSQL)への具体的な接続・疎通確認手順を示します。

これからKubernetes上にScalarDB Clusterの環境構築を行う際の参考資料としてご活用ください。

Avatar for Scalar, Inc.

Scalar, Inc. PRO

May 14, 2026

More Decks by Scalar, Inc.

Other Decks in Technology

Transcript

  1. 3 変更履歴 Version Date Name Supported products and versions Description

    1.0 2025-02-26 Satoshi Hikida ScalarDB Cluster 3.15.1 First draft 1.1 2025-05-15 Yuji Ochiai ScalarDB Cluster 3.15.1 Re-edited
  2. ScalarDb Clusterの導⼊では下記のリソースを利⽤ Linux環境 : helm, kubectl, git等のコマンドを実⾏する環境 Kubernetes環境 : ScalarDB Clusterを導⼊する環境 Backend

    DB : ScalarDB Clusterが利⽤するデータベース ScalarDB Cluster導⼊の際に利⽤するリソース 5 Backend DB Kubernetes MySQL SSH PostgreSQL Linux環境 Git JDK helm kubectl Sample App Control Plane Worker Nodes ScalarDB Cluster 別途導⼊⼿順を解説
  3. Linux環境 下記ソフトウェアがインストールされていることを想定 kubectl※1 helm Git JDK (8 or 11, or

    17 LTS) Unzip Kubernetes環境 EKS (AWS), AKS (Azure), GKE (GCP) or Minikube (Local環境)等 Backend DB 本書および導入手順書では PostgreSQLとMySQLを使用して解説 各DB毎の接続情報( Endpoint、port) 各DB毎のCredential情報(ユーザー名、パスワード)を準備※ 2 PostgreSQLでは「handson」という名前のデータベースを事前に作成 参考: サポートデータベース https://scalardb.scalar-labs.com/docs/latest/requirements#databases ScalarDBのライセンス(商用 or トライアル) ScalarDB Enterprise Edition Premium ※1  AWS環境ではAWS CLI (V2) が必要 ※2  管理者権限を付与されたユーザを想定 事前準備 各リソースの要件
  4. 参考: Ubuntu を使ったLinux環境における関連パッケージのインストール例 unzip 実⾏例 sudo apt-get update sudo apt-get

    install unzip kubectl https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ 実⾏例 sudo snap install kubectl --classic # 確認コマンド kubectl version --client Git 実⾏例 sudo apt install git 各クラウド環境に依存のアプリケーション(AWS CLI等)は含まれていません sudo snap install kubectl --classic # 確認コマンド kubectl version --client sudo apt install git sudo apt-get update sudo apt-get install unzip
  5. 参考: Ubuntu を使ったLinux環境における関連パッケージのインストール例 Helm https://helm.sh/ja/docs/intro/install/ 実⾏例 curl https://baltocdn.com/helm/signing.asc | gpg

    --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null sudo apt-get install apt-transport-https --yes echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list sudo apt-get update sudo apt-get install helm OpenJDK 実⾏例(Temurin JDK 17の場合) # - リポジトリの追加 wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /usr/share/keyrings/adoptium.asc echo "deb [signed-by=/usr/share/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list # パッケージリストの更新 sudo apt update # Temurin JDK 17 のインストール sudo apt install temurin-17-jdk 各クラウド環境に依存のアプリケーション(AWS CLI等)は含まれていません # - リポジトリの追加 wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /usr/share/keyrings/adoptium.asc echo "deb [signed-by=/usr/share/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list # パッケージリストの更新 sudo apt update # Temurin JDK 17 のインストール sudo apt install temurin-17-jdk curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null sudo apt-get install apt-transport-https --yes echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list sudo apt-get update sudo apt-get install helm
  6. ScalarDB Cluster: 600053/TCP その他:(標準的に利⽤されるポート例です。詳細はご利⽤する環境を確認してください) • Linux環境からKubernetes環境への通信(kube-apiserver: 6443/TCP等、次ページで補⾜) • LinuxおよびKubernetes環境からリポジトリへ(443/TCP) •

    Kubernetes環境からBackend Databaseへの通信(MySQL: 3306/TCP, PostgreSQL: 5432/TCP, その他ご利⽤され るBackend Databaseに合わせて設定) • Linux環境からBackend Databaseへの通信(これは必須ではありません) ScalarDB Clusterで利⽤する通信ポート Backend DB Kubernetes MySQL SSH PostgreSQL Linux環境 Git JDK helm kubectl Sample App Control Plane Worker Nodes ScalarDB Cluster 別途導⼊⼿順を解説
  7. 参考:Kubernetesで利⽤するポートとプロトコル コントロールプレーン ワーカーノード 詳細は、各環境に合わせた情報を確認してください。 https://kubernetes.io/ja/docs/reference/networking/ports-and-protocols/ プロトコル 通信の向き ポート範囲 目的 TCP

    Inbound 6443 Kubernetes API server TCP Inbound 2379-2380 etcd server client API TCP Inbound 10250 Kubelet API TCP Inbound 10259 kube-scheduler TCP Inbound 10257 kube-controller-manager プロトコル 通信の向き ポート範囲 目的 TCP Inbound 10250 Kubelet API TCP Inbound 30000-32767 NodePort Services†
  8. https://scalardb.scalar-labs.com/docs/latest/requirements#java Oracle JDK: 8, 11, 17 or 21 (LTS versions)

    OpenJDK (Eclipse Temurin, Amazon Corretto, or Microsoft Build of OpenJDK): 8, 11, 17, or 21 (LTS versions) java コマンドの確認 java コマンドが正しく動作することを確認 $ java -version openjdk version "17.0.15" 2025-04-15 OpenJDK Runtime Environment Temurin-17.0.15+6 (build 17.0.15+6) OpenJDK 64-Bit Server VM Temurin-17.0.15+6 (build 17.0.15+6, mixed mode, sharing) Backend DB Kubernetes MySQL PostgreSQL Git helm kubectl Sample App Control Plane Worker Nodes ScalarDB Cluster 別途導⼊⼿順を解説 Linux環境 JDK SSH
  9. helm コマンドの確認 helm コマンドが正しく動作することを確認 $ helm repo add scalar-labs https://scalar-labs.github.io/helm-charts

    "scalar-labs" has been added to your repositories Backend DB Kubernetes MySQL PostgreSQL Git JDK kubectl Sample App Control Plane Worker Nodes ScalarDB Cluster 別途導⼊⼿順を解説 Linux環境 helm SSH
  10. kubectl コマンドの確認 kubectl コマンドが正しく動作することを確認 $ kubectl get svc NAME TYPE

    CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 172.20.0.1 <none> 443/TCP 43m Backend DB MySQL PostgreSQL Git JDK helm Sample App ScalarDB Cluster 別途導⼊⼿順を解説 Linux環境 kubectl Kubernetes Control Plane Worker Nodes SSH
  11. git コマンドの確認 git コマンドが正しく動作することを確認 $ git clone https://github.com/scalar-labs/scalardb-samples Cloning into

    'scalardb-samples'... remote: Enumerating objects: 1632, done. remote: Counting objects: 100% (601/601), done. remote: Compressing objects: 100% (325/325), done. remote: Total 1632 (delta 449), reused 289 (delta 276), pack-reused 1031 (from 2) Receiving objects: 100% (1632/1632), 1.15 MiB | 6.17 MiB/s, done. Resolving deltas: 100% (759/759), done. Backend DB Kubernetes MySQL PostgreSQL JDK helm kubectl Sample App Control Plane Worker Nodes ScalarDB Cluster 別途導⼊⼿順を解説 Linux環境 Git SSH
  12. テストPod⽤マニフェストファイル(YAML形式)の作成 16 cat <<'EOF' > test-pod.yaml apiVersion: v1 kind: Pod

    metadata: name: test-pod spec: terminationGracePeriodSeconds: 0 containers: - name: test-pod image: eclipse-temurin:8-jdk-jammy command: ["sleep", "inf"] EOF Podの起動確認 Backend DB Kubernetes MySQL PostgreSQL Git JDK helm kubectl Control Plane Worker Nodes ScalarDB Cluster 別途導⼊⼿順を解説 Linux環境 Sample App SSH
  13. Backend DB MySQL PostgreSQL Git JDK helm Sample App ScalarDB

    Cluster 別途導⼊⼿順を解説 Kubernetes Linux環境 kubectl Control Plane Worker Nodes Podの起動確認 マニフェストファイルを使ってテストPodを起動 17 $ kubectl apply -f test-pod.yaml pod/test-pod created Sample App test-pod SSH
  14. Podの起動確認 kubectl コマンド使って起動したPodを確認 18 $ kubectl get pods NAME READY

    STATUS RESTARTS AGE test-pod 1/1 Running 0 141m Backend DB MySQL PostgreSQL Git JDK helm Sample App ScalarDB Cluster 別途導⼊⼿順を解説 Kubernetes Linux環境 kubectl Control Plane Worker Nodes test-pod SSH
  15. Kubernetes環境からバックエンドデータベースへの接続を確認 テストPodに接続し、必要なツールをインストール 19 # テストPodに接続 kubectl exec -it test-pod --

    bash # バックエンドデータベースへの接続を確認する為のツールをインストール # 本書およびトレーニングコンテンツではMySQLとPostgreSQLを使った説明をします。 # その他のバックエンドデータベースを利用する場合には、適宜必要なツールを準備します。 apt update apt install -y postgresql-client mysql-client Backend DB MySQL PostgreSQL Git JDK helm Sample App ScalarDB Cluster 別途導⼊⼿順を解説 Kubernetes Linux環境 kubectl Control Plane Worker Nodes test-pod SSH
  16. PostgreSQL Git JDK helm Sample App ScalarDB Cluster 別途導⼊⼿順を解説 Kubernetes

    MySQLへの接続テストコマンド例(scalardb_handson_testが既に存在している場合は別名を利⽤してください) Kubernetes環境からBackend DBへの疎通確認 テストPodからBackend DBへの接続テスト(MySQL) mysql -h <MySQLの接続先> -u <mysql user> -p mysql CREATE DATABASE scalardb_handson_test; CREATE TABLE scalardb_handson_test.test ( id INT, PRIMARY KEY (id) ); SHOW TABLES FROM scalardb_handson_test; INSERT INTO scalardb_handson_test.test (id) values(1); SELECT * FROM scalardb_handson_test.test; DROP DATABASE scalardb_handson_test; Backend DB Linux環境 kubectl Control Plane Worker Nodes test-pod MySQL SSH
  17. PostgreSQLへの接続テストコマンド例(scalardb_handson_testが既に存在している場合は別名を利⽤してください) Kubernetes環境からBackend DBへの疎通確認 テストPodからBackend DBへの接続テスト(PostgreSQL) psql -h <PostgreSQLの接続先> -U <PostgreSQL

    user> -p 5432 -d handson CREATE SCHEMA scalardb_handson_test; CREATE TABLE scalardb_handson_test.test ( id INT, PRIMARY KEY (id) ); \dt scalardb_handson_test.* INSERT INTO scalardb_handson_test.test (id) values(1); SELECT * FROM scalardb_handson_test.test; DROP TABLE scalardb_handson_test.test; DROP SCHEMA scalardb_handson_test; Git JDK helm Sample App ScalarDB Cluster 別途導⼊⼿順を解説 Kubernetes Linux環境 kubectl Control Plane Worker Nodes test-pod MySQL SSH Backend DB PostgreSQL