无法查看据称“关闭”的服务器的日志

无法查看据称“关闭”的服务器的日志

我们有一个 HA MariaDB 集群,我们的负载均衡器突然开始无法将我们的数据库节点视为在线。我们已更新应用程序以直接访问节点并绕过负载均衡器,因为我们无法弄清楚发生了什么。

haproxy 配置

global
  log 127.0.0.1   local0
  log 127.0.0.1   local1 notice
  #log loghost    local0 info
  maxconn 4096
  #debug
  #quiet
  user haproxy
  group haproxy

defaults
  log     global
  mode    http
  retries 3
  timeout client 50s
  timeout connect 5s
  timeout server 50s
  option dontlognull
  option redispatch
  option tcplog
  balance  roundrobin

# Set up application listeners here.

listen admin
  bind 0.0.0.0:22002
  mode http
  stats uri /

listen mysql-cluster
  bind 0.0.0.0:3306
  balance roundrobin
  mode tcp
  server db1.my-domain.com XX.XX.XXX.94:3306 check
  server db2.my-domain.com XX.XX.XXX.97:3306 check
  server db3.my-domain.com XX.XX.XXX.96:3306 check
  option mysql-check user balance

该负载均衡器的唯一工作是平衡数据库节点之间的流量,不是任何其他服务。我尝试启用调试以查看更详细的输出,但我找不到与 mysql-cluster 检查相关的任何错误。在日志中,我会看到与配置指定的数据库节点完全无关的日志条目。以下是一个例子:

Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[10] : [ttl=3]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[11] : [auth=1 866db534aa49e7d727e7c41caf33020031f26b0e]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: process_status_message: bad node [prod-load-1] in message
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG: Dumping message with 12 fields
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[0] : [t=status]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[1] : [st=active]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[2] : [dt=1388]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[3] : [protocol=1]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[4] : [src=prod-load-1]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[5] : [(1)srcuuid=0x24deb20(36 27)]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[6] : [seq=a8b208]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[7] : [hg=5792730f]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[8] : [ts=58e3e4fb]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[9] : [ld=0.00 0.01 0.05 1/223 49874]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[10] : [ttl=3]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[11] : [auth=1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: process_status_message: bad node [demo-load2] in message
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG: Dumping message with 10 fields
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[0] : [t=NS_ackmsg]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[1] : [dest=demo-load2]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[2] : [ackseq=2717430]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[3] : [(1)destuuid=0x24e0780(37 28)]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[4] : [src=demo-load2]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[5] : [(1)srcuuid=0x24d5540(36 27)]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[6] : [hg=5391a40d]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[7] : [ts=58e3e4fb]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[8] : [ttl=3]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[9] : [auth=1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: process_status_message: bad node [prod-load-1] in message
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG: Dumping message with 12 fields
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[0] : [t=status]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[1] : [st=active]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[2] : [dt=1388]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[3] : [protocol=1]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[4] : [src=prod-load-1]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[5] : [(1)srcuuid=0x24e0640(36 27)]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[6] : [seq=a8b208]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[7] : [hg=5792730f]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[8] : [ts=58e3e4fb]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[9] : [ld=0.00 0.01 0.05 1/223 49874]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[10] : [ttl=3]
Apr 04 18:24:59 database-load-balancer-1 heartbeat: [4048]: ERROR: MSG[11] : [auth=1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]

我该怎么做才能弄清楚为什么我的数据库节点被列为“关闭”?

答案1

首先,确保您在所有数据库服务器上都有名为“balance”的 mysql 用户。然后确保用户“balance”有权从 haproxy IP 地址进行连接,而不仅仅是从本地主机进行连接。

要配置 haproxy 日志记录,请执行以下操作:

您已经在 haproxy 配置中为 haproxy 日志配置了 local0 syslog 工具。

...
log 127.0.0.1   local0
...

将其添加到/etc/rsyslog.conf将日志写入文件。

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# haproxy logs
local0.*         /var/log/haproxy.log

重新启动 haproxy 和 rsyslog 服务,然后检查 /var/log/haproxy.log 中是否存在如下行:

localhost haproxy[1555]: Server mysql/mysql-1 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.

该日志应包含足够的信息来查明问题。

答案2

您需要使用选项 mysql-check 进行检查,如果您只使用 checke,MariaDB 将打开一个连接并保持打开状态,直到超时,并且您很快就会用完连接。选项 mysql-check 打开并关闭连接,但您需要一个可以针对数据库进行身份验证的 DB 中的虚拟用户。您可以检查 HAProxy文档

相关内容