GCP + Ubuntu 24.04 YugabyteDB 3ノード構築完全ガイド 〜 yugabyte-node1, 2, 3 を使った複製構築戦略 〜
本ガイドでは、まずベースとなる yugabyte-node1 を「ひな形(マスター)」として完璧にセットアップする。
その後、その状態を丸ごと保存した「マシンイメージ」を作成し、それを使って yugabyte-node2 と yugabyte-node3 を一瞬で複製する。
この「ゴールデンイメージ戦略」により、各ノードで同じコマンドを何度も叩く不毛な手作業を省き、設定ミスをゼロに抑えて最短で分散データベースのクラスターを立ち上げることが可能だ。
1. 【1台目】ひな形となる yugabyte-node1 の作成
まずは Google Cloud コンソールで、すべてのベースとなる1台目のVMインスタンスを作成する。
「Compute Engine > VM インスタンス」を開き、「インスタンスを作成」をクリックして以下のように設定を行う。
- 名前:
yugabyte-node1 - マシンタイプ:
e2-medium(2 vCPU, 4GB RAM) - OS/イメージ:
Ubuntu 24.04 LTS - ブートディスク:
50GB(バランス永続ディスク) - ネットワークタグ:
yugabyte-node
※「詳細オプション」>「ネットワーキング」のタグ欄に入力するこのネットワークタグは、後ほど3台まとめて通信許可(ファイアウォール)を設定する際に重要となる。
2. 【1台目】共通環境のセットアップ(SSH接続)
作成した yugabyte-node1 にSSHでログインし、以下のコマンド群を実行してYugabyteDBが正常に動作する環境を完成させる。
① システムの事前準備
分散DBの大量アクセスに耐えられるよう、OSのリソース制限およびカーネルパラメータを拡張し、必須パッケージを導入する。
sudo bash -c 'cat << EOF > /etc/security/limits.d/yugabyte.conf
* soft nproc 65535
* hard nproc 65535
* soft nofile 1048576
* hard nofile 1048576
EOF'
# カーネルパラメータの調整
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# 依存パッケージのインストール
sudo apt update && sudo apt install -y wget bzip2 tar libatomic1 python3-pip
② Python (Miniconda) のインストール
YugabyteDBの内部スクリプトが依存するPython環境を、Minicondaを用いてホームディレクトリ配下に整備する。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
eval "$($HOME/miniconda3/bin/conda shell.bash hook)"
conda init bash
source ~/.bashrc
③ YugabyteDB のインストール
公式から最新のバイナリ(バージョン: 2025.2.2.2-b11)を取得し、展開と初期設定を行う。
wget https://software.yugabyte.com/releases/2025.2.2.2/yugabyte-2025.2.2.2-b11-linux-x86_64.tar.gz
tar xvfz yugabyte-2025.2.2.2-b11-linux-x86_64.tar.gz
cd yugabyte-2025.2.2.2/
# Conda環境のPythonを使ってパスの初期設定を実行
./bin/post_install.sh
3. 【複製】マシンイメージから node2, node3 を作成
ここが「ゴールデンイメージ戦略」の本番である。苦労してセットアップした yugabyte-node1 をクローンし、残り2台を数クリックで複製する。
- VMを停止: 正確なスナップショットを取るため、GCPコンソールで
yugabyte-node1を一度停止させる。 - マシンイメージ作成: 左メニュー「Compute Engine > マシンイメージ」へ進み、
yugabyte-node1をソースとしてyugabyte-base-imageを作成する。 - インスタンス複製: 作成した
yugabyte-base-imageの詳細画面から「インスタンスを作成」を選び、名前をyugabyte-node2、同様の手順でもう1台をyugabyte-node3として作成する。(設定やネットワークタグ、ディスク状態が丸ごと引き継がれる) - 全台起動: 複製が完了したら、最初に停止した
yugabyte-node1も含め、3台すべてを起動状態にする。
4. ネットワーク設定(ファイアウォール)
GCPコンソール上で、3台のノードが互いの間で全ポート通信を行えるようにルールを追加する。この設定は既存の外部からのSSH接続等には影響を与えない。
- 名前:
yugabyte-cluster-common - ターゲットタグ:
yugabyte-node - ソース IPv4 範囲:
10.0.0.0/8(または環境に合わせたVPCの内部IPレンジ) - プロトコルとポート:
すべて許可を選択
5. クラスターの起動(3台それぞれで実行)
3台それぞれに個別にSSHでログインし、クラスターを起動・結合していく。
全ノード共通の準備
まずは全台共通で、インストールディレクトリへ移動しておく。
node1 (マスター) で実行
最初にクラスターの起点となる1台目を起動する。
--base_dir=$HOME/var/yugabyte \
--listen $(hostname -I | awk '{print $1}') \
--master_flags="memory_limit_hard_bytes=1073741824" \
--tserver_flags="memory_limit_hard_bytes=1610612736"
node2 と node3 で実行
残り2台を、node1で作成されたクラスターにジョイン(参加)させる。
※ <yugabyte-node1の内部IP> の部分は、GCPコンソールで確認できる node1 の内部IP(10.x.x.x)に書き換えること。
--base_dir=$HOME/var/yugabyte \
--listen $(hostname -I | awk '{print $1}') \
--join <yugabyte-node1の内部IP> \
--master_flags="memory_limit_hard_bytes=1073741824" \
--tserver_flags="memory_limit_hard_bytes=1610612736"
6. 稼働確認(どのサーバーからでもOK)
YugabyteDBは完全な分散型アーキテクチャであるため、node1〜3 のどのサーバーからSQLシェルを起動しても、クラスター全体の同じグローバル情報を取得できる。
./bin/ysqlsh -h $(hostname -I | awk '{print $1}') -U yugabyte -d yugabyte
無事にSQLシェルに繋がったら、以下のメタデータ参照コマンドを叩く。
実行結果に 3台分のノードのIPアドレス、ポート番号、および正常に連動しているステータスがズラリと表示されれば、GCP上での3ノード・マルチマスター環境の構築は完全完了だ。