生产配置

虽然 nsqd 可以作为单个独立节点运行,但这些说明假设您希望利用其设计的分布式特性。

需要安装并运行三个独立的二进制文件:

nsqd

nsqd 是接收、缓冲并向客户端传递消息的守护进程。

所有配置均通过命令行参数管理。我们努力使默认配置适用于大多数用例,但有一些特定选项值得注意:

--mem-queue-size 调整每个主题/通道在内存中排队的消息数量。超过该水位线的消息将透明地写入磁盘,由 --data-path 定义。

此外,nsqd 需要配置 nsqlookupd 地址(详见下文)。为每个实例指定 --lookupd-tcp-address 选项。

在拓扑结构方面,我们建议将 nsqd 与产生消息的服务共置运行。

nsqd 可以配置为通过指定 --statsd-address 将数据推送到 statsdnsqdnsq.* 命名空间下发送统计信息。请参阅 nsqd statsd

nsqlookupd

nsqlookupd 是为消费者提供运行时发现服务的守护进程,用于查找特定主题的 nsqd 生产者。

它不维护持久状态,也不需要与其他 nsqlookupd 实例协调来满足查询。

根据您的冗余需求运行尽可能多的实例。它们资源消耗少,并且可以与其他服务共置运行。我们的建议是在每个数据中心运行至少 3 个实例的集群。

nsqadmin

nsqadmin 是一个 Web 服务,用于实时监控和管理系统中的 NSQ 集群。它与 nsqlookupd 实例通信以定位生产者,并利用 graphite 生成图表(需要在 nsqd 端启用 statsd)。

您只需运行 1 个此类服务,并使其公开访问(安全地)。

要显示来自 graphite 的图表,请指定 --graphite-url。如果您使用的 statsd 版本为所有键添加了那些无谓的前缀,还需指定 --use-statsd-prefixes。最后,如果 graphite 无法公开访问,您可以通过指定 --proxy-graphitensqadmin 代理这些请求。

监控

每个守护进程都有一个 /ping HTTP 端点,可用于创建 Nagios 检查。

对于实时调试,以下命令也出奇地有效:

$ watch -n 0.5 "curl -s http://127.0.0.1:4151/stats"

通常,大多数调试、分析和管理工作都是通过 nsqadmin 完成的。