Homebrew で導入した ZooKeeper の admin port を変更する方法

| 2 min read
Author: masahiro-kondo masahiro-kondoの画像

はじめに

#

ZooKeeper は分散システムにおいて構成情報の維持、同期処理、ネーミング、グルーピングなどのサービスを提供するソフトウェアです。

Apache ZooKeeper

Information

ネーミングの由来は Zoo (動物園)に由来しています。分散システムの調整は動物園を維持管理するように大変なタスクという意味なのでしょうか。

ZooKeeper: Because coordinating distributed systems is a Zoo

Index - Apache ZooKeeper - Apache Software Foundation

ZooKeeper は Apache Hadoop や Apache Kafka で利用されており、分散システムのリソース管理の複雑さをこれらのソフトウェアから分離して専用の関心事に注力させる役割を担っています。

ZooKeeper の admin port とは何か・なぜ変更したいのか

#

ZooKeeper は 管理のための REST API を公開しており ZOOKEEPER_HOST:ADMIN_PORT/commands/monitor などのエンドポイントからサービスの構成や状態を取得できます。

そもそも、どうしてこの ADMIN_PORT を変更したいのか。それは、このポートのデフォルト値が8080だからです。ローカルで動作している場合は、http://localhost:8080/commands にアクセスするとインデックスページが開きます。

index

8080ポートは Web アプリのローカル開発でポートのデフォルト値としてよく採用されます。なので、ZooKeeper が起動されている状態で開発用 Web サーバーを起動すると別ポートで開いたり、最悪起動に失敗することになります。逆に ZooKeeper 起動時に開発用 Web サーバーがすでに起動していると ZooKeeper が起動に失敗してしまいます。これは地味にストレスです。

変更方法

#

ということで、ようやく本題です。

ZooKeeper の設定ファイルは zoo.cfg に書かれています。

ZooKeeper Administrator's Guide

筆者は macOS に Homebrew で ZooKeeper をインストールしました。ちょっと前だと、ZooKeeper の設定ファイルは、/usr/local/etc/zookeeper/ 配下にあったのですが、今は Homebrew 自体のディレクトリが移動しています。以下のコマンドでわかるように /opt/homebrew になっています。

$ brew --prefix                                                          
/opt/homebrew

zoo.cfg は /opt/homebrew/etc/zookeeper/zoo.cfg にありました。

このファイルを開いて以下の行を追加・保存します。

admin.serverPort=9999 # 8080 以外のポート番号

ZooKeeper の管理が不要な場合は以下のように無効化設定を入れるのもありです。

admin.enableServer=false

zoo.cfg を書き換えたら ZooKeeper を再起動します。

brew services restart zookeeper

これで、ポート8080が開放されました。

最後に

#

以上、Homebrew でインストールした ZooKeeper の admin ポートを変更する方法でした。8080 が占有されて不便な場合は試してみてください。

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。