web-dev-qa-db-ja.com

スタンドアロン展開とマルチノード展開の両方で、ZooKeeperをUbuntu 16.04にインストールする適切な方法は何ですか?

まず、私を完全なLinux初心者と考えてください。ここで示したすべての作業は、インターネットのさまざまなソースからまとめられています。

私は、ZooKeeperサービスを、開発シナリオ(VirtualBox上でUbuntuゲストOSを実行)のインストール手順でセットアップしようとしています。これらは私がとったステップです。質問は一番下にあります。

Javaをインストールします。

Sudo apt-get update
Sudo apt-get install default-jre

Zookeeperシステムユーザーを作成します。

Sudo adduser --system --no-create-home --disabled-password --disabled-login zookeeper

Wgetを使用して、バイナリリリースをダウンロードします。

wget "http://www-eu.Apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz"

適切なディレクトリを作成します。

Sudo mkdir /opt/zookeeper
Sudo mkdir /var/lib/zookeeper
Sudo mkdir /var/lib/zookeeper/logs
Sudo mkdir /var/run/zookeeper

Tarアーカイブを抽出します。

Sudo tar -xvzf zookeeper-3.4.10.tar.gz --directory /opt/zookeeper --strip-components 1

構成を編集します。

Sudo cp /opt/zookeeper/conf/Zoo_sample.cfg /opt/zookeeper/conf/Zoo.cfg
Sudo nano /opt/zookeeper/conf/Zoo.cfg

DataDir構成オプションをdataDir =/var/lib/zookeeperに変更します

環境スクリプトを編集します。

Sudo nano /opt/zookeeper/bin/zkEnv.sh

この行をファイルの先頭に追加します:Zoo_LOG_DIR = "/ var/lib/zookeeper/logs"

許可を確認します。

Sudo chown -R zookeeper:nogroup /opt/zookeeper
Sudo chown -R zookeeper:nogroup /var/lib/zookeeper
Sudo chown -R zookeeper:nogroup /var/run/zookeeper

Systemdサービスファイルを作成します。

Sudo nano /etc/systemd/system/zookeeper.service

ファイルの内容:

[Unit]
Description=Apache ZooKeeper
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
PIDFile=/var/run/zookeeper/zookeeper.pid
User=zookeeper
Group=nogroup
ExecStart=/opt/zookeeper/bin/zkServer.sh start
ExecStop=/opt/zookeeper/bin/zkServer.sh stop
Restart=on-failure
SyslogIdentifier=zookeeper

[Install]
WantedBy=multi-user.target

質問:「Sudo systemctl start zookeeper」を使用してサービスを開始すると、サーバーが起動してすぐにシャットダウンします。上記の設定に何か問題がありますか?これらの手順を改善するために異なる方法でできることはありますか(セキュリティの観点から)。

「sudo apt-get install zookeeperd」を使用してみましたが、いくつかの障害が見つかりました。1つはディレクトリの場所が混乱しており、自分の好みではないということです。ただし、ローカルホストとリモートマシンの両方で「ruok」telnetテストに対してサーバーが「imok」で応答します(手動で「./zkServer.sh start」を呼び出すとサーバーは正常に動作します)。

編集:これは私がサービスを実行しようとしたときのコンソール出力です:

$ Sudo systemctl start zookeeper
$ Sudo systemctl status zookeeper
● zookeeper.service - Apache Zookeeper
   Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

Apr 11 06:47:42 Ubuntu64 systemd[1]: Started Apache Zookeeper.
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: ZooKeeper JMX enabled by default
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: Using config: /opt/zookeeper/conf/Zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1871]: Starting zookeeper ... STARTED
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: ZooKeeper JMX enabled by default
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Using config: /opt/zookeeper/conf/Zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Stopping zookeeper ... STOPPED
$ Sudo journalctl -u zookeeper.service
-- Logs begin at Rab 2018-04-11 06:45:32 WIB, end at Rab 2018-04-11 06:55:55 WIB. --
Apr 11 06:47:42 Ubuntu64 systemd[1]: Started Apache Zookeeper.
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: ZooKeeper JMX enabled by default
Apr 11 06:47:42 Ubuntu64 zookeeper[1871]: Using config: /opt/zookeeper/conf/Zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1871]: Starting zookeeper ... STARTED
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: ZooKeeper JMX enabled by default
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Using config: /opt/zookeeper/conf/Zoo.cfg
Apr 11 06:47:43 Ubuntu64 zookeeper[1891]: Stopping zookeeper ... STOPPED
$
2
Greg

startからstart-foregroundへのこの最小限の変更で十分な場合があります。

ExecStart=/opt/zookeeper/bin/zkServer.sh start-foreground

1
taneli

dataDir(Zoo.cfg)の権限を確認します。ユーザーがそのディレクトリに書き込むことができない場合、サービスは開始されません。

0
Zanda