Apache Zookeeperは、分散システム向けの無料のオープンソースサービスであり、多数のホストの管理に役立ちます。これは、構成情報、命名、およびグループサービスを維持するために使用される一元化されたサービスです。これはJavaで記述されており、開発者はアプリケーションの分散性を気にすることなく、ソフトウェア機能の構築に集中できます。 Apache ZooKeeperは、読み取りが書き込みよりもはるかに一般的である「読み取りが支配的な」ワークロードで最も一般的に使用されます。同期、順序付けされたメッセージ、シリアル化、信頼性、原子性、高速処理など、豊富な機能セットが付属しています。他の分散アプリケーションに接続しているときに自動障害回復を行うのに役立つロックおよび同期メカニズムがあります。 Zookeeperプロジェクトは、ApacheFoundationで最も成功したプロジェクトの1つです。多くの企業が、高可用性分散システムを大規模に作成するためにZookeeperを採用しました。
このチュートリアルでは、Debian10サーバーでシングルノードのApacheZookeeperクラスターをセットアップする方法を示します。
- 2GBのRAMを搭載したDebian10を実行しているサーバー。
- ルートパスワードはサーバーで構成されています。
開始する前に、サーバーを最新バージョンに更新することをお勧めします。次のコマンドを使用して更新できます:
apt-get update -y
apt-get upgrade -y
サーバーが更新されたら、サーバーを再起動して変更を実装します。
Javaのインストール
ApacheZookeeperはJava言語で書かれています。したがって、システムにJavaをインストールする必要があります。デフォルトでは、最新バージョンのJavaがDebian10デフォルトリポジトリで利用可能です。次のコマンドを実行してインストールできます:
apt-get install default-jdk -y
Javaをインストールした後、次のコマンドを使用して、インストールされているJavaのバージョンを確認します。
java --version
次の出力が得られるはずです:
openjdk 11.0.5 2019-10-15 OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1) OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, mixed mode, sharing)
完了したら、Zookeeperのシステムユーザーの作成に進むことができます。
Zookeeperのシステムユーザーを作成する
Zookeeperサービスを実行するための専用ユーザーを作成することをお勧めします。これにより、セキュリティと管理性が向上します。
まず、次のコマンドを実行して、ホームディレクトリを持つzookeeperユーザーを作成します。
useradd zookeeper -m
次に、次のコマンドを使用して、zookeeperユーザーのデフォルトのシェルを設定します。
usermod --shell /bin/bash zookeeper
次に、次のコマンドを使用して、飼育係ユーザーのパスワードを設定します。
passwd zookeeper
次に、zookeeperユーザーをsudoグループに追加します。
usermod -aG sudo zookeeper
この時点で、Zookeeperユーザーを作成して構成しました。これで、Zookeeperのダウンロードに進むことができます。
まず、ApacheZookeeperの最新バージョンを公式Webサイトからダウンロードする必要があります。この記事を書いている時点で、ApacheZookeeperの最新バージョンは3.5.6です。
ダウンロードするには、ディレクトリを/ optに変更し、次のコマンドを実行します。
cd /opt
wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.6-bin.tar.gz
ダウンロードが完了したら、次のコマンドを使用してダウンロードしたファイルを抽出します。
tar -xvzf apache-zookeeper-3.5.6-bin.tar.gz
次に、抽出したディレクトリの名前をzookeeperに変更し、適切な権限を付与します。
mv apache-zookeeper-3.5.6-bin zookeeper
chown -R zookeeper:zookeeper /opt/zookeeper
次に、Zookeeperがすべての構成データと状態データを保存するためのデータディレクトリを作成する必要があります。必要に応じて、ローカルファイルシステムまたはリモートファイルシステムに作成できます。
次のコマンドを使用して、データディレクトリを作成できます。
mkdir -p /data/zookeeper
次に、データディレクトリの所有権をzookeeperuserに変更します。
chown -R zookeeper:zookeeper /data/zookeeper
この時点で、Zookeeperをダウンロードし、そのデータディレクトリを作成しました。これで、Zookeeperの構成に進むことができます。
Zookeeperを構成する
Zookeeperのすべての構成ファイルは、/ opt / zookeeper /conf/ディレクトリ内にあります。次のコマンドを使用して、/ opt / zookeeper /conf/ディレクトリ内にZookeeper構成ファイルを作成できます。
nano /opt/zookeeper/conf/zoo.cfg
次の行を追加します:
tickTime=2500 dataDir=/data/zookeeper clientPort=2181 maxClientCnxns=80
終了したら、ファイルを保存して閉じます。
場所:
- tickTime :このオプションは、ティックの長さをミリ秒単位で設定します。
- dataDir :Zookeeperデータを保存するデータディレクトリを指定します。
- clientPort :クライアント接続のリッスンに使用するポートを指定します。
- maxClientCnxns :クライアント接続の最大数を制限するために使用されます。
注 :上記のパラメータは開発とテスト用です。必要に応じて変更できます。
この時点で、Zookeeperを構成しました。これで、Zookeeperサーバーを起動する準備ができました。
Zookeeperサーバーの起動とテスト
次のコマンドを使用して、Zookeeperサーバーを起動できます。
/opt/zookeeper/bin/zkServer.sh start
次の出力が得られるはずです:
/usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
次に、次のコマンドを使用して、ポート2181でZookeeperサーバーに接続できます。
/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
接続すると、次の出力が表示されます。
[zk: 127.0.0.1:2181(CONNECTED) 0]
次に、helpコマンドを実行して、クライアントから実行できるコマンドのリストを取得します。
[zk: 127.0.0.1:2181(CONNECTED) 0] help
次の出力が表示されます。
ZooKeeper -server host:port cmd args addauth scheme auth close config [-c] [-w] [-s] connect host:port create [-s] [-e] [-c] [-t ttl] path [data] [acl] delete [-v version] path deleteall path delquota [-n|-b] path get [-s] [-w] path getAcl [-s] path history listquota path ls [-s] [-w] [-R] path ls2 path [watch] printwatches on|off quit reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*] redo cmdno removewatches path [-c|-d|-a] [-l] rmr path set [-s] [-v version] path data setAcl [-s] [-v version] [-R] path acl setquota -n|-b val path stat [-w] path sync path
テスト後、quitコマンドを使用してクライアントセッションを終了します。
[zk: 127.0.0.1:2181(CONNECTED) 0] quit
これで、次のコマンドを使用してZookeeperサービスを停止できます。
/opt/zookeeper/bin/zkServer.sh stop
次のコマンドが表示されます:
/usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
この時点で、Zookeeperサーバーの起動とテストは正常に完了しています。
Zookeeper用のSystemdサービスファイルを作成する
次に、systemdを使用してZookeeperサービスを管理するための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
終了したら、ファイルを保存して閉じます。次に、次のコマンドを使用してsystemdデーモンをリロードします。
systemctl daemon-reload
次に、Zookeeperサービスを開始し、次のコマンドを使用してシステムの再起動後に開始できるようにします。
systemctl start zookeeper
systemctl enable zookeeper
次のコマンドを使用して、Zookeeperのステータスを確認できるようになりました。
systemctl status zookeeper
次の出力が表示されます。
? zookeeper.service - Zookeeper Daemon Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2019-12-29 15:12:39 UTC; 8min ago Docs: http://zookeeper.apache.org Process: 9229 ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg (code=exited, status=0/SUCCESS) Main PID: 9245 (java) Tasks: 29 (limit: 2359) Memory: 49.7M CGroup: /system.slice/zookeeper.service ??9245 java -Dzookeeper.log.dir=/opt/zookeeper/bin/../logs -Dzookeeper.log.file=zookeeper-zookeeper-server-debian10.log -Dzookeeper. Dec 29 15:12:38 debian10 systemd[1]: Starting Zookeeper Daemon... Dec 29 15:12:38 debian10 zkServer.sh[9229]: /usr/bin/java Dec 29 15:12:38 debian10 zkServer.sh[9229]: ZooKeeper JMX enabled by default Dec 29 15:12:38 debian10 zkServer.sh[9229]: Using config: /opt/zookeeper/conf/zoo.cfg Dec 29 15:12:39 debian10 zkServer.sh[9229]: Starting zookeeper ... STARTED Dec 29 15:12:39 debian10 systemd[1]: Started Zookeeper Daemon.
これで、systemdを使用してZookeeperサービスを簡単に管理できます。
おめでとう!これで、Debian10サーバーに単一ノードのZookeeperクラスターが正常にインストールおよび構成されました。この設定は、開発環境およびテスト環境で非常に役立ちます。シングルノードのZookeeperクラスターをセットアップするための十分な知識が得られたことを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。