github.com/hhrutter/nomad@v0.6.0-rc2.0.20170723054333-80c4b03f0705/website/source/docs/agent/configuration/server.html.md (about)

     1  ---
     2  layout: "docs"
     3  page_title: "server Stanza - Agent Configuration"
     4  sidebar_current: "docs-agent-configuration-server"
     5  description: |-
     6    The "server" stanza configures the Nomad agent to operate in server mode to
     7    participate in scheduling decisions, register with service discovery, handle
     8    join failures, and more.
     9  ---
    10  
    11  # `server` Stanza
    12  
    13  <table class="table table-bordered table-striped">
    14    <tr>
    15      <th width="120">Placement</th>
    16      <td>
    17        <code>**server**</code>
    18      </td>
    19    </tr>
    20  </table>
    21  
    22  
    23  The `server` stanza configures the Nomad agent to operate in server mode to
    24  participate in scheduling decisions, register with service discovery, handle
    25  join failures, and more.
    26  
    27  ```hcl
    28  server {
    29    enabled          = true
    30    bootstrap_expect = 3
    31    retry_join       = ["1.2.3.4", "5.6.7.8"]
    32  }
    33  ```
    34  
    35  ## `server` Parameters
    36  
    37  - `bootstrap_expect` `(int: required)` - Specifies the number of server nodes to
    38    wait for before bootstrapping. It is most common to use the odd-numbered
    39    integers `3` or `5` for this value, depending on the cluster size. A value of
    40    `1` does not provide any fault tolerance and is not recommended for production
    41    use cases.
    42  
    43  - `data_dir` `(string: "[data_dir]/server")` - Specifies the directory to use -
    44    for server-specific data, including the replicated log. By default, this is -
    45    the top-level [data_dir](/docs/agent/configuration/index.html#data_dir)
    46    suffixed with "server", like `"/opt/nomad/server"`. This must be an absolute
    47    path.
    48  
    49  - `enabled` `(bool: false)` - Specifies if this agent should run in server mode.
    50    All other server options depend on this value being set.
    51  
    52  - `enabled_schedulers` `(array<string>: [all])` - Specifies which sub-schedulers
    53    this server will handle. This can be used to restrict the evaluations that
    54    worker threads will dequeue for processing.
    55  
    56  - `encrypt` `(string: "")` - Specifies the secret key to use for encryption of
    57    Nomad server's gossip network traffic. This key must be 16 bytes that are
    58    base64-encoded. The provided key is automatically persisted to the data
    59    directory and loaded automatically whenever the agent is restarted. This means
    60    that to encrypt Nomad server's gossip protocol, this option only needs to be
    61    provided once on each agent's initial startup sequence. If it is provided
    62    after Nomad has been initialized with an encryption key, then the provided key
    63    is ignored and a warning will be displayed. See the
    64    [Nomad encryption documentation][encryption] for more details on this option
    65    and its impact on the cluster.
    66  
    67  - `node_gc_threshold` `(string: "24h")` - Specifies how long a node must be in a
    68    terminal state before it is garbage collected and purged from the system. This
    69    is specified using a label suffix like "30s" or "1h".
    70  
    71  - `job_gc_threshold` `(string: "4h")` - Specifies the minimum time a job must be
    72    in the terminal state before it is eligible for garbage collection. This is
    73    specified using a label suffix like "30s" or "1h".
    74  
    75  - `eval_gc_threshold` `(string: "1h")` - Specifies the minimum time an
    76    evaluation must be in the terminal state before it is eligible for garbage
    77    collection. This is specified using a label suffix like "30s" or "1h".
    78  
    79  - `deployment_gc_threshold` `(string: "1h")` - Specifies the minimum time a
    80    deployment must be in the terminal state before it is eligible for garbage
    81    collection. This is specified using a label suffix like "30s" or "1h".
    82  
    83  - `heartbeat_grace` `(string: "10s")` - Specifies the additional time given as a
    84    grace period beyond the heartbeat TTL of nodes to account for network and
    85    processing delays as well as clock skew. This is specified using a label
    86    suffix like "30s" or "1h".
    87  
    88  - `min_heartbeat_ttl` `(string: "10s")` - Specifies the minimum time between
    89    node heartbeats. This is used as a floor to prevent excessive updates. This is
    90    specified using a label suffix like "30s" or "1h". Lowering the minimum TTL is
    91    a tradeoff as it lowers failure detection time of nodes at the tradeoff of
    92    false positives and increased load on the leader.
    93  
    94  - `max_heartbeats_per_second` `(float: 50.0)` - Specifies the maximum target
    95    rate of heartbeats being processed per second. This allows the TTL to be
    96    increased to meet the target rate. Increasing the maximum heartbeats per
    97    second is a tradeoff as it lowers failure detection time of nodes at the
    98    tradeoff of false positives and increased load on the leader.
    99  
   100  - `num_schedulers` `(int: [num-cores])` - Specifies the number of parallel
   101    scheduler threads to run. This can be as many as one per core, or `0` to
   102    disallow this server from making any scheduling decisions. This defaults to
   103    the number of CPU cores.
   104  
   105  - `protocol_version` `(int: 1)` - Specifies the Nomad protocol version to use
   106    when communicating with other Nomad servers. This value is typically not
   107    required as the agent internally knows the latest version, but may be useful
   108    in some upgrade scenarios.
   109  
   110  - `rejoin_after_leave` `(bool: false)` - Specifies if Nomad will ignore a
   111    previous leave and attempt to rejoin the cluster when starting. By default,
   112    Nomad treats leave as a permanent intent and does not attempt to join the
   113    cluster again when starting. This flag allows the previous state to be used to
   114    rejoin the cluster.
   115  
   116  - `retry_join` `(array<string>: [])` - Specifies a list of server addresses to
   117    retry joining if the first attempt fails. This is similar to
   118    [`start_join`](#start_join), but only invokes if the initial join attempt
   119    fails. The list of addresses will be tried in the order specified, until one
   120    succeeds. After one succeeds, no further addresses will be contacted. This is
   121    useful for cases where we know the address will become available eventually.
   122    Use `retry_join` with an array as a replacement for `start_join`, **do not use
   123    both options**. See the [server address format](#server-address-format)
   124    section for more information on the format of the string.
   125  
   126  - `retry_interval` `(string: "30s")` - Specifies the time to wait between retry
   127    join attempts.
   128  
   129  - `retry_max` `(int: 0)` - Specifies the maximum number of join attempts to be
   130    made before exiting with a return code of 1. By default, this is set to 0
   131    which is interpreted as infinite retries.
   132  
   133  - `start_join` `(array<string>: [])` - Specifies a list of server addresses to
   134    join on startup. If Nomad is unable to join with any of the specified
   135    addresses, agent startup will fail. See the
   136    [server address format](#server-address-format) section for more information
   137    on the format of the string.
   138  
   139  ### Server Address Format
   140  
   141  This section describes the acceptable syntax and format for describing the
   142  location of a Nomad server. There are many ways to reference a Nomad server,
   143  including directly by IP address and resolving through DNS.
   144  
   145  #### Directly via IP Address
   146  
   147  It is possible to address another Nomad server using its IP address. This is
   148  done in the `ip:port` format, such as:
   149  
   150  ```
   151  1.2.3.4:5678
   152  ```
   153  
   154  If the port option is omitted, it defaults to the Serf port, which is 4648
   155  unless configured otherwise:
   156  
   157  ```
   158  1.2.3.4 => 1.2.3.4:4648
   159  ```
   160  
   161  #### Via Domains or DNS
   162  
   163  It is possible to address another Nomad server using its DNS address. This is
   164  done in the `address:port` format, such as:
   165  
   166  ```
   167  nomad-01.company.local:5678
   168  ```
   169  
   170  If the port option is omitted, it defaults to the Serf port, which is 4648
   171  unless configured otherwise:
   172  
   173  ```
   174  nomad-01.company.local => nomad-01.company.local:4648
   175  ```
   176  
   177  ## `server` Examples
   178  
   179  ### Common Setup
   180  
   181  This example shows a common Nomad agent `server` configuration stanza. The two
   182  IP addresses could also be DNS, and should point to the other Nomad servers in
   183  the cluster
   184  
   185  ```hcl
   186  server {
   187    enabled          = true
   188    bootstrap_expect = 3
   189    retry_join       = ["1.2.3.4", "5.6.7.8"]
   190  }
   191  ```
   192  
   193  ### Configuring Data Directory
   194  
   195  This example shows configuring a custom data directory for the server data.
   196  
   197  ```hcl
   198  server {
   199    data_dir = "/opt/nomad/server"
   200  }
   201  ```
   202  
   203  ### Automatic Bootstrapping
   204  
   205  The Nomad servers can automatically bootstrap if Consul is configured. For a
   206  more detailed explanation, please see the
   207  [automatic Nomad bootstrapping documentation](/guides/cluster/automatic.html).
   208  
   209  ### Restricting Schedulers
   210  
   211  This example shows restricting the schedulers that are enabled as well as the
   212  maximum number of cores to utilize when participating in scheduling decisions:
   213  
   214  ```hcl
   215  server {
   216    enabled            = true
   217    enabled_schedulers = ["batch", "service"]
   218    num_schedulers     = 7
   219  }
   220  ```
   221  
   222  [encryption]: /docs/agent/encryption.html "Nomad Agent Encryption"