125 lines
4.6 KiB
Markdown
125 lines
4.6 KiB
Markdown
# [NATS](https://nats.io): A high-performance cloud native messaging system.
|
|
|
|
%%LOGO%%
|
|
|
|
`nats` is a high performance server for the NATS Messaging System.
|
|
|
|
# Example usage
|
|
|
|
```bash
|
|
# Run a NATS server
|
|
# Each server exposes multiple ports
|
|
# 4222 is for clients.
|
|
# 8222 is an HTTP management port for information reporting.
|
|
# 6222 is a routing port for clustering.
|
|
# use -p or -P as needed.
|
|
|
|
$ docker run -d --name nats-main %%IMAGE%%
|
|
[INF] Starting nats-server version 1.0.4
|
|
[INF] Starting http monitor on 0.0.0.0:8222
|
|
[INF] Listening for client connections on 0.0.0.0:4222
|
|
[INF] Server is ready
|
|
[INF] Listening for route connections on 0.0.0.0:6222
|
|
|
|
...
|
|
|
|
# To run a second server and cluster them together..
|
|
# Note that since you are passing arguments, this overrides the CMD section
|
|
# of the Dockerfile, so you need to pass all arguments, including the
|
|
# config file.
|
|
$ docker run -d --name=nats-2 --link nats-main %%IMAGE%% -c gnatsd.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222
|
|
|
|
# If you want to verify the routes are connected, try this instead:
|
|
$ docker run -d --name=nats-2 --link nats-main %%IMAGE%% -c gnatsd.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 -DV
|
|
[INF] Starting nats-server version 1.0.4
|
|
[DBG] Go build version go1.8.3
|
|
[INF] Starting http monitor on 0.0.0.0:8222
|
|
[INF] Listening for client connections on 0.0.0.0:4222
|
|
[DBG] Server id is BEfslG6VOmnIbMQcXTVaVJ
|
|
[INF] Server is ready
|
|
[INF] Listening for route connections on 0.0.0.0:6222
|
|
[DBG] Trying to connect to route on nats-main:6222
|
|
[DBG] 172.17.0.2:6222 - rid:1 - Route connection created
|
|
[DBG] 172.17.0.2:6222 - rid:1 - Route connect msg sent
|
|
[DBG] 172.17.0.2:6222 - rid:1 - Registering remote route "vay01L4cPxqy75GIDcqKq7"
|
|
[DBG] 172.17.0.2:6222 - rid:1 - Route sent local subscriptions
|
|
```
|
|
|
|
The server will load the configuration file below. Any command line flags can override these values.
|
|
|
|
## Default Configuration File
|
|
|
|
```bash
|
|
# Client port of 4222 on all interfaces
|
|
port: 4222
|
|
|
|
# HTTP monitoring port
|
|
monitor_port: 8222
|
|
|
|
# This is for clustering multiple servers together.
|
|
cluster {
|
|
|
|
# Route connections to be received on any interface on port 6222
|
|
port: 6222
|
|
|
|
# Routes are protected, so need to use them with --routes flag
|
|
# e.g. --routes=nats-route://ruser:T0pS3cr3t@otherdockerhost:6222
|
|
authorization {
|
|
user: ruser
|
|
password: T0pS3cr3t
|
|
timeout: 0.75
|
|
}
|
|
|
|
# Routes are actively solicited and connected to from this server.
|
|
# This Docker image has none by default, but you can pass a
|
|
# flag to the gnatsd docker image to create one to an existing server.
|
|
routes = []
|
|
}
|
|
```
|
|
|
|
## Commandline Options
|
|
|
|
```bash
|
|
Server Options:
|
|
-a, --addr <host> Bind to host address (default: 0.0.0.0)
|
|
-p, --port <port> Use port for clients (default: 4222)
|
|
-P, --pid <file> File to store PID
|
|
-m, --http_port <port> Use port for http monitoring
|
|
-ms,--https_port <port> Use port for https monitoring
|
|
-c, --config <file> Configuration file
|
|
-sl,--signal <signal>[=<pid>] Send signal to gnatsd process (stop, quit, reopen, reload)
|
|
|
|
Logging Options:
|
|
-l, --log <file> File to redirect log output
|
|
-T, --logtime Timestamp log entries (default: true)
|
|
-s, --syslog Log to syslog or windows event log
|
|
-r, --remote_syslog <addr> Syslog server addr (udp://localhost:514)
|
|
-D, --debug Enable debugging output
|
|
-V, --trace Trace the raw protocol
|
|
-DV Debug and trace
|
|
|
|
Authorization Options:
|
|
--user <user> User required for connections
|
|
--pass <password> Password required for connections
|
|
--auth <token> Authorization token required for connections
|
|
|
|
TLS Options:
|
|
--tls Enable TLS, do not verify clients (default: false)
|
|
--tlscert <file> Server certificate file
|
|
--tlskey <file> Private key for server certificate
|
|
--tlsverify Enable TLS, verify client certificates
|
|
--tlscacert <file> Client certificate CA for verification
|
|
|
|
Cluster Options:
|
|
--routes <rurl-1, rurl-2> Routes to solicit and connect
|
|
--cluster <cluster-url> Cluster URL for solicited routes
|
|
--no_advertise <bool> Advertise known cluster IPs to clients
|
|
--connect_retries <number> For implicit routes, number of connect retries
|
|
|
|
|
|
Common Options:
|
|
-h, --help Show this message
|
|
-v, --version Show version
|
|
--help_tls TLS help
|
|
```
|