テクノロジーガイド

Ubuntu 18.04 に single-node Apache ZooKeeper をインストールする手順

2 min read DevOps 更新されました 18 Oct 2025
Ubuntu 18.04での単一ノードApache ZooKeeper導入ガイド
Ubuntu 18.04での単一ノードApache ZooKeeper導入ガイド

Apache ZooKeeper の概念図

ZooKeeper は分散システム向けの設定管理、命名、同期、グループサービスを提供するミドルウェアです。本稿では Ubuntu 18.04 上に単一ノード ZooKeeper をインストールして systemd で起動・管理するまでの手順を示します。Java のインストール、専用ユーザー作成、バイナリ配置、設定、起動確認、運用チェックリストまで含みます。

重要: 本手順は「単一ノード(テスト・検証用途)」向けです。本番可用性を確保するには 3 ノード以上のクラスタ構成を検討してください。

目的と対象読者

目的: Ubuntu 18.04 サーバで ZooKeeper(単一ノード)を動かせるようにする。対象読者: Linux 管理者、DevOps、開発者でコマンドラインと基本的なシステム管理に慣れている方。

重要用語(1行定義)

  • ZooKeeper: 分散システムの調整や設定を扱う Apache のサービス。
  • Znode: ZooKeeper 内の階層的なデータノード。

主な前提条件

  • Ubuntu 18.04 が動作するサーバ。
  • root 権限(または sudo を使えるユーザー)。
  • ネットワーク接続(外部リポジトリからパッケージを取得できること)。

要件(チェックリスト)

  • Ubuntu 18.04 が最新状態である。
  • root パスワードまたは sudo 権限がある。
  • ポート 2181(クライアント用)が必要に応じてファイアウォールで解放されている。

準備: システムの更新

まずシステムを最新の状態にします。管理者権限で次を実行してください。

apt-get update -y  
 apt-get upgrade -y

アップグレード後、必要に応じて再起動してください。

Java のインストール

ZooKeeper は Java で動作するため Java が必要です。Ubuntu 18.04 のデフォルトリポジトリに最新の Oracle Java が無い場合は PPA を追加してからインストールします:

add-apt-repository ppa:linuxuprising/java

リポジトリを更新して Java をインストールします。

apt-get update -y  
 apt-get install oracle-java11-set-default

インストール後、バージョン確認:

java --version

期待される出力例(環境により異なります):

java 11.0.2 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+7-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+7-LTS, mixed mode)

注: OpenJDK 11 を使用しても構いません。組織ポリシーに合わせて選択してください。

ZooKeeper 用ユーザーの作成

サービス専用の非特権ユーザーを作成します。

useradd zookeeper -m  
 usermod --shell /bin/bash zookeeper

パスワードを設定し、sudo グループに追加します(必要な場合)。

passwd zookeeper
usermod -aG sudo zookeeper

セキュリティ上の注意: 本番環境では sudo 権限は不要にするか最小権限に制限してください。

ZooKeeper のダウンロードと配置

ZooKeeper はディスクに設定やステートを保持します。まずデータディレクトリを作成し、所有権を付与します。

mkdir -p /data/zookeeper
chown -R zookeeper:zookeeper /data/zookeeper

/opt に移動してアーカイブを取得、展開します(この例では 3.4.9 を使用)。

cd /opt  
 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
tar -xvzf zookeeper-3.4.9.tar.gz
mv zookeeper-3.4.9 zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper

注: このチュートリアルで使うバージョンはアーカイブから取得した例です。セキュリティや機能要件に応じて最新の安定版を検討してください(3.5.x / 3.6.x 以降で機能が追加されています)。

ZooKeeper の基本設定

設定ファイルを作成します。

nano /opt/zookeeper/conf/zoo.cfg

次の最小限の設定を記述します。

tickTime=2500
dataDir=/data/zookeeper
clientPort=2181
maxClientCnxns=80

保存してエディタを閉じます。dataDir は既に作成済みで、適切な所有権があることを確認してください。

手動での起動と接続確認

まず ZooKeeper を起動します。

cd /opt/zookeeper  
 bin/zkServer.sh start

期待される起動ログ例:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

クライアントから接続してプロンプトが出ることを確認します。

bin/zkCli.sh -server 127.0.0.1:2181

接続成功時のプロンプト例:

[zk: 127.0.0.1:2181(CONNECTED) 1]

プロンプトで help を実行すると利用可能なコマンド一覧が表示されます。

help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    ...(略)

終了するには quit と入力します。

停止するには:

bin/zkServer.sh stop

停止ログ例:

ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED

systemd ユニットファイルでサービス化

永続的に管理するために systemd ユニットを作成します。

nano /etc/systemd/system/zookeeper.service

以下を記述します。

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]    
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=default.target

保存後、デーモンをリロード、起動、ブート時有効化します。

systemctl daemon-reload
systemctl start zookeeper
systemctl enable zookeeper

ステータス確認:

systemctl status zookeeper

出力例(抜粋):

? zookeeper.service - Zookeeper Daemon
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-03-06 15:03:01 UTC; 5s ago
     Docs: http://zookeeper.apache.org
  Process: 3909 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS)
 Main PID: 3926 (java)

重要: systemd のログは journalctl -u zookeeper で確認できます。

検証手順(受け入れ基準)

受け入れ基準 (Критерии приёмки):

  • systemctl status zookeeper が active (running) を返す。
  • bin/zkCli.sh で 127.0.0.1:2181 に接続できる。
  • create/get/ls 操作で基本的な Znode 操作が成功する。

簡単な検証例:

# 接続
bin/zkCli.sh -server 127.0.0.1:2181
# クライアントプロンプトで
create /mytest "hello"
get /mytest
ls /

成功すればインストール完了です。

運用上のチェックリスト(ロール別)

運用担当者(オペレーター):

  • systemctl status と journalctl -u zookeeper を定期確認
  • ディスク使用量(dataDir)監視
  • ZooKeeper のログローテーション設定

開発者:

  • クライアントのタイムアウト/リトライ戦略を確認
  • session timeout と tickTime の関係を理解

セキュリティ担当者:

  • 管理用ポートへのアクセス制限(ファイアウォール)
  • 認証(SASL/ACL)を有効化する計画

セキュリティとハードニングのヒント

  • ファイアウォール: 2181(クライアント)、2888/3888(クラスタ間)など必要に応じて開放する。
  • 認可: ZooKeeper の ACL を使用して Znode へのアクセスを制限する。
  • 認証: 本番では SASL や TLS といった認証・暗号化検討。
  • ユーザー/権限: zookeeper ユーザーは最小権限で運用。

注意: 本手順は HTTP/TLS 設定や SASL の詳細を含みません。導入時は組織のセキュリティ方針に従って追加設定してください。

トラブルシューティング(よくある問題と対処)

  • Java が見つからない: java –version を実行して PATH を確認。systemd ユニットで User 環境変数の問題がある場合はフルパス指定。
  • ポート衝突: 既に 2181 を使用するプロセスがある場合は clientPort を変更するか競合プロセスを停止。
  • ディスク権限エラー: dataDir の所有者が zookeeper になっているか確認。

マルチノード(本番)への簡易移行メモ

  1. 最低 3 台のノードを用意する(可用性確保の一般的な目安)。
  2. zoo.cfg に server.N=host:peerPort:leaderElectionPort を設定。
  3. 各ノードで dataDir/myid にノード固有の ID を記述。
  4. クラスタ起動後、各ノードのステータスを確認しリーダ/フォロワの役割を検証。

ミニ手法: まず単一ノードで動作確認 → テストクラスタ(3ノード)で設定検証 → 本番展開。

互換性とバージョン注意点

  • 3.4 系は古い実装で、3.5/3.6 系では設定や機能が拡張されています。新機能やセキュリティ修正が必要な場合は新しい安定版を選んでください。
  • クラスタ間のバージョン差は互換性問題を起こす場合があるため、アップグレード計画を作成して段階的に実施してください。

受け入れテストケース(簡易)

  1. systemctl start zookeeper を実行 → サービスが起動する。
  2. zkCli で接続 → create /testnode “v” → get /testnode が期待値を返す。
  3. サービス再起動後も dataDir によってノードデータが保持される。

1行用語集

  • tickTime: ZooKeeper の基本タイムアウト単位(ミリ秒)。
  • clientPort: クライアントが接続するポート(デフォルト 2181)。
  • Znode: ZooKeeper の階層的なデータ格納単位。

まとめ

  • このガイドでは Ubuntu 18.04 に単一ノード ZooKeeper をインストールし、systemd で管理する手順を示しました。検証手順と運用チェックリスト、基本的なセキュリティ注意点も合わせて提供しています。

重要: 単一ノード構成はテストや開発用途に適しています。本番での可用性が必要な場合は 3 ノード以上のクラスタ化を行ってください。

ソーシャルプレビュー(例): Apache ZooKeeper を Ubuntu 18.04 に単一ノードで導入するための手順ガイド。Java インストールから systemd サービス化、検証、運用チェックリストまで。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Warzone シーズン5 スタジアム イースターエッグ完全ガイド
ゲームガイド

Warzone シーズン5 スタジアム イースターエッグ完全ガイド

WiKIDとOpenVPN ASの連携設定ガイド
セキュリティ

WiKIDとOpenVPN ASの連携設定ガイド

トレーサビリティマトリクスの作り方と運用ガイド
品質保証

トレーサビリティマトリクスの作り方と運用ガイド

マルチモニターの選び方とセットアップ完全ガイド
ハードウェア

マルチモニターの選び方とセットアップ完全ガイド

CentOS 8でOpenLiteSpeed+PHP7.4+MariaDBを導入
サーバー

CentOS 8でOpenLiteSpeed+PHP7.4+MariaDBを導入

Windows 10で3G/4Gデータ使用量を管理する方法
ネットワーク

Windows 10で3G/4Gデータ使用量を管理する方法