diff options
| author | Kim van der Riet <kpvdr@apache.org> | 2012-05-04 15:39:19 +0000 |
|---|---|---|
| committer | Kim van der Riet <kpvdr@apache.org> | 2012-05-04 15:39:19 +0000 |
| commit | 633c33f224f3196f3f9bd80bd2e418d8143fea06 (patch) | |
| tree | 1391da89470593209466df68c0b40b89c14963b1 /cpp/etc | |
| parent | c73f9286ebff93a6c8dbc29cf05e258c4b55c976 (diff) | |
| download | qpid-python-633c33f224f3196f3f9bd80bd2e418d8143fea06.tar.gz | |
QPID-3858: Updated branch - merged from trunk r.1333987
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/asyncstore@1334037 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/etc')
| -rw-r--r-- | cpp/etc/Makefile.am | 25 | ||||
| -rw-r--r-- | cpp/etc/cluster.conf-example.xml.in | 70 | ||||
| -rwxr-xr-x | cpp/etc/qpidd-primary.in | 102 | ||||
| -rwxr-xr-x | cpp/etc/qpidd.in (renamed from cpp/etc/qpidd) | 17 |
4 files changed, 203 insertions, 11 deletions
diff --git a/cpp/etc/Makefile.am b/cpp/etc/Makefile.am index 1e4db561a7..b154a105d4 100644 --- a/cpp/etc/Makefile.am +++ b/cpp/etc/Makefile.am @@ -20,9 +20,10 @@ SASL_CONF = sasl2/qpidd.conf EXTRA_DIST = \ $(SASL_CONF) \ - qpidd qpidd.conf qpidc.conf CMakeLists.txt + qpidd qpidd-primary qpidd.conf qpidc.conf CMakeLists.txt \ + cluster.conf-example.xml -confdir=$(sysconfdir)/qpid +confdir = $(sysconfdir)/qpid nobase_conf_DATA=\ qpidc.conf @@ -32,5 +33,23 @@ nobase_sysconf_DATA = \ if HAVE_SASL nobase_sysconf_DATA += \ $(SASL_CONF) - endif + +# Substitute values for directories in init scripts. +# +# We can't use autoconf substitution directly because it leaves +# ${prefix} and ${exec_prefix} unexpanded. Substitute with sed +# scripts. +SUBST="s|!!sysconfdir!!|${sysconfdir}|;s|!!sbindir!!|${sbindir}|;s|!!bindir!!|${bindir}|" +qpidd: qpidd.in + sed $(SUBST) $< > $@ +qpidd-primary: qpidd-primary.in + sed $(SUBST) $< > $@ +cluster.conf-example.xml: cluster.conf-example.xml.in + sed $(SUBST) $< > $@ + +CLEANFILES = qpidd qpidd-primary cluster.conf-example.xml + +initddir = $(sysconfdir)/init.d +nobase_initd_SCRIPTS = qpidd qpidd-primary + diff --git a/cpp/etc/cluster.conf-example.xml.in b/cpp/etc/cluster.conf-example.xml.in new file mode 100644 index 0000000000..14b961a363 --- /dev/null +++ b/cpp/etc/cluster.conf-example.xml.in @@ -0,0 +1,70 @@ +<?xml version="1.0"?> +<!-- +This is an example of a cluster.conf file to run qpidd HA under rgmanager. +This example assumes a 3 node cluster, with nodes named node1, node2 and node3. + +NOTE: fencing is not shown, it should be configured in a real cluster configuration. +--> + +<cluster name="qpid-test" config_version="18"> + <!-- The cluster has 3 nodes. Each has a unique nodid and one vote + for quorum. --> + <clusternodes> + <clusternode name="node1.example.com" nodeid="1"/> + <clusternode name="node2.example.com" nodeid="2"/> + <clusternode name="node3.example.com" nodeid="3"/> + </clusternodes> + <!-- Resouce Manager configuration. --> + <rm> + <!-- + There is a failoverdomain for each node containing just that node. + This lets us stipulate that the qpidd service should always run on each node. + --> + <failoverdomains> + <failoverdomain name="node1-domain" restricted="1"> + <failoverdomainnode name="node1.example.com"/> + </failoverdomain> + <failoverdomain name="node2-domain" restricted="1"> + <failoverdomainnode name="node2.example.com"/> + </failoverdomain> + <failoverdomain name="node3-domain" restricted="1"> + <failoverdomainnode name="node3.example.com"/> + </failoverdomain> + </failoverdomains> + + <resources> + <!-- This script starts a qpidd broker acting as a backup. --> + <script file="!!sysconfdir!!/init.d/qpidd" name="qpidd"/> + + <!-- This script promotes the qpidd broker on this node to primary. --> + <script file="!!sysconfdir!!/init.d/qpidd-primary" name="qpidd-primary"/> + + <!-- This is a virtual IP address for broker replication traffic. --> + <ip address="20.0.10.200" monitor_link="1"/> + + <!-- This is a virtual IP address on a seprate network for client traffic. --> + <ip address="20.0.20.200" monitor_link="1"/> + </resources> + + <!-- There is a qpidd service on each node, it should be restarted if it fails. --> + <service name="node1-qpidd-service" domain="node1-domain" recovery="restart"> + <script ref="qpidd"/> + </service> + <service name="node2-qpidd-service" domain="node2-domain" recovery="restart"> + <script ref="qpidd"/> + </service> + <service name="node3-qpidd-service" domain="node3-domain" recovery="restart"> + <script ref="qpidd"/> + </service> + + <!-- There should always be a single qpidd-primary service, it can run on any node. --> + <service name="qpidd-primary-service" autostart="1" exclusive="0" recovery="relocate"> + <script ref="qpidd-primary"/> + <!-- The primary has the IP addresses for brokers and clients to connect. --> + <ip ref="20.0.10.200"/> + <ip ref="20.0.20.200"/> + </service> + </rm> + <fencedevices/> + <fence_daemon clean_start="0" post_fail_delay="0" post_join_delay="3"/> +</cluster> diff --git a/cpp/etc/qpidd-primary.in b/cpp/etc/qpidd-primary.in new file mode 100755 index 0000000000..39700bead3 --- /dev/null +++ b/cpp/etc/qpidd-primary.in @@ -0,0 +1,102 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +# +# qpidd Startup script for the Qpid messaging daemon. +# + +### BEGIN INIT INFO +# Provides: qpidd-primary +# Required-Start: $qpidd +# Required-Stop: $qpidd +# Default-Start: +# Default-Stop: 0 1 2 3 4 5 6 +# Short-Description: promote qpidd to cluster primary +# Description: Qpidd can be run in an active/passive cluster. Promote a running qpidd to primary. +### END INIT INFO + +# chkconfig: - 85 15 +# description: Qpidd can be run in an active/passive cluster. Promote a running qpidd to primary. +# processname: qpidd + +prog=qpidd + +# Source function library. +. /etc/rc.d/init.d/functions + +if [ -f !!sysconfdir!!/sysconfig/$prog ] ; then + . !!sysconfdir!!/sysconfig/$prog +fi + +# The following variables can be overridden in !!sysconfdir!!/sysconfig/$prog +[[ $QPID_PORT ]] || QPID_PORT=5672 +[[ $QPID_HA ]] || QPID_HA=!!bindir!!/qpid-ha +export QPID_PORT + +RETVAL=0 + +#ensure binary is present and executable +if [[ !(-x $QPID_HA) ]]; then + echo "qpid-ha executable not found or not executable" +fi + +status() { + if $QPID_HA -b localhost:$QPID_PORT status --expect=primary ; then + echo "qpidd is primary" + else + echo "qpidd is not primary" + return 1 + fi +} + +start() { + service qpidd start + echo -n $"Promoting qpid daemon to cluster primary: " + $QPID_HA -b localhost:$QPID_PORT promote + [ "$?" -eq 0 ] && success || failure +} + +stop() { + service qpidd stop +} + +reload() { + echo 1>&2 $"$0: reload not supported" + exit 3 +} + +restart() { + service qpidd restart && start +} + +# See how we were called. +case "$1" in + start|stop|status|restart|reload) + $1 + RETVAL=$? + ;; + force-reload) + restart + ;; + *) + echo 1>&2 $"Usage: $0 {start|stop|status|restart|force-reload}" + exit 2 +esac + +exit $RETVAL diff --git a/cpp/etc/qpidd b/cpp/etc/qpidd.in index 07cbb825d5..2b43625b7d 100755 --- a/cpp/etc/qpidd +++ b/cpp/etc/qpidd.in @@ -39,18 +39,19 @@ prog=qpidd lockfile=/var/lock/subsys/$prog pidfile=/var/run/qpidd.pid +# Source configuration +if [ -f !!sysconfdir!!/sysconfig/$prog ] ; then + . !!sysconfdir!!/sysconfig/$prog +fi + # Source function library. . /etc/rc.d/init.d/functions -if [ -f /etc/sysconfig/$prog ] ; then - . /etc/sysconfig/$prog -fi - RETVAL=0 #ensure binary is present and executable -if [[ !(-x /usr/sbin/$prog) ]] ; then - echo "/usr/sbin/$prog not found or not executable" +if [[ !(-x !!sbindir!!/$prog) ]] ; then + echo "!!sbindir!!/$prog not found or not executable" exit 5 fi @@ -64,7 +65,7 @@ fi start() { [[ $QPID_DATA_DIR ]] || QPID_DATA_DIR=/var/lib/qpidd echo -n $"Starting Qpid AMQP daemon: " - daemon --pidfile $pidfile --check $prog --user qpidd /usr/sbin/$prog --data-dir $QPID_DATA_DIR --daemon $QPIDD_OPTIONS + daemon --pidfile $pidfile --check $prog --user qpidd !!sbindir!!/$prog --data-dir $QPID_DATA_DIR --daemon $QPIDD_OPTIONS RETVAL=$? echo [ $RETVAL = 0 ] && touch $lockfile @@ -72,7 +73,7 @@ start() { touch $pidfile chown qpidd.qpidd $pidfile [ -x /sbin/restorecon ] && /sbin/restorecon $pidfile - runuser - -s /bin/sh qpidd -c "/usr/sbin/$prog --check > $pidfile" + runuser - -s /bin/sh qpidd -c "!!sbindir!!/$prog --check > $pidfile" fi return $RETVAL } |
