mirror of https://github.com/schoebel/mars
286 lines
11 KiB
Plaintext
286 lines
11 KiB
Plaintext
\begin{verbatim}
|
|
verbose=1
|
|
Usage:
|
|
./football.sh --help [--verbose]
|
|
Show help
|
|
./football.sh --variable=<value>
|
|
Override any shell variable
|
|
|
|
Actions for resource migration:
|
|
|
|
./football.sh migrate <resource> <target_primary> [<target_secondary>]
|
|
Run the sequence
|
|
migrate_prepare ; migrate_wait ; migrate_finish; migrate_cleanup.
|
|
|
|
./football.sh migrate_prepare <resource> <target_primary> [<target_secondary>]
|
|
Allocate LVM space at the targets and start MARS replication.
|
|
|
|
./football.sh migrate_wait <resource> <target_primary> [<target_secondary>]
|
|
Wait until MARS replication reports UpToDate.
|
|
|
|
./football.sh migrate_finish <resource> <target_primary> [<target_secondary>]
|
|
Call hooks for handover to the targets.
|
|
|
|
./football.sh migrate_cleanup <resource>
|
|
Remove old / currently unused LV replicas from MARS and deallocate
|
|
from LVM.
|
|
|
|
Actions for inplace FS shrinking:
|
|
|
|
./football.sh shrink <resource> <percent>
|
|
Run the sequence shrink_prepare ; shrink_finish ; shrink_cleanup.
|
|
|
|
./football.sh shrink_prepare <resource> [<percent>]
|
|
Allocate temporary LVM space (when possible) and create initial
|
|
raw FS copy.
|
|
Default percent value(when left out) is 85.
|
|
|
|
./football.sh shrink_finish <resource>
|
|
Incrementally update the FS copy, swap old <=> new copy with
|
|
small downtime.
|
|
|
|
./football.sh shrink_cleanup <resource>
|
|
Remove old FS copy from LVM.
|
|
|
|
Actions for inplace FS extension:
|
|
|
|
./football.sh extend <resource> <percent>
|
|
|
|
Combined actions:
|
|
|
|
./football.sh migrate+shrink <resource> <target_primary> [<target_secondary>] [<percent>]
|
|
Similar to migrate ; shrink but produces less network traffic.
|
|
Default percent value (when left out) is 85.
|
|
|
|
./football.sh migrate+shrink+back <resource> <tmp_primary> [<percent>]
|
|
Migrate temporarily to <tmp_primary>, then shrink there,
|
|
finally migrate back to old primary and secondaries.
|
|
Default percent value (when left out) is 85.
|
|
|
|
Actions for (manual) repair in emergency situations:
|
|
|
|
./football.sh manual_migrate_config <resource> <target_primary> [<target_secondary>]
|
|
Transfer only the cluster config, without changing the MARS replicas.
|
|
This does no resource stopping / restarting.
|
|
Useful for reverting a failed migration.
|
|
|
|
./football.sh manual_config_update <hostname>
|
|
Only update the cluster config, without changing anything else.
|
|
Useful for manual repair of failed migration.
|
|
|
|
./football.sh manual_merge_cluster <hostname1> <hostname2>
|
|
Run "marsadm merge-cluster" for the given hosts.
|
|
Hostnames must be from different (former) clusters.
|
|
|
|
./football.sh manual_split_cluster <hostname_list>
|
|
Run "marsadm split-cluster" at the given hosts.
|
|
Useful for fixing failed / asymmetric splits.
|
|
Hint: provide _all_ hostnames which have formerly participated
|
|
in the cluster.
|
|
|
|
./football.sh repair_vm <resource> <primary_candidate_list>
|
|
Try to restart the VM <resource> on one of the given machines.
|
|
Useful during unexpected customer downtime.
|
|
|
|
./football.sh repair_mars <resource> <primary_candidate_list>
|
|
Before restarting the VM like in repair_vm, try to find a local
|
|
LV where a stand-alone MARS resource can be found and built up.
|
|
Use this only when the MARS resources are gone, and when you are
|
|
desperate. Problem: this will likely create a MARS setup which is
|
|
not usable for production, and therefore must be corrected later
|
|
by hand. Use this only during an emergency situation in order to
|
|
get the customers online again, while buying the downsides of this
|
|
command.
|
|
|
|
./football.sh manual_lock <item> <host_list>
|
|
./football.sh manual_unlock <item> <host_list>
|
|
Manually lock or unlock an item at all of the given hosts, in
|
|
an atomic fashion. In most cases, use "ALL" for the item.
|
|
|
|
Global maintenance:
|
|
|
|
./football.sh lv_cleanup <resource>
|
|
|
|
General features:
|
|
|
|
- Instead of <percent>, an absolute amount of storage with suffix
|
|
'k' or 'm' or 'g' can be given.
|
|
|
|
- When <resource> is currently stopped, login to the container is
|
|
not possible, and in turn the hypervisor node and primary storage node
|
|
cannot be automatically determined. In such a case, the missing
|
|
nodes can be specified via the syntax
|
|
<resource>:<hypervisor>:<primary_storage>
|
|
|
|
- The following LV suffixes are used (naming convention):
|
|
-tmp = currently emerging version for shrinking
|
|
-preshrink = old version before shrinking took place
|
|
|
|
- By adding the option --screener, you can handover football execution
|
|
to ./screener.sh .
|
|
When some --enable_*_waiting is also added, then the critical
|
|
sections involving customer downtime are temporarily halted until
|
|
some sysadmins says "screener.sh continue $resource" or
|
|
attaches to the sessions and presses the RETURN key.
|
|
|
|
## football_includes
|
|
# List of directories where football-*.sh and football-*.conf
|
|
# files can be found.
|
|
football_includes="${football_includes:-/usr/lib/mars/plugins /etc/mars/plugins $script_dir/plugins $HOME/.mars/plugins ./plugins}"
|
|
|
|
## football_confs
|
|
# Another list of directories where football-*.conf files can be found.
|
|
# These are sourced in a second pass after $football_includes.
|
|
# Thus you can change this during the first pass.
|
|
football_confs="${football_confs:-/usr/lib/mars/confs /etc/mars/confs $script_dir/confs $HOME/.mars/confs ./confs}"
|
|
|
|
## football_creds
|
|
# List of directories where various credential files can be found.
|
|
football_creds="${football_creds:-/usr/lib/mars/creds /etc/mars/creds $script_dir/creds $script_dir $HOME/.mars/creds ./creds}"
|
|
|
|
## dry_run
|
|
# When set, actions are only simulated.
|
|
dry_run=${dry_run:-0}
|
|
|
|
## verbose
|
|
# increase speakiness.
|
|
verbose=${verbose:-0}
|
|
|
|
## confirm
|
|
# Only for debugging: manually started operations can be
|
|
# manually checked and confirmed before actually starting opersions.
|
|
confirm=${confirm:-1}
|
|
|
|
## force
|
|
# Normally, shrinking and extending will only be started if there
|
|
# is something to do.
|
|
# Enable this for debugging and testing: the check is then skipped.
|
|
force=${force:-0}
|
|
|
|
## debug_injection_point
|
|
# RTFS don't set this unless you are a developer knowing what you are doing.
|
|
debug_injection_point="${debug_injection_point:-0}"
|
|
|
|
## football_logdir
|
|
# Where the logfiles should be created.
|
|
# HINT: after playing Football in masses for a whiile, your $logdir will
|
|
# be easily populated with hundreds or thousands of logfiles.
|
|
# Set this to your convenience.
|
|
football_logdir="${football_logdir:-${logdir:-$HOME/football-logs}}"
|
|
|
|
## screener
|
|
# When enabled, handover execution to the screener.
|
|
# Very useful for running Football in masses.
|
|
screener="${screener:-0}"
|
|
|
|
## min_space
|
|
# When testing / debugging with extremely small LVs, it may happen
|
|
# that mkfs refuses to create extemely small filesystems.
|
|
# Use this to ensure a minimum size.
|
|
min_space="${min_space:-20000000}"
|
|
|
|
## cache_repeat_lapse
|
|
# When using the waiting capabilities of screener, and when waits
|
|
# are lasting very long, your dentry cache may become cold.
|
|
# Use this for repeated refreshes of the dentry cache after some time.
|
|
cache_repeat_lapse="${cache_repeat_lapse:-120}" # Minutes
|
|
|
|
## ssh_opt
|
|
# Useful for customization to your ssh environment.
|
|
ssh_opt="${ssh_opt:--4 -A -o StrictHostKeyChecking=no -o ForwardX11=no -o KbdInteractiveAuthentication=no -o VerifyHostKeyDNS=no}"
|
|
|
|
## rsync_opt
|
|
# The rsync options in general.
|
|
# IMPORTANT: some intermediate progress report is absolutely needed,
|
|
# because otherwise a false-positive TIMEOUT may be assumed when
|
|
# no output is generated for several hours.
|
|
rsync_opt="${rsync_opt:- -aSH --info=progress2,STATS}"
|
|
|
|
## rsync_opt_prepare
|
|
# Additional rsync options for preparation and updating
|
|
# of the temporary shrink mirror filesystem.
|
|
rsync_opt_prepare="${rsync_opt_prepare:---exclude='.filemon2' --delete}"
|
|
|
|
## rsync_nice
|
|
# Typically, the preparation steps are run with background priority.
|
|
rsync_nice="${rsync_nice:-nice -19}"
|
|
|
|
## rsync_repeat_prepare and rsync_repeat_hot
|
|
# Tuning: increases the reliability of rsync and ensures that the dentry cache
|
|
# remains hot.
|
|
rsync_repeat_prepare="${rsync_repeat_prepare:-5}"
|
|
rsync_repeat_hot="${rsync_repeat_hot:-3}"
|
|
|
|
## rsync_skip_lines
|
|
# Number of rsync lines to skip in output (avoid overflow of logfiles).
|
|
rsync_skip_lines="${rsync_skip_lines:-1000}"
|
|
|
|
## wait_timeout
|
|
# Avoid infinite loops upon waiting.
|
|
wait_timeout="${wait_timeout:-$(( 24 * 60 ))}" # Minutes
|
|
|
|
## lvremove_opt
|
|
# Some LVM versions are requiring this for unattended batch operations.
|
|
lvremove_opt="${lvremove_opt:--f}"
|
|
|
|
## critical_status
|
|
# This is the "magic" exit code indicating _criticality_
|
|
# of a failed command.
|
|
critical_status="${critical_status:-199}"
|
|
|
|
## serious_status
|
|
# This is the "magic" exit code indicating _seriosity_
|
|
# of a failed command.
|
|
serious_status="${serious_status:-198}"
|
|
|
|
## pre_hand or --pre-hand=
|
|
# Set this to do an ordinary handover to a new start position
|
|
# (in the source cluster) before doing anything else.
|
|
# This may be used for handover to a different datacenter,
|
|
# in order to minimize cross traffic between datacenters.
|
|
pre_hand="${pre_hand:-}"
|
|
|
|
## post_hand or --post-hand=
|
|
# Set this to do an ordinary handover to a final position
|
|
# (in the target cluster) after everything has successfully finished.
|
|
# This may be used to establish a uniform default running location.
|
|
post_hand="${post_hand:-}"
|
|
|
|
## lock_break_timeout
|
|
# When remote ssh commands are failing, remote locks may sustain forever.
|
|
# Avoid deadlocks by breaking remote locks after this timeout has elapsed.
|
|
# NOTICE: these type of locks are only intended for short-term locking.
|
|
lock_break_timeout="${lock_break_timeout:-3600}" # seconds
|
|
|
|
## startup_when_locked
|
|
# When == 0:
|
|
# Don't abort and don't wait when a lock is detected at startup.
|
|
# When == 1 and when enable_startup_waiting=1:
|
|
# Wait until the lock is gone.
|
|
# When == 2:
|
|
# Abort start of script execution when a lock is detected.
|
|
# Later, when a locks are set _during_ execution, they will
|
|
# be obeyed when enable_*_waiting is set (instead), and will
|
|
# lead to waits instead of aborts.
|
|
startup_when_locked="${startup_when_locked:-1}"
|
|
|
|
## user_name
|
|
# Normally automatically derived from ssh agent or from $LOGNAME.
|
|
# Please override this only when really necessary.
|
|
export user_name="${user_name:-$(get_real_ssh_user)}"
|
|
export user_name="${user_name:-$LOGNAME}"
|
|
|
|
## replace_ssh_id_file
|
|
# When set, replace current ssh user with this one.
|
|
# The new user should hot have a passphrase.
|
|
# Useful for logging out the original user (interrupting the original
|
|
# ssh agent chain).
|
|
replace_ssh_id_file="${replace_ssh_id_file:-}"
|
|
|
|
|
|
PLUGIN football-1and1config
|
|
|
|
1&1 specfic plugin for dealing with the cm3 clusters
|
|
and its concrete configuration .
|
|
\end{verbatim}
|