diff --git a/doc/source/afs.rst b/doc/source/afs.rst index cdc69437f4..26b5455054 100644 --- a/doc/source/afs.rst +++ b/doc/source/afs.rst @@ -286,10 +286,16 @@ It is worth evaluating these settings periodically Updating Settings ~~~~~~~~~~~~~~~~~ -If you wish to update the settings for an existing server, you can -stop and remove the existing ``bnode`` (the collection of processes -the overseer is monitoring, created via ``bos create`` above) and -recreate it. +The helper script :git_file:`tools/afs-server-restart.sh` is a helper +script to restart AFS servers, and optionally enable audit logging on +the servers which is sometimes useful for debugging afs clients. You +can edit settings in the script and run ``afs-server-restart.sh +restart`` (or ``restart-auditing``). + +If you wish to update the settings for an existing server manually, +you can stop and remove the existing ``bnode`` (the collection of +processes the overseer is monitoring, created via ``bos create`` +above) and recreate it. For example :: diff --git a/tools/afs-server-restart.sh b/tools/afs-server-restart.sh new file mode 100755 index 0000000000..d5394fb28f --- /dev/null +++ b/tools/afs-server-restart.sh @@ -0,0 +1,120 @@ +#!/bin/bash + +# Copyright 2019 Red Hat, Inc. +# +# Licensed 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. + +# +# Start/stop AFS servers +# +# Usage: +# +# 1) run this authenticated with admin account +# (mirror-update.opendev.org is one choice with everything setup, +# but can do locally) +# +# $ kinit $username/admin +# $ aklog +# +# 2) afs-service-restart.sh <restart|restart-auditing|start|start-auditing|stop> +# +# 3) If enabled, audit logs will be in a timestampped /opt file +# +# + +SERVERS=(afs01.dfw.openstack.org afs02.dfw.openstack.org afs01.ord.openstack.org) + +# See AFS system-config documentation for discussion of parameters +DAFILESERVER_OPTS=" +-L -p 242 -busyat 600 -rxpck 700 +-s 1200 -l 1200 -cb 2000000 -b 240 -vc 1200 +-udpsize 131071 -sendsize 131071" + +TIMESTAMP=$(date +%s) + +function stop_server { + local afs_host=$1 + + echo "Stopping server $afs_host" + bos stop -server $afs_host -instance dafs -wait + sleep 5 + bos delete -server $afs_host -instance dafs + sleep 5 + echo "Done" +} + +function start_server { + local afs_host=$1 + local audit_log=$2 + local opts=$DAFILESERVER_OPTS + local with_log="" + + if [[ $audit_log == "true" ]]; then + opts+=" -auditlog /opt/dafileserver.audit.$TIMESTAMP.log" + with_log=" (with audit logging) " + fi + + echo "Enable server $afs_host $with_log" + + bos create -server $afs_host -instance dafs -type dafs \ + -cmd "/usr/lib/openafs/dafileserver ${opts}" \ + -cmd /usr/lib/openafs/davolserver \ + -cmd /usr/lib/openafs/salvageserver \ + -cmd /usr/lib/openafs/dasalvager +} + +if [[ $1 == "start" ]]; then + + for server in ${SERVERS[@]}; do + start_server $server false + done + +elif [[ $1 == "start-auditing" ]]; then + + for server in ${SERVERS[@]}; do + start_server $server true + done + +elif [[ $1 == "restart" ]]; then + + for server in ${SERVERS[@]}; do + stop_server $server + sleep 2 + start_server $server false + done + +elif [[ $1 == "restart-auditing" ]]; then + + for server in ${SERVERS[@]}; do + stop_server $server + sleep 2 + start_server $server true + done + +elif [[ $1 == "stop" ]]; then + + echo "*** JUST CHECKING YOU REALLY WANT TO STOP ALL SERVERS ***" + echo "It may be better to restart so the servers aren't all offline" + echo "I will wait 10 seconds, ctrl-c to cancel now" + sleep 10 + + for server in ${SERVERS[@]}; do + stop_server $server + done + +else + + echo "*** usage: <restart|restart-auditing|start|start-auditing|stop>" + exit 1 + +fi