使用官方最新的HAProxy Docker容器和下面的configuration文件:
frontend logging_frontend bind *:1514 mode tcp timeout client 1m default_backend logging_backend backend logging_backend mode tcp balance roundrobin timeout connect 10s timeout server 1m server logstash-collector-01 logstash-collector-01:1514 check server logstash-collector-02 logstash-collector-02:1514 check server logstash-collector-03 logstash-collector-03:1514 check
我得到的日志(通过nxlog发送到1514通过TCP)不存储实际的客户端IP,而是泊坞窗网关IP。 例如:
2017-03-02T15:57:41.585Z 172.18.0.1 {“EventTime”:“2017-03-01 15:25:02”,“Hostname”:“server.mycompany.net”,“Keywords”:58096435992,“事件types “:” ERROR “ ”SeverityValue“:4, ”严重性“: ”ERROR“, ”事件ID“:551, ”SOURCENAME“: ”微软Windows的SMBSERVER“, ”ProviderGuid“:”{D48CE617-33A2-4BC3 -A5C7-11AA4F29619E} “ ”版本“:1, ”任务“:551, ”OpcodeValue“:0 ”RecordNumber“:5267740, ”的ProcessID“:4 ”线程ID“:5732, ”通道“:” Microsoft- Windows-SMBServer / Security“,”Domain“:”NT AUTHORITY“,”AccountName“:”SYSTEM“,”UserID“:”S-1-5-184“,”AccountType“:”User“,”Message“ “SMB会话身份validation失败\ r \ n \ r \ n客户端名称:\\ 10.1.1.43 \ r \ n客户端地址:10.1.1.43:54118 \ r \ n用户名:\ r \ n会话ID:0xAF9FC8000015 \ r \ n状态: (0xC000006D)\ r \ n \ r \ n指导:\ r \ n \ r \ n尝试连接到使用不正确凭据的共享时应该会出现此错误。\ r \ n \ r \ n此错误并不总是表示授权有问题 ,但主要是authentication。 对于非Windows客户端更为常见。\ r \ n \ r \ n如果在NTLM中使用不正确的用户名和密码,客户端和服务器之间的LmCompatibility设置不匹配,Kerberos服务主体名称重复,Kerberos票证授权服务不正确无法访问访问权限的访客帐户“,”Opcode“:”Info“,”EventReceivedTime“:1488470262,”SourceModuleName“:”eventlog“,”SourceModuleType“:”im_msvistalog“}
请注意,报告服务器是10.2.3.95,Docker主机是10.1.38.223,并且Docker网桥接口(和本地容器子网)是172.18.0.0/16(具有172.18.0.1,logging在日志中,是网关) 。
从tcpdump(修改为显示接口):
当我尝试使HAProxy在客户端IP上透明地使用backend中的source 0.0.0.0 usesrc clientip时,根本没有任何东西被logging。
对我来说,这个问题有两个成功的途径。 之一:
或者更重要的是: