<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Apache Aurora</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <link href="/assets/css/main.css" rel="stylesheet">
	<!-- Analytics -->
	<script type="text/javascript">
		  var _gaq = _gaq || [];
		  _gaq.push(['_setAccount', 'UA-45879646-1']);
		  _gaq.push(['_setDomainName', 'apache.org']);
		  _gaq.push(['_trackPageview']);

		  (function() {
		    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
		    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
		  })();
	</script>
  </head>
  <body>
    <div class="container-fluid section-header">
  <div class="container">
    <div class="nav nav-bar">
    <a href="/"><img src="/assets/img/aurora_logo_dkbkg.svg" width="300" alt="Transparent Apache Aurora logo with dark background"/></a>
    <ul class="nav navbar-nav navbar-right">
      <li><a href="/documentation/latest/">Documentation</a></li>
      <li><a href="/community/">Community</a></li>
      <li><a href="/downloads/">Downloads</a></li>
      <li><a href="/blog/">Blog</a></li>
    </ul>
    </div>
  </div>
</div>
	
    <div class="container-fluid">
      <div class="container content">
        <div class="col-md-12 documentation">
<h5 class="page-header text-uppercase">Documentation
<select onChange="window.location.href='/documentation/' + this.value + '/storage-config/'"
        value="0.6.0-incubating">
  <option value="0.22.0"
    >
    0.22.0
      (latest)
  </option>
  <option value="0.21.0"
    >
    0.21.0
  </option>
  <option value="0.20.0"
    >
    0.20.0
  </option>
  <option value="0.19.1"
    >
    0.19.1
  </option>
  <option value="0.19.0"
    >
    0.19.0
  </option>
  <option value="0.18.1"
    >
    0.18.1
  </option>
  <option value="0.18.0"
    >
    0.18.0
  </option>
  <option value="0.17.0"
    >
    0.17.0
  </option>
  <option value="0.16.0"
    >
    0.16.0
  </option>
  <option value="0.15.0"
    >
    0.15.0
  </option>
  <option value="0.14.0"
    >
    0.14.0
  </option>
  <option value="0.13.0"
    >
    0.13.0
  </option>
  <option value="0.12.0"
    >
    0.12.0
  </option>
  <option value="0.11.0"
    >
    0.11.0
  </option>
  <option value="0.10.0"
    >
    0.10.0
  </option>
  <option value="0.9.0"
    >
    0.9.0
  </option>
  <option value="0.8.0"
    >
    0.8.0
  </option>
  <option value="0.7.0-incubating"
    >
    0.7.0-incubating
  </option>
  <option value="0.6.0-incubating"
    selected="selected">
    0.6.0-incubating
  </option>
  <option value="0.5.0-incubating"
    >
    0.5.0-incubating
  </option>
</select>
</h5>
<h1 id="storage-configuration-and-maintenance">Storage Configuration And Maintenance</h1>

<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#scheduler-storage-configuration-flags">Scheduler storage configuration flags</a>

<ul>
<li><a href="#mesos-replicated-log-configuration-flags">Mesos replicated log configuration flags</a></li>
<li><a href="#-native_log_quorum_size">-native<em>log</em>quorum_size</a></li>
<li><a href="#-native_log_file_path">-native<em>log</em>file_path</a></li>
<li><a href="#-native_log_zk_group_path">-native<em>log</em>zk<em>group</em>path</a></li>
<li><a href="#backup-configuration-flags">Backup configuration flags</a></li>
<li><a href="#-backup_interval">-backup_interval</a></li>
<li><a href="#-backup_dir">-backup_dir</a></li>
<li><a href="#-max_saved_backups">-max<em>saved</em>backups</a></li>
</ul></li>
<li><a href="#recovering-from-a-scheduler-backup">Recovering from a scheduler backup</a>

<ul>
<li><a href="#summary">Summary</a></li>
<li><a href="#preparation">Preparation</a></li>
<li><a href="#cleanup-and-re-initialize-mesos-replicated-log">Cleanup and re-initialize Mesos replicated log</a></li>
<li><a href="#restore-from-backup">Restore from backup</a></li>
<li><a href="#cleanup">Cleanup</a></li>
</ul></li>
</ul>

<h2 id="overview">Overview</h2>

<p>This document summarizes Aurora storage configuration and maintenance details and is
intended for use by anyone deploying and/or maintaining Aurora.</p>

<p>For a high level overview of the Aurora storage architecture refer to <a href="/documentation/0.6.0-incubating/storage/">this document</a>.</p>

<h2 id="scheduler-storage-configuration-flags">Scheduler storage configuration flags</h2>

<p>Below is a summary of scheduler storage configuration flags that either don&rsquo;t have default values
or require attention before deploying in a production environment.</p>

<h3 id="mesos-replicated-log-configuration-flags">Mesos replicated log configuration flags</h3>

<h4 id="nativelogquorum_size">-native<em>log</em>quorum_size</h4>

<p>Defines the Mesos replicated log quorum size. See
<a href="/documentation/0.6.0-incubating/deploying-aurora-scheduler/#replicated-log-configuration">the replicated log configuration document</a>
on how to choose the right value.</p>

<h4 id="nativelogfile_path">-native<em>log</em>file_path</h4>

<p>Location of the Mesos replicated log files. Consider allocating a dedicated disk (preferably SSD)
for Mesos replicated log files to ensure optimal storage performance.</p>

<h4 id="nativelogzkgrouppath">-native<em>log</em>zk<em>group</em>path</h4>

<p>ZooKeeper path used for Mesos replicated log quorum discovery.</p>

<p>See <a href="https://github.com/apache/aurora/blob/#{git_tag}/src/main/java/org/apache/aurora/scheduler/log/mesos/MesosLogStreamModule.java">code</a>) for
other available Mesos replicated log configuration options and default values.</p>

<h3 id="backup-configuration-flags">Backup configuration flags</h3>

<p>Configuration options for the Aurora scheduler backup manager.</p>

<h4 id="backup_interval">-backup_interval</h4>

<p>The interval on which the scheduler writes local storage backups.  The default is every hour.</p>

<h4 id="backup_dir">-backup_dir</h4>

<p>Directory to write backups to.</p>

<h4 id="maxsavedbackups">-max<em>saved</em>backups</h4>

<p>Maximum number of backups to retain before deleting the oldest backup(s).</p>

<h2 id="recovering-from-a-scheduler-backup">Recovering from a scheduler backup</h2>

<ul>
<li><a href="#overview">Overview</a></li>
<li><a href="#preparation">Preparation</a></li>
<li><a href="#assess-mesos-replicated-log-damage">Assess Mesos replicated log damage</a></li>
<li><a href="#restore-from-backup">Restore from backup</a></li>
<li><a href="#cleanup">Cleanup</a></li>
</ul>

<p><strong>Be sure to read the entire page before attempting to restore from a backup, as it may have
unintended consequences.</strong></p>

<h3 id="summary">Summary</h3>

<p>The restoration procedure replaces the existing (possibly corrupted) Mesos replicated log with an
earlier, backed up, version and requires all schedulers to be taken down temporarily while
restoring. Once completed, the scheduler state resets to what it was when the backup was created.
This means any jobs/tasks created or updated after the backup are unknown to the scheduler and will
be killed shortly after the cluster restarts. All other tasks continue operating as normal.</p>

<p>Usually, it is a bad idea to restore a backup that is not extremely recent (i.e. older than a few
hours). This is because the scheduler will expect the cluster to look exactly as the backup does,
so any tasks that have been rescheduled since the backup was taken will be killed.</p>

<h3 id="preparation">Preparation</h3>

<p>Follow these steps to prepare the cluster for restoring from a backup:</p>

<ul>
<li><p>Stop all scheduler instances</p></li>
<li><p>Consider blocking external traffic on a port defined in <code>-http_port</code> for all schedulers to
prevent users from interacting with the scheduler during the restoration process. This will help
troubleshooting by reducing the scheduler log noise and prevent users from making changes that will
be erased after the backup snapshot is restored</p></li>
<li><p>Next steps are required to put scheduler into a partially disabled state where it would still be
able to accept storage recovery requests but unable to schedule or change task states. This may be
accomplished by updating the following scheduler configuration options:</p>

<ul>
<li>Set <code>-mesos_master_address</code> to a non-existent zk address. This will prevent scheduler from
registering with Mesos. E.g.: <code>-mesos_master_address=zk://localhost:2181</code></li>
<li><code>-max_registration_delay</code> - set to sufficiently long interval to prevent registration timeout
and as a result scheduler suicide. E.g: <code>-max_registration_delay=360min</code></li>
<li>Make sure <code>-gc_executor_path</code> option is not set to prevent accidental task GC. This is
important as scheduler will attempt to reconcile the cluster state and will kill all tasks when
restarted with an empty Mesos replicated log.</li>
</ul></li>
<li><p>Restart all schedulers</p></li>
</ul>

<h3 id="cleanup-and-re-initialize-mesos-replicated-log">Cleanup and re-initialize Mesos replicated log</h3>

<p>Get rid of the corrupted files and re-initialize Mesos replicate log:</p>

<ul>
<li>Stop schedulers</li>
<li>Delete all files under <code>-native_log_file_path</code> on all schedulers</li>
<li>Initialize Mesos replica&rsquo;s log file: <code>mesos-log initialize &lt;-native_log_file_path&gt;</code></li>
<li>Restart schedulers</li>
</ul>

<h3 id="restore-from-backup">Restore from backup</h3>

<p>At this point the scheduler is ready to rehydrate from the backup:</p>

<ul>
<li><p>Identify the leading scheduler by:</p>

<ul>
<li>running <code>aurora_admin get_scheduler &lt;cluster&gt;</code> - if scheduler is responsive</li>
<li>examining scheduler logs</li>
<li>or examining Zookeeper registration under the path defined by <code>-zk_endpoints</code>
and <code>-serverset_path</code></li>
</ul></li>
<li><p>Locate the desired backup file, copy it to the leading scheduler and stage recovery by running
the following command on a leader
<code>aurora_admin scheduler_stage_recovery &lt;cluster&gt; scheduler-backup-&lt;yyyy-MM-dd-HH-mm&gt;</code></p></li>
<li><p>At this point, the recovery snapshot is staged and available for manual verification/modification
via <code>aurora_admin scheduler_print_recovery_tasks</code> and <code>scheduler_delete_recovery_tasks</code> commands.
See <code>aurora_admin help &lt;command&gt;</code> for usage details.</p></li>
<li><p>Commit recovery. This instructs the scheduler to overwrite the existing Mesosreplicated log with
the provided backup snapshot and initiate a mandatory failover
<code>aurora_admin scheduler_commit_recovery &lt;cluster&gt;</code></p></li>
</ul>

<h3 id="cleanup">Cleanup</h3>

<p>Undo any modification done during <a href="#preparation">Preparation</a> sequence.</p>

</div>

      </div>
    </div>
  	<div class="container-fluid section-footer buffer">
      <div class="container">
        <div class="row">
		  <div class="col-md-2 col-md-offset-1"><h3>Quick Links</h3>
		  <ul>
		    <li><a href="/downloads/">Downloads</a></li>
            <li><a href="/community/">Mailing Lists</a></li>
			<li><a href="http://issues.apache.org/jira/browse/AURORA">Issue Tracking</a></li>
			<li><a href="/documentation/latest/contributing/">How To Contribute</a></li>     
		  </ul>
	      </div>
		  <div class="col-md-2"><h3>The ASF</h3>
          <ul>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
            <li><a href="http://www.apache.org/security/">Security</a></li>
          </ul>
		  </div>
		  <div class="col-md-6">
			<p class="disclaimer">&copy; 2014-2017 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. The <a href="https://www.flickr.com/photos/trondk/12706051375/">Aurora Borealis IX photo</a> displayed on the homepage is available under a <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons BY-NC-ND 2.0 license</a>. Apache, Apache Aurora, and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
        </div>
      </div>
    </div>

  </body>
</html>
