Skip to content

Commit

Permalink
Merge pull request #743 from hashicorp/rm/serf-io-shutdown
Browse files Browse the repository at this point in the history
Shut down website
  • Loading branch information
rmainwork authored Oct 2, 2024
2 parents af974b8 + 932abee commit 62fdabe
Show file tree
Hide file tree
Showing 109 changed files with 56 additions and 2,949 deletions.
2 changes: 1 addition & 1 deletion .release/release-metadata.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
# SPDX-License-Identifier: MPL-2.0

url_license = "https://github.com/hashicorp/serf/blob/master/LICENSE"
url_project_website = "https://www.serf.io/"
url_project_website = "https://github.com/hashicorp/serf"
url_source_repository = "https://github.com/hashicorp/serf"
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Serf [![Build Status](https://github.com/hashicorp/serf/workflows/Checks/badge.svg)](https://github.com/hashicorp/serf/actions) [![Join the chat at https://gitter.im/hashicorp-serf/Lobby](https://badges.gitter.im/hashicorp-serf/Lobby.svg)](https://gitter.im/hashicorp-serf/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

* Website: https://www.serf.io
* Website: https://github.com/hashicorp/serf
* Chat: [Gitter](https://gitter.im/hashicorp-serf/Lobby)
* Mailing list: [Google Groups](https://groups.google.com/group/serfdom/)

Expand Down Expand Up @@ -28,7 +28,7 @@ Here are some example use cases of Serf, though there are many others:

## Quick Start

First, [download a pre-built Serf binary](https://www.serf.io/downloads.html)
First, [download a pre-built Serf binary](https://releases.hashicorp.com/serf)
for your operating system, [compile Serf yourself](#developing-serf), or install
using `go get -u github.com/hashicorp/serf/cmd/serf`.

Expand Down Expand Up @@ -88,7 +88,7 @@ cluster of the node failure.

Full, comprehensive documentation is viewable on the Serf website:

https://www.serf.io/docs
https://github.com/hashicorp/serf/tree/master/docs

## Developing Serf

Expand Down
12 changes: 6 additions & 6 deletions client/rpc_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ package client

import (
"bufio"
"fmt"
"errors"
"log"
"net"
"sync"
Expand All @@ -23,7 +23,7 @@ const (
)

var (
clientClosed = fmt.Errorf("client closed")
clientClosed = errors.New("client closed")
)

type seqCallback struct {
Expand Down Expand Up @@ -453,7 +453,7 @@ func (mh *monitorHandler) Cleanup() {
if !mh.closed {
if !mh.init {
mh.init = true
mh.initCh <- fmt.Errorf("Stream closed")
mh.initCh <- errors.New("Stream closed")
}
if mh.logCh != nil {
close(mh.logCh)
Expand Down Expand Up @@ -535,7 +535,7 @@ func (sh *streamHandler) Cleanup() {
if !sh.closed {
if !sh.init {
sh.init = true
sh.initCh <- fmt.Errorf("Stream closed")
sh.initCh <- errors.New("Stream closed")
}
if sh.eventCh != nil {
close(sh.eventCh)
Expand Down Expand Up @@ -636,7 +636,7 @@ func (qh *queryHandler) Cleanup() {
if !qh.closed {
if !qh.init {
qh.init = true
qh.initCh <- fmt.Errorf("Stream closed")
qh.initCh <- errors.New("Stream closed")
}
if qh.ackCh != nil {
close(qh.ackCh)
Expand Down Expand Up @@ -788,7 +788,7 @@ func (c *RPCClient) genericRPC(header *requestHeader, req interface{}, resp inte
// strToError converts a string to an error if not blank
func strToError(s string) error {
if s != "" {
return fmt.Errorf(s)
return errors.New(s)
}
return nil
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/serf/command/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ func (s StatsContainer) String() string {

// Iterate over each top-level key
for _, key := range keys {
buf.WriteString(fmt.Sprintf(key + ":\n"))
buf.WriteString(fmt.Sprintf("%s:\n", key))

// Sort the sub-keys
subvals := s[key]
Expand Down
2 changes: 1 addition & 1 deletion demo/vagrant-cluster/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ At this point the two nodes are running and you can SSH in to play with them:
...

To learn more about starting serf, joining nodes and interacting with the agent,
checkout the [getting started guide](https://www.serf.io/intro/getting-started/install.html).
checkout the [getting started guide](/docs/intro/getting-started/install.html.markdown).
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,17 @@ There are six important components that `serf agent` outputs:
By default, this binds only to localhost on the default port. If you
change this address, you'll have to specify an `-rpc-addr` to commands
such as `serf members` so they know how to talk to the agent. This is also
the address other applications can use over [RPC to control Serf](/docs/agent/rpc.html).
the address other applications can use over [RPC to control Serf](/docs/agent/rpc.html.markdown).

* **Encrypted**: This shows if Serf is encrypting all traffic that it
sends and expects to receive. It is a good sanity check to avoid sending
non-encrypted traffic over any public networks. You can read more about
[encryption here](/docs/agent/encryption.html).
[encryption here](/docs/agent/encryption.html.markdown).

* **Snapshot**: This shows if Serf snapshotting is enabled. The snapshot
file enables Serf to automatically re-join a cluster after failure and
prevents replay of events that have already been seen. It requires storing
state on disk, and [must be configured](/docs/agent/options.html)
state on disk, and [must be configured](/docs/agent/options.html.markdown)
using a CLI flag or in the configuration directory. If it is not provided,
other nodes will still attempt to reconnect on recovery, however the node
will take longer to join the cluster and will replay old events.
Expand All @@ -76,7 +76,7 @@ There are six important components that `serf agent` outputs:
be appropriate to the environment Serf is running in. It defaults to
optimizing for a LAN environment, but can also be set for WAN or
local-only communication. The profile can be set in
the [configuration](/docs/agent/options.html).
the [configuration](/docs/agent/options.html.markdown).

## Stopping an Agent

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ description: |-

The Serf agent supports encrypting all of its network traffic. The exact
method of this encryption is described on the
[encryption internals page](/docs/internals/security.html).
[encryption internals page](/docs/internals/security.html.markdown).

## Enabling Encryption

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Serf's true power and flexibility comes in the form of event handlers:
scripts that are executed in response to various events that can occur
related to the Serf cluster. Serf invokes events related to membership
changes (when a node comes online or goes offline) as well as
[custom events](/docs/commands/event.html) or [queries](/docs/commands/query.html).
[custom events](/docs/commands/event.html) or [queries](/docs/commands/query.html.markdown).

Event handlers can be any executable, including piped executables (such
as `awk '{print $2}' | grep foo`), since event handlers are invoked within
Expand Down Expand Up @@ -137,4 +137,4 @@ $stderr.reopen('/dev/null', 'w')
```

**Note:** This method is really only useful for event handlers, and is mostly
useless for [queries](/docs/commands/query.html).
useless for [queries](/docs/commands/query.html.markdown).
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ The options below are all specified on the command-line.
If this configuration value is changed and no port is specified, the default of
"7946" will be used. An important compatibility note, protocol version 2
introduces support for non-consistent ports across the cluster. For more information,
see the [compatibility page](/docs/compatibility.html).
see the [compatibility page](/docs/compatibility.html.markdown).
Note: To use an IPv6 address, specify "[::1]" or "[::1]:7946".

* `-iface` - This flag can be used to provide a binding interface. It can be
Expand Down Expand Up @@ -89,7 +89,7 @@ The options below are all specified on the command-line.
* `-event-handler` - Adds an event handler that Serf will invoke for
events. This flag can be specified multiple times to define multiple
event handlers. By default no event handlers are registered. See the
[event handler page](/docs/agent/event-handlers.html) for more details on
[event handler page](/docs/agent/event-handlers.html.markdown) for more details on
event handlers as well as a syntax for filtering event handlers by event.
Event handlers can be changed by reloading the configuration.

Expand Down Expand Up @@ -124,7 +124,7 @@ The options below are all specified on the command-line.
are too tight.

* `-protocol` - The Serf protocol version to use. This defaults to the latest
version. This should be set only when [upgrading](/docs/upgrading.html).
version. This should be set only when [upgrading](/docs/upgrading.html.markdown).
You can view the protocol versions supported by Serf by running `serf -v`.

* `-retry-join` - Address of another agent to join after starting up. This can
Expand Down Expand Up @@ -157,7 +157,7 @@ The options below are all specified on the command-line.
By default this is "127.0.0.1:7373", allowing only loopback connections.
The RPC address is used by other Serf commands, such as `serf members`,
in order to query a running Serf agent. It is also used by other applications
to control Serf using it's [RPC protocol](/docs/agent/rpc.html).
to control Serf using it's [RPC protocol](/docs/agent/rpc.html.markdown).

* `-snapshot` - The snapshot flag provides a file path that is used to store
recovery information, so when Serf restarts it is able to automatically
Expand Down Expand Up @@ -223,7 +223,7 @@ at a single JSON object with configuration within it.

* `role` - **Deprecated**. Equivalent to the `-role` command-line flag.

* `disable_coordinates` - Disables features related to [network coordinates](/docs/internals/coordinates.html).
* `disable_coordinates` - Disables features related to [network coordinates](/docs/internals/coordinates.html.markdown).

* `tags` - This is a dictionary of tag values. It is the same as specifying
the `tag` command-line flag once per tag.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ following request body:
```

The `Name` is a string, but `Payload` is just opaque bytes. Coalesce
is used to control if Serf should enable [event coalescing](/docs/commands/event.html).
is used to control if Serf should enable [event coalescing](/docs/commands/event.html.markdown).

There is no special response body.

Expand Down Expand Up @@ -217,7 +217,7 @@ the stream is stopped. The request body looks like:
{"Type": "member-join,user:deploy"}`
```

The format of type is the same as the [event handler](/docs/agent/event-handlers.html),
The format of type is the same as the [event handler](/docs/agent/event-handlers.html.markdown),
except no script is specified. The one exception is that `"*"` can be specified to
subscribe to all events.

Expand Down Expand Up @@ -415,7 +415,7 @@ The request looks like:
```

The `Key` should be 32 bytes of base64-encoded data. `24` and `16` bytes are also accepted, but 32 bytes are recommended for improved security. This value can be generated
using the [keygen command](/docs/commands/keygen.html).
using the [keygen command](/docs/commands/keygen.html.markdown).

Once invoked, this method will begin broadcasting the new key to all members in
the cluster via the gossip protocol. Once the query has completed, a response
Expand Down Expand Up @@ -507,7 +507,7 @@ successful, this number should be equivalent to the `NumNodes` field. If not all
members are aware of a key, you should either rebroadcast that key using the
`install-key` RPC command, or remove it using the `remove-key` RPC command. More
on encryption keys can be found on the
[agent encryption](/docs/agent/encryption.html) page.
[agent encryption](/docs/agent/encryption.html.markdown) page.

### stats

Expand Down Expand Up @@ -577,6 +577,6 @@ The returned coordinate is valid only if `Ok` is true. Otherwise, there wasn't
a coordinate available for the given node. This might mean that coordinates
are not enabled, or that the node has not yet contacted the agent.

See the [Network Coordinates](/docs/internals/coordinates.html)
See the [Network Coordinates](/docs/internals/coordinates.html.markdown)
internals guide for more information on how these coordinates are computed, and
for details on how to perform calculations with them.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ performs the important task of maintaining membership information,
propagating events, detecting failures, etc.

Due to the power and flexibility of this command, the Serf agent
is documented in its own section. See the [Serf Agent](/docs/agent/basics.html)
is documented in its own section. See the [Serf Agent](/docs/agent/basics.html.markdown)
section for more information on how to use this command and the
[options](/docs/agent/options.html) available.
[options](/docs/agent/options.html.markdown) available.
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ send the "deploy" event with "1234567890" as the payload.
## Receiving an Event

The events can be handled by registering an
[event handler](/docs/agent/event-handlers.html) with the Serf agent. The
[event handler](/docs/agent/event-handlers.html.markdown) with the Serf agent. The
documentation for how the user event is dispatched is all contained within
that linked page.

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ description: |-
Command: `serf keygen`

The `serf keygen` command generates an encryption key that can be used for
[Serf agent traffic encryption](/docs/agent/encryption.html).
[Serf agent traffic encryption](/docs/agent/encryption.html.markdown).
The keygen command uses a cryptographically
strong pseudo-random number generator to generate the key.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ description: |-
Command: `serf rtt`

The `rtt` command estimates the network round trip time between two nodes using
Serf's network coordinate model of the cluster. See the [Network Coordinates](/docs/internals/coordinates.html)
Serf's network coordinate model of the cluster. See the [Network Coordinates](/docs/internals/coordinates.html.markdown)
internals guide for more information on how these coordinates are computed.

While contacting nodes as part of its normal gossip protocol, Serf builds up a
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ can be upgraded without cluster disruption.

This compatibility guarantee makes it possible to upgrade Serf agents one
at a time, one version at a time. For more details on the specifics of
upgrading, see the [upgrading page](/docs/upgrading.html).
upgrading, see the [upgrading page](/docs/upgrading.html.markdown).

## Protocol Compatibility Table

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ description: |-
Welcome to the Serf documentation! This documentation is more of a reference
guide for all available features and options of Serf. If you're just getting
started with Serf, please start with the
[introduction and getting started guide](/intro/index.html) instead.
[introduction and getting started guide](/docs/intro/index.html.markdown) instead.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ allow the network round trip time to be estimated between any two nodes using a
very simple calculation.

Coordinates are obtained by adding a very small amount of data to the probe
messages that Serf already sends as part of its [gossip protocol](/docs/internals/gossip.html),
messages that Serf already sends as part of its [gossip protocol](/docs/internals/gossip.html.markdown),
so this system scales well and incurs very little overhead.

Serf's network tomography is based on ["Vivaldi: A Decentralized Network Coordinate System"](https://www.cs.ucsb.edu/~ravenben/classes/276/papers/vivaldi-sigcomm04.pdf), with some additions from ["Network Coordinates in the Wild"](https://www.usenix.org/legacy/events/nsdi07/tech/full_papers/ledlie/ledlie_html/index_save.html) and ["On Suitability of Euclidean Embedding for Host-Based Network Coordinate Systems"](http://domino.research.ibm.com/library/cyberdig.nsf/papers/492D147FCCEA752C8525768F00535D8A).
Expand Down Expand Up @@ -110,7 +110,7 @@ The following section shows how to perform calculations with these coordinates.

Computing the estimated network round trip time between any two nodes is simple
once you have their coordinates. Here's a sample coordinate, as returned from the
`get-coordinate` [RPC call](/docs/agent/rpc.html):
`get-coordinate` [RPC call](/docs/agent/rpc.html.markdown):

```
"Coord": {
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ description: |-

This section goes over some of the internals of Serf, such as the gossip
protocol, ordering of messages via Lamport clocks, etc. This section
also contains a useful [convergence simulator](/docs/internals/simulator.html)
also contains a useful [convergence simulator](/docs/internals/simulator.html.markdown)
that can be used to see how fast a Serf cluster will converge under
various conditions with specific configurations.

Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -99,5 +99,5 @@ to invoke multiple event handlers as well as invoke certain event handlers
for only certain Serf events.

To learn more about these features, see the full documentation section
of [event handlers](/docs/agent/event-handlers.html).
of [event handlers](/docs/agent/event-handlers.html.markdown).

Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ description: |-
That concludes the getting started guide for Serf. Hopefully you're able to
see that while Serf is an incredibly simple tool, it is also extremely
powerful. The dead simple membership information and events system that
Serf provides make up the building blocks of [incredible use cases](/intro/use-cases.html).
Serf provides make up the building blocks of [incredible use cases](/docs/intro/use-cases.html.markdown).

And because Serf is completely decentralized, fault tolerant, self-healing,
etc. it is a dream tool for system administrators and built specifically
for modern, elastic infrastructures.

As a next step, the following resources are available:

* [Documentation](/docs/index.html) - The documentation is an in-depth reference
* [Documentation](/docs/index.html.markdown) - The documentation is an in-depth reference
guide to all the features of Serf, including technical details about the
internals of how Serf operates.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ the current load average of the machine.

Serf agents must be configured to handle queries before they will
respond to them. See the "Specifying Event Handlers" section in the
[Event Handlers documentation](/docs/agent/event-handlers.html) for
[Event Handlers documentation](/docs/agent/event-handlers.html.markdown) for
examples of the configuration format.

## Query Payloads
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Custom events come with some trade-offs, however:
* Events are eventually consistent: Because events are delivered over
gossip, the messages _eventually_ arrive at every node. In theory
(and anecdotally in practice), the state of the cluster
[converges rapidly](/docs/internals/simulator.html).
[converges rapidly](/docs/internals/simulator.html.markdown).

* Payload size is limited: Serf gossips via UDP, so the payload must fit
within a single UDP packet (alongside any other data Serf sends). This
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ description: |-
Welcome to the intro guide to Serf! This guide will show you what Serf is,
explain the problems Serf solves, compare Serf versus other similar
software, and show how easy it is to actually use Serf. If you're already familiar
with the basics of Serf, the [documentation](/docs/index.html) provides more
with the basics of Serf, the [documentation](/docs/index.html.markdown) provides more
of a reference for all available features.

## What is Serf?
Expand All @@ -22,7 +22,7 @@ highly available. Serf runs on every major platform: Linux, Mac OS X, and Window
extremely lightweight: it uses 5 to 10 MB of resident memory and primarily
communicates using infrequent UDP messages.

Serf uses an efficient [gossip protocol](/docs/internals/gossip.html)
Serf uses an efficient [gossip protocol](/docs/internals/gossip.html.markdown)
to solve three major problems:

* **Membership**: Serf maintains cluster membership lists and is able to
Expand All @@ -42,9 +42,9 @@ to solve three major problems:
deliver messages in the face of offline nodes or network partitions. Queries
provide a simple realtime request/response mechanism.

See the [use cases page](/intro/use-cases.html) for a list of concrete use
See the [use cases page](/docs/intro/use-cases.html.markdown) for a list of concrete use
cases built on top of the features Serf provides. See the page on
[how Serf compares to other software](/intro/vs-other-sw.html) to see just
[how Serf compares to other software](/docs/intro/vs-other-sw.html.markdown) to see just
how it fits into your existing infrastructure. Or continue onwards with
the [getting started guide](/intro/getting-started/install.html) to get
the [getting started guide](/docs/intro/getting-started/install.html.markdown) to get
Serf up and running and see how it works.
Loading

0 comments on commit 62fdabe

Please sign in to comment.