首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有自定义运行状况检查的负载平衡UDP syslog

具有自定义运行状况检查的负载平衡UDP syslog
EN

Stack Overflow用户
提问于 2019-08-08 08:20:02
回答 1查看 760关注 0票数 0

我设置了Nginx Plus来负载均衡UDP系统日志流量。这是来自nginx.conf的一个片段

代码语言:javascript
复制
stream {

    upstream syslog_standard {
        zone syslog_zone 64k;
        server cp01.woolford.io:1514 max_fails=1 fail_timeout=10s;
        server cp02.woolford.io:1514 max_fails=1 fail_timeout=10s;
        server cp03.woolford.io:1514 max_fails=1 fail_timeout=10s;
    }

    server {
        listen 514 udp;
        proxy_pass syslog_standard;
        proxy_bind $remote_addr transparent;
        health_check udp;
    }

}

听说NGINX Plus可以在UDP上执行健康检查,我有点惊讶,因为UDP在设计上是不可靠的。由于UDP中没有确认,因此消息实际上进入了黑洞。

我正在尝试建立一个容错和可伸缩的syslog注入管道。应该通过健康检查来检测节点的丢失,并将其从可用服务器列表中临时删除。

尽管进行了UDP运行状况检查,但这并不起作用。我认为UDP运行状况检查只适用于响应调用者的服务(例如DNS)。由于syslog没有响应,因此无法检查错误,例如使用match

接收syslog消息的进程在端口1514上侦听,并在端口8073上有一个REST接口:

如果摄取进程正常,则对端口8073上的/connectors/syslog/statusGET请求将返回:

代码语言:javascript
复制
{
  "name": "syslog",
  "connector": {
    "state": "RUNNING",
    "worker_id": "10.0.1.41:8073"
  },
  "tasks": [
    {
      "id": 0,
      "state": "RUNNING",
      "worker_id": "10.0.1.41:8073"
    }
  ],
  "type": "source"
}

我想创建一个自定义检查来查看摄取是否正在运行。NGINX Plus可以做到这一点吗?我们可以在完全不同的端口上检查运行状况吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-08 12:58:02

这是我所做的:

代码语言:javascript
复制
stream {

    upstream syslog_standard {
        zone syslog_zone 64k;
        server cp01.woolford.io:1514 max_fails=1 fail_timeout=10s;
        server cp02.woolford.io:1514 max_fails=1 fail_timeout=10s;
        server cp03.woolford.io:1514 max_fails=1 fail_timeout=10s;
    }

    match syslog_ingest_test {
        send      "GET /connectors/syslog/status HTTP/1.0\r\nHost: localhost\r\n\r\n";
        expect ~* "RUNNING";
    }

    server {
        listen 514 udp;
        proxy_pass syslog_standard;
        proxy_bind $remote_addr transparent;
        health_check match=syslog_ingest_test port=8073;
    }

}

match=syslog_ingest_test健康检查对端口8073 (即包含摄取进程的健康检查端点的端口)的URL执行GET请求,并确认它正在运行。

我可以关闭/打开服务,NGINX会检测到它并做出相应的反应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57403725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档