Ubuntu 20.04 安装 Nats

1、介绍

nats是一个开源的,云原生的消息系统。核心基于EventMachine开发,原理是基于消息发布订阅机制,每台服务器上的每个模块会根据自己的消息类别向MessageBus发布多个消息主题,而同时也向自己需要交互的模块,按照需要的主题订阅消息。能够达到每秒8-11百万个消息,整个程序很小只有3M Docker image,它不支持持久化消息,如果你离线,你就不能获得消息。使用nats streaming可以做到持久化,缓存等功能。

2、下载

https://github.com/nats-io下载最新版本的nats-server版本。这里用2.6.2版本

3、运行

解压后直接运行nats-server就可以了

tar zxf nats-server-v2.6.2-linux-amd64.tar.gz
./nats-server-v2.6.2-linux-amd64/nats-server

4、将nats添加为服务

vim /lib/systemd/system/nats.service

[Unit]
Description=nats-server daemon
After=syslog.target  network.target
Wants=network.target

[Service]
ExecStart=/home/nats-server/nats-server -c /home/nats-server/nats.yml
Restart= on-failure

[Install]
WantedBy=multi-user.target

然后就可以通过systemctl来启动停止了

#开机启动
systemctl enable nats

# 启动
systemctl start nats

# 停止
systemctl stop nats

# 查看状态
systemctl status nats

5、启动参数配置说明

在源码main.go中可以看到配置参数。

服务器选项:
    -a, --addr <host>                绑定主机IP地址(默认是0.0.0.0)
    -p, --port <port>                客户端连接NATS服务器使用的端口(默认是4222)
    -n, --name <server_name>         服务器名字(默认:自动)
    -P, --pid <file>                 存储PID的文件
    -m, --http_port <port>           HTTP监听端口
    -ms,--https_port <port>          HTTPS监听端口
    -c, --config <file>              指定配置文件
    -t                               测试配置文并退出
    -sl,--signal <signal>[=<pid>]    向 nats-server 进程发送信号(停止、退出、重新打开、重新加载)
                                      <pid> 可以是 PID(例如 1)或 PID 文件的路径(例如 /var/run/nats-server.pid)
        --client_advertise <string>  向其他服务器广播的客户端 URL

日志选项:
    -l, --log <file>                 指定日志输出的文件
    -T, --logtime                    是否开启日志的时间戳(默认为true)
    -s, --syslog                     启用syslog作为日志方法
    -r, --remote_syslog <addr>       远程日志服务器的地址(默认为udp://localhost:514)
    -D, --debug                      开启调试输出
    -V, --trace                      跟踪原始的协议
    -VV                              详细跟踪(也跟踪系统帐户)
    -DV                              调试并跟踪
    -DVV                             调试和详细跟踪(也跟踪系统帐户)

JetStream 选项:
    -js, --jetstream                 启用 JetStream 功能。
    -sd, --store_dir <dir>           设置存储目录。

授权认证选项:
        --user <user>                连接需要的用户名
        --pass <password>            连接需要的密码
        --auth <token>               连接所需的授权令牌

TLS 安全选项:
        --tls                       启用TLS,不验证客户端(默认为false)
        --tlscert <file>             服务器证书文件
        --tlskey <file>              服务器证书私钥
        --tlsverify                  启用TLS,每一个客户端都要认证
        --tlscacert <file>           客户端证书CA用于认证

集群选项:
        --routes <rurl-1, rurl-2>    请求和连接的路由
        --cluster <cluster-url>      请求路由的集群 URL
        --cluster_name <string>      Cluster Name,如果不设置会动态生成一个
        --no_advertise <bool>        不向客户端通告已知的集群信息
        --cluster_advertise <string> 向其他服务器通告的集群 URL
        --connect_retries <number>   连接重试次数

常规选项:
    -h, --help                       显示帮助消息
    -v, --version                   显示版本信息
        --help_tls                   显示TLS 帮助消息

6、配置文件

使用参数启动难免太复杂了点,所以可以通过-c加配置文件来启动。

NATS服务器配置文件的格式比较灵活,结合了传统的JSON格式和新的YAML格式的风格。
NATS配置文件格式支持以下语法:

Mixed Arrays: […]
Nested Maps: {…}
Multiple comment types: # and //
Key value assigments using:

    Equals sign (foo = 2)
    Colon (foo: 2)
    Whitespace (foo 2)

Maps can be assigned with no key separator

Semicolons as value terminators in key/value assignments are optional<br>

简单配置

listen: 127.0.0.1:4222

NATS服务器配置文件示例

port: 4242   # 供客户端连接的监听端口
net: apcera.me # 监听的网络地址

http_port: 8222 # HTTP监控端口

# 客户端连接的认证信息
authorization {
 user:   derek
 password: T0pS3cr3t
 timeout: 1
}

# 集群定义
cluster {

 host: '127.0.0.1' # 主机地址
 port: 4244     # 路由连接的入站(inbound)端口

 # 路由连接的认证信息
 authorization {
  user: route_user
  password: T0pS3cr3tT00!
  timeout: 0.5
 }

 # Routes are actively solicited and connected to from this server.
 # Other servers can connect to us if they supply the correct credentials
 # in their routes definitions from above.
 routes = [
  nats-route://user1:pass1@127.0.0.1:4245
  nats-route://user2:pass2@127.0.0.1:4246
 ]
}

# 日志选项
debug:  false
trace:  true
logtime: false
log_file: "/tmp/gnatsd.log"

# PID进程文件
pid_file: "/tmp/gnatsd.pid"

# 一些系统属性

# 客户端最大连接数
max_connections: 100

# 最大协议控制行
max_control_line: 512

# 最大的有效负载
max_payload: 65536

# 慢消费者阀值
max_pending_size: 10000000

配置文件参考:http://article.nxpop.com/col/6304.html

0%