66 lines
2.2 KiB
Markdown
66 lines
2.2 KiB
Markdown
|
---
|
||
|
layout: "docs"
|
||
|
page_title: "Manually Bootstrapping a Nomad Cluster"
|
||
|
sidebar_current: "docs-cluster-manual"
|
||
|
description: |-
|
||
|
Learn how to manually bootstrap a Nomad cluster using the server-join
|
||
|
command. This section also discusses Nomad federation across multiple
|
||
|
datacenters and regions.
|
||
|
---
|
||
|
|
||
|
# Manual Bootstrapping
|
||
|
|
||
|
Manually bootstrapping a Nomad cluster does not rely on additional tooling, but
|
||
|
does require operator participation in the cluster formation process. When
|
||
|
bootstrapping, Nomad servers and clients must be started and informed with the
|
||
|
address of at least one Nomad server.
|
||
|
|
||
|
As you can tell, this creates a chicken-and-egg problem where one server must
|
||
|
first be fully bootstrapped and configured before the remaining servers and
|
||
|
clients can join the cluster. This requirement can add additional provisioning
|
||
|
time as well as ordered dependencies during provisioning.
|
||
|
|
||
|
First, we bootstrap a single Nomad server and capture its IP address. After we
|
||
|
have that nodes IP address, we place this address in the configuration.
|
||
|
|
||
|
For Nomad servers, this configuration may look something like this:
|
||
|
|
||
|
```hcl
|
||
|
server {
|
||
|
enabled = true
|
||
|
bootstrap_expect = 3
|
||
|
|
||
|
# This is the IP address of the first server we provisioned
|
||
|
retry_join = ["<known-address>:4648"]
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Alternatively, the address can be supplied after the servers have all been
|
||
|
started by running the [`server-join` command](/docs/commands/server-join.html)
|
||
|
on the servers individual to cluster the servers. All servers can join just one
|
||
|
other server, and then rely on the gossip protocol to discover the rest.
|
||
|
|
||
|
```
|
||
|
$ nomad server-join <known-address>
|
||
|
```
|
||
|
|
||
|
For Nomad clients, the configuration may look something like:
|
||
|
|
||
|
```hcl
|
||
|
client {
|
||
|
enabled = true
|
||
|
servers = ["<known-address>:4647"]
|
||
|
}
|
||
|
```
|
||
|
|
||
|
At this time, there is no equivalent of the <tt>server-join</tt> command for
|
||
|
Nomad clients.
|
||
|
|
||
|
The port corresponds to the RPC port. If no port is specified with the IP
|
||
|
address, the default RCP port of `4647` is assumed.
|
||
|
|
||
|
As servers are added or removed from the cluster, this information is pushed to
|
||
|
the client. This means only one server must be specified because, after initial
|
||
|
contact, the full set of servers in the client's region are shared with the
|
||
|
client.
|