From f823a0cf796957b450521d731d37be7af09951ec Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Wed, 27 May 2015 15:00:00 -0400 Subject: common-ha: handle long node names and node names with '-' and '.' in them sourcing the /etc/ganesha/ganesha-ha.conf file seemed like a simple and elegant solution for reading config params, but bash variable names do not allow '-' and '.' in them. also fix incorrect path to shared volume > backport of http://review.gluster.org/10952, BZ 1225572 Change-Id: I0d2e6cb21017472b1e0f764335cf28946cca95f0 BUG: 1226962 Signed-off-by: Kaleb S. KEITHLEY Reviewed-on: http://review.gluster.org/10952 Tested-by: Gluster Build System Reviewed-by: Niels de Vos Reviewed-on: http://review.gluster.org/11034 --- extras/ganesha/config/ganesha-ha.conf.sample | 26 +++++++---- extras/ganesha/ocf/ganesha_nfsd | 4 +- extras/ganesha/scripts/ganesha-ha.sh | 70 ++++++++++++++++------------ 3 files changed, 60 insertions(+), 40 deletions(-) (limited to 'extras') diff --git a/extras/ganesha/config/ganesha-ha.conf.sample b/extras/ganesha/config/ganesha-ha.conf.sample index f8536d39aca..24054abfdff 100644 --- a/extras/ganesha/config/ganesha-ha.conf.sample +++ b/extras/ganesha/config/ganesha-ha.conf.sample @@ -1,12 +1,22 @@ # Name of the HA cluster created. +# must be unique within the subnet HA_NAME="ganesha-ha-360" -# The server from which you intend to mount -# the shared volume. +# +# The gluster server from which to mount the shared data volume. HA_VOL_SERVER="server1" -# The subset of nodes of the Gluster Trusted Pool -# that forms the ganesha HA cluster. IP/Hostname -# is specified. +# +# N.B. you may use short names or long names; you may not use IP addrs. +# Once you select one, stay with it as it will be mildly unpleasant to +# clean up if you switch later on. Ensure that all names - short and/or +# long - are in DNS or /etc/hosts on all machines in the cluster. +# +# The subset of nodes of the Gluster Trusted Pool that form the ganesha +# HA cluster. Hostname is specified. HA_CLUSTER_NODES="server1,server2,..." -# Virtual IPs of each of the nodes specified above. -VIP_server1="10.x.x.x" -VIP_server2="10.x.x.x" +#HA_CLUSTER_NODES="server1.lab.redhat.com,server2.lab.redhat.com,..." +# +# Virtual IPs for each of the nodes specified above. +VIP_server1="10.0.2.1" +VIP_server2="10.0.2.2" +#VIP_server1.lab.redhat.com="10.0.2.1" +#VIP_server2.lab.redhat.com="10.0.2.2" diff --git a/extras/ganesha/ocf/ganesha_nfsd b/extras/ganesha/ocf/ganesha_nfsd index d69b9f4ad47..e064183daef 100644 --- a/extras/ganesha/ocf/ganesha_nfsd +++ b/extras/ganesha/ocf/ganesha_nfsd @@ -105,9 +105,9 @@ ganesha_nfsd_stop() if [ -d /var/lib/nfs ]; then mv /var/lib/nfs /var/lib/nfs.backup - ln -s $OCF_RESKEY_ha_vol_mnt/${long_host}/nfs /var/lib/nfs + ln -s $OCF_RESKEY_ha_vol_mnt/nfs-ganesha/${long_host}/nfs /var/lib/nfs if [ $? -ne 0 ]; then - logger "warning: ln -s $OCF_RESKEY_ha_vol_mnt/${long_host}/nfs /var/lib/nfs failed" + logger "warning: ln -s $OCF_RESKEY_ha_vol_mnt/nfs-ganesha/${long_host}/nfs /var/lib/nfs failed" fi fi diff --git a/extras/ganesha/scripts/ganesha-ha.sh b/extras/ganesha/scripts/ganesha-ha.sh index 79a99c49c33..bd344fa50f1 100755 --- a/extras/ganesha/scripts/ganesha-ha.sh +++ b/extras/ganesha/scripts/ganesha-ha.sh @@ -363,10 +363,7 @@ setup_create_resources() while [[ ${1} ]]; do - # ipaddr=$(grep ^${1} ${HA_CONFIG_FILE} | cut -d = -f 2) - ipaddrx="VIP_${1//-/_}" - - ipaddr=${!ipaddrx} + ipaddr=$(grep "^VIP_${1}=" ${HA_CONFDIR}/ganesha-ha.conf | cut -d = -f 2) pcs -f ${cibfile} resource create ${1}-cluster_ip-1 ocf:heartbeat:IPaddr ip=${ipaddr} cidr_netmask=32 op monitor interval=15s if [ $? -ne 0 ]; then @@ -460,9 +457,7 @@ recreate_resources() local cibfile=${1}; shift while [[ ${1} ]]; do - ipaddrx="VIP_${1//-/_}" - - ipaddr=${!ipaddrx} + ipaddr=$(grep "VIP_${1}=" ${HA_CONFDIR}/ganesha-ha.conf | cut -d = -f 2) pcs -f ${cibfile} resource create ${1}-cluster_ip-1 ocf:heartbeat:IPaddr ip=${ipaddr} cidr_netmask=32 op monitor interval=15s if [ $? -ne 0 ]; then @@ -679,43 +674,52 @@ setup_state_volume() local longname="" local shortname="" local dname="" + local dirname="" longname=$(hostname) dname=${longname#$(hostname -s)} while [[ ${1} ]]; do - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname} ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname} + + if [[ ${1} == *${dname} ]]; then + dirname=${1} + else + dirname=${1}${dname} + fi + + + if [ ! -d ${mnt}/nfs-ganesha/${dirname} ]; then + mkdir ${mnt}/nfs-ganesha/${dirname} fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd fi - touch ${mnt}/nfs-ganesha/${1}${dname}/nfs/state - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4recov ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4recov + touch ${mnt}/nfs-ganesha/${dirname}/nfs/state + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4recov fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4old ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/v4old + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/v4old fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm.bak ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/sm.bak + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/sm.bak fi - if [ ! -d ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/state ]; then - mkdir ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/state + if [ ! -d ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state ]; then + mkdir ${mnt}/nfs-ganesha/${dirname}/nfs/statd/state fi for server in ${HA_SERVERS} ; do - if [ ${server} != ${1}${dname} ]; then - ln -s ${mnt}/nfs-ganesha/${server}/nfs/ganesha ${mnt}/nfs-ganesha/${1}${dname}/nfs/ganesha/${server} - ln -s ${mnt}/nfs-ganesha/${server}/nfs/statd ${mnt}/nfs-ganesha/${1}${dname}/nfs/statd/${server} + if [ ${server} != ${dirname} ]; then + ln -s ${mnt}/nfs-ganesha/${server}/nfs/ganesha ${mnt}/nfs-ganesha/${dirname}/nfs/ganesha/${server} + ln -s ${mnt}/nfs-ganesha/${server}/nfs/statd ${mnt}/nfs-ganesha/${dirname}/nfs/statd/${server} fi done shift @@ -728,10 +732,16 @@ main() { local cmd=${1}; shift HA_CONFDIR=${1}; shift + local ha_conf=${HA_CONFDIR}/ganesha-ha.conf local node="" local vip="" - . ${HA_CONFDIR}/ganesha-ha.conf + ha_name=$(grep ^HA_NAME= ${ha_conf} | cut -d = -f 2) + HA_NAME=${ha_name//\"/} + ha_vol_server=$(grep ^HA_VOL_SERVER= ${ha_conf} | cut -d = -f 2) + HA_VOL_SERVER=${ha_vol_server//\"/} + ha_cluster_nodes=$(grep ^HA_CLUSTER_NODES= ${ha_conf} | cut -d = -f 2) + HA_CLUSTER_NODES=${ha_cluster_nodes//\"/} if [ -e /etc/os-release ]; then RHEL6_PCS_CNAME_OPTION="" -- cgit