W dniu 14.08.2012 23:02, Matthew Sims pisze:
Hello, we're just starting to implement a Zookeeper where I work on a Red
Hat system.

We've set everything up and it starts up just fine. The only issue is that
the process is run by the root user.

sudo /etc/init.d/zookeeper start

I have a zookeeper user ready to go. The init script we have makes a java
call to start up the process.

start)
     echo  -n "Starting zookeeper ... "
     if [ -f $ZOOPIDFILE ]; then
       if kill -0 `cat $ZOOPIDFILE` > /dev/null 2>&1; then
          echo $command already running as process `cat $ZOOPIDFILE`.
          exit 0
       fi
     fi
     nohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}"
"-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
     -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT"
2>&1 < /dev/null &
     if [ $? -eq 0 ]
     then
       if /bin/echo -n $! > "$ZOOPIDFILE"
       then
         sleep 1
         echo STARTED
       else
         echo FAILED TO WRITE PID
         exit 1
       fi
     else
       echo SERVER DID NOT START
       exit 1
     fi
     ;;


I've looked in to editing this script, including /etc/init.d/functions and
calling the daemon function to run the start as user zookeeper. But this
forks the process and the PID file is updated with the daemon process, not
the zookeeper process. This causes the stop feature to fail.

Before I go about re-writing this init script, I figure someone else must
have a proper way of starting this up as a non-root user.
I run ZooKeeper on Centos 6 (which is a clone of Red Hat Enterprise
Linux 6).  I use upstart to manage the ZooKeeper service. In the upstart
job configuration I have an exec stanza:

exec su -c "/usr/java/default/bin/java [-D this, -D that etc.]
org.apache.zookeeper.server.quorum.QuorumPeerMain /etc/zookeeper/z
oo.cfg" zookeeper

In newer upstart version than what's available in RHEL 6 there's a
"setuid" stanza, which is as an straightforward solution to this problem
as can be.

Best regards,

--
Tadeusz Andrzej Kadłubowski
Dział Rozwoju Technologii
Wirtualna Polska S.A.



"WIRTUALNA POLSKA" Spolka Akcyjna z siedziba w Gdansku przy ul. Traugutta 115 
C, wpisana do Krajowego Rejestru Sadowego - Rejestru Przedsiebiorcow prowadzonego przez 
Sad Rejonowy Gdansk - Polnoc w Gdansku pod numerem KRS 0000068548, o kapitale zakladowym 
67.980.024,00 zlotych oplaconym w calosci oraz Numerze Identyfikacji Podatkowej 
957-07-51-216.

Reply via email to