From 29aabf3cfb85c72a152ce284edd77358ee3fcd8b Mon Sep 17 00:00:00 2001 From: Lihi Wishnitzer Date: Sun, 6 Aug 2017 10:03:56 +0000 Subject: [PATCH] Fix zookeeper devstack installation The zookeeper devstack installation had few issues: 1. The configured port was ignored, and DF could not connect to the DB 2. The systemd service file is already created by the installation itself Co-Authored-By: Shachar Snapiri Change-Id: I82bc200181768a7065adce7a7fc5999b4ae97cb3 --- devstack/zookeeper.service.fedora | 13 ------ devstack/zookeeper.service.ubuntu | 13 ------ devstack/zookeeper_driver | 72 +++++++++++++++---------------- 3 files changed, 34 insertions(+), 64 deletions(-) delete mode 100644 devstack/zookeeper.service.fedora delete mode 100644 devstack/zookeeper.service.ubuntu diff --git a/devstack/zookeeper.service.fedora b/devstack/zookeeper.service.fedora deleted file mode 100644 index 6c96dfdb6..000000000 --- a/devstack/zookeeper.service.fedora +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Zookeeper Service -After=network.target - -[Service] -Type=simple -User=root -Group=root -SyslogIdentifier=zookeeper -ExecStart=/usr/bin/java -Dzookeeper.log.dir=/var/log/zookeeper -Dzookeeper.root.logger=INFO,ROLLINGFILE -cp /etc/zookeeper:/usr/share/java/slf4j/api.jar:/usr/share/java/slf4j/simple.jar:/usr/share/java/log4j.jar:/usr/share/java/log4j-1.jar:/usr/share/java/log4j/log4j-slf4j-impl.jar:/usr/share/java/log4j/log4j-api.jar:/usr/share/java/log4j/log4j-core.jar:/usr/share/java/zookeeper/zookeeper.jar:/usr/share/java/zookeeper/zookeeper-ZooInspector.jar:/usr/share/java/zookeeper/zookeeper-tests.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /etc/zookeeper/zoo.cfg - -[Install] -WantedBy=multi-user.target diff --git a/devstack/zookeeper.service.ubuntu b/devstack/zookeeper.service.ubuntu deleted file mode 100644 index 022f34c12..000000000 --- a/devstack/zookeeper.service.ubuntu +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Zookeeper Service -After=network.target - -[Service] -Type=simple -User=root -Group=root -SyslogIdentifier=zookeeper -ExecStart=/usr/bin/java -Dzookeeper.log.dir=/var/log/zookeeper -Dzookeeper.root.logger=INFO,ROLLINGFILE -cp /etc/zookeeper/conf:/usr/share/java/jline.jar:/usr/share/java/log4j-1.2.jar:/usr/share/java/xercesImpl.jar:/usr/share/java/xmlParserAPIs.jar:/usr/share/java/netty.jar:/usr/share/java/slf4j-api.jar:/usr/share/java/slf4j-log4j12.jar:/usr/share/java/zookeeper.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /etc/zookeeper/conf/zoo.cfg - -[Install] -WantedBy=multi-user.target diff --git a/devstack/zookeeper_driver b/devstack/zookeeper_driver index 9bdbe4abd..675f0b080 100644 --- a/devstack/zookeeper_driver +++ b/devstack/zookeeper_driver @@ -16,71 +16,65 @@ if is_ubuntu ; then UBUNTU_RELEASE_BASE_NUM=`lsb_release -r | awk '{print $2}' | cut -d '.' -f 1` fi -ZOOKEEPER_IP=${REMOTE_DB_IP:-${HOST_IP}} -ZOOKEEPER_PORT=${REMOTE_DB_PORT:-2181} -ZOOKEEPER_DATA_DIR="/var/lib/zookeeper" -ZOOKEEPER_LOG_DIR="/var/log/zookeeper" -ZOOKEEPER_DIR="/etc/zookeeper" +function _zookeeper_env { + export ZOOKEEPER_DATA_DIR="/var/lib/zookeeper" + export ZOOKEEPER_LOG_DIR="/var/log/zookeeper" + export ZOOKEEPER_DIR="/etc/zookeeper" +} + +function update_key_in_file { + key=$1; shift + value=$1; shift + file=$1; shift + local result=`grep -c "^ *$key *=" $file 2> /dev/null` + if [ $result -gt 0 ]; then + sudo sed -i "/^ *$key *=/c $key=$value" $file + else + sudo sh -c "echo \"$key=$value\" >> $file" + fi +} function nb_db_driver_install_server { if is_service_enabled df-zookeeper-server ; then + _zookeeper_env echo "Installing Zookeeper server" + sudo mkdir -p $ZOOKEEPER_DATA_DIR + sudo mkdir -p $ZOOKEEPER_LOG_DIR if is_ubuntu; then ZOOKEEPER_CONF_DIR="${ZOOKEEPER_DIR}/conf" - ZOOKEEPER_CONF_FILE="${ZOOKEEPER_CONF_DIR}/zoo.cfg" - ZOOKEEPER_CONF_SAMPLE_DIR="/etc/zookeeper/conf_example" - sudo mkdir -p $ZOOKEEPER_DATA_DIR - sudo mkdir -p $ZOOKEEPER_LOG_DIR - sudo mkdir -p $ZOOKEEPER_CONF_DIR install_package zookeeperd - stop_service zookeeper - if [ $UBUNTU_RELEASE_BASE_NUM -ge 16 ] ; then - sudo cp $DEST/dragonflow/devstack/zookeeper.service.ubuntu /etc/systemd/system/zookeeper.service - sudo systemctl daemon-reload - fi - if [ -d $ZOOKEEPER_CONF_SAMPLE_DIR ] ; then - sudo cp $ZOOKEEPER_CONF_SAMPLE_DIR/* $ZOOKEEPER_CONF_DIR/ -rf - fi + ZOOKEEPER_CONF_FILE="${ZOOKEEPER_CONF_DIR}/zoo.cfg" elif is_fedora; then ZOOKEEPER_CONF_DIR="${ZOOKEEPER_DIR}" - ZOOKEEPER_CONF_FILE="${ZOOKEEPER_CONF_DIR}/zoo.cfg" + install_package zookeeper ZOOKEEPER_CONF_SAMPLE_FILE="${ZOOKEEPER_CONF_DIR}/zoo_sample.cfg" - sudo mkdir -p $ZOOKEEPER_DATA_DIR - sudo mkdir -p $ZOOKEEPER_LOG_DIR - sudo mkdir -p $ZOOKEEPER_CONF_DIR - install_package zookeeper jline netty jetty - sudo cp $DEST/dragonflow/devstack/zookeeper.service.fedora /etc/systemd/system/zookeeper.service - sudo systemctl daemon-reload - if [ -f $ZOOKEEPER_CONF_SAMPLE_FILE ] ; then - sudo cp $ZOOKEEPER_CONF_SAMPLE_FILE $ZOOKEEPER_CONF_FILE - fi + ZOOKEEPER_CONF_FILE="${ZOOKEEPER_CONF_DIR}/zoo.cfg" + sudo cp $ZOOKEEPER_CONF_SAMPLE_FILE $ZOOKEEPER_CONF_FILE else die $LINENO "Other distributions are not supported" fi echo "Configuring Zookeeper" if [ -f $ZOOKEEPER_CONF_FILE ] ; then - sudo sed -i "/^dataDir=/c dataDir=${ZOOKEEPER_DATA_DIR}" $ZOOKEEPER_CONF_FILE - sudo sed -i "/^dataLogDir=/c dataLogDir=${ZOOKEEPER_LOG_DIR}" $ZOOKEEPER_CONF_FILE - local result=`grep "server.1" $ZOOKEEPER_CONF_FILE` - if [ $result -eq 0 ]; then - sudo sed -i "/^[#server.1=|server.1=]/c server.1=${HOSTNAME}:2888:3888" $ZOOKEEPER_CONF_FILE - else - echo "server.1=${HOSTNAME}:2888:3888" | sudo tee -a $ZOOKEEPER_CONF_FILE - fi + update_key_in_file dataDir "${ZOOKEEPER_DATA_DIR}" $ZOOKEEPER_CONF_FILE + update_key_in_file dataLogDir "${ZOOKEEPER_LOG_DIR}" $ZOOKEEPER_CONF_FILE + update_key_in_file clientPort "${REMOTE_DB_PORT}" $ZOOKEEPER_CONF_FILE + update_key_in_file "server.1" "${HOSTNAME}:2888:3888" $ZOOKEEPER_CONF_FILE fi - echo "1" | sudo tee $ZOOKEEPER_CONF_DIR/myid + sudo systemctl restart zookeeper + sudo sh -c "echo 1 >$ZOOKEEPER_CONF_DIR/myid" fi } function nb_db_driver_clean { if is_ubuntu; then uninstall_package -y zookeeperd + uninstall_package -y zookeeper + uninstall_package -y libzookeeper-java elif is_fedora; then uninstall_package -y zookeeper fi if [ -f "/etc/systemd/system/zookeeper.service" ] ; then - sudo rm /etc/systemd/system/zookeeper.service sudo systemctl daemon-reload fi } @@ -91,12 +85,14 @@ function nb_db_driver_install_client { function nb_db_driver_start_server { if is_service_enabled df-zookeeper-server ; then + _zookeeper_env start_service zookeeper fi } function nb_db_driver_stop_server { if is_service_enabled df-zookeeper-server ; then + _zookeeper_env stop_service zookeeper fi }