Galera Cluster Rancher 节点扩展问题
Galera Cluster Rancher Node Scaling Issue
我有一个非常具体的问题。我正在使用 Rancher 管理我的 docker 容器,并使用 Galera Cluster Community Template。我在我的设置中添加了第二台主机,如果我现在正在扩展集群 - 它一直在说
level=fatal msg="invalid character '<' looking for beginning of value"
我无法真正追踪错误,也不知道去哪里找。
我目前的研究 - 它可能连接到主机通信协议(http vs https),因为其他人遇到过这个错误。
我的问题 - 如何跟踪/调试并修复此错误?
Additional information:
Docker Version on both hosts: 1.12.5
Rancher Version: v1.1.4
如果您需要其他任何东西 - 我很乐意提供更多信息。
我花了一段时间才弄明白这一点。其实不是模板的问题,也不是Galera Cluster本身的问题。
问题在于 rancher / docker 在环境中获取 IP 的方式。原因是 ubuntu 默认使用 dns 服务器作为本地地址 127.0.0.1 发送,这是设计使然。问题是 docker 容器无法在 127.0.0.1.
中查找
查看您的 /etc/resolv.conf 文件
执行测试:
docker run -it ubuntu bash
apt update
apt install dnsutils
# This will not respond
dig @127.0.0.1 your.hostname.com
注意:ping 会正常工作,并且可能会欺骗您认为名称解析正在工作。挖掘是这样做的正确方法。
您也可以使用 rancher cli 来获取问题提示:
mkdir -p support
rancher hosts -a > support/hosts
rancher logs --tail=-1 ipsec/ipsec > support/ipsec 2>&1
rancher logs --tail=-1 network-services/metadata > support/metadata 2>&1
rancher logs --tail=-1 network-services/network-manager > support/network-manager 2>&1
解法:
有两种解决方案:
1 - 配置 ubuntu 以使用其他名称服务器,例如 google public dns (8.8.8.8, 8.8.4.4)。我尝试了这个,并且对于一个简单的更改来说太复杂了,正如所说,ubuntu 通过设计使用它。
2 - 更改 docker dns 服务器。这对我来说很好。您将编辑或创建文件 /etc/docker/daemon.json 并放置以下行:
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
停止容器并重新启动守护进程:
docker stop $(docker ps -q)
docker stop $(docker ps -q) # yes twice :-) rancher will try do restart your dying containers
systemctl restart docker
非常感谢Giovanni
我有一个非常具体的问题。我正在使用 Rancher 管理我的 docker 容器,并使用 Galera Cluster Community Template。我在我的设置中添加了第二台主机,如果我现在正在扩展集群 - 它一直在说
level=fatal msg="invalid character '<' looking for beginning of value"
我无法真正追踪错误,也不知道去哪里找。
我目前的研究 - 它可能连接到主机通信协议(http vs https),因为其他人遇到过这个错误。
我的问题 - 如何跟踪/调试并修复此错误?
Additional information:
Docker Version on both hosts: 1.12.5
Rancher Version: v1.1.4
如果您需要其他任何东西 - 我很乐意提供更多信息。
我花了一段时间才弄明白这一点。其实不是模板的问题,也不是Galera Cluster本身的问题。 问题在于 rancher / docker 在环境中获取 IP 的方式。原因是 ubuntu 默认使用 dns 服务器作为本地地址 127.0.0.1 发送,这是设计使然。问题是 docker 容器无法在 127.0.0.1.
中查找查看您的 /etc/resolv.conf 文件
执行测试:
docker run -it ubuntu bash
apt update
apt install dnsutils
# This will not respond
dig @127.0.0.1 your.hostname.com
注意:ping 会正常工作,并且可能会欺骗您认为名称解析正在工作。挖掘是这样做的正确方法。
您也可以使用 rancher cli 来获取问题提示:
mkdir -p support
rancher hosts -a > support/hosts
rancher logs --tail=-1 ipsec/ipsec > support/ipsec 2>&1
rancher logs --tail=-1 network-services/metadata > support/metadata 2>&1
rancher logs --tail=-1 network-services/network-manager > support/network-manager 2>&1
解法:
有两种解决方案:
1 - 配置 ubuntu 以使用其他名称服务器,例如 google public dns (8.8.8.8, 8.8.4.4)。我尝试了这个,并且对于一个简单的更改来说太复杂了,正如所说,ubuntu 通过设计使用它。
2 - 更改 docker dns 服务器。这对我来说很好。您将编辑或创建文件 /etc/docker/daemon.json 并放置以下行:
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
停止容器并重新启动守护进程:
docker stop $(docker ps -q)
docker stop $(docker ps -q) # yes twice :-) rancher will try do restart your dying containers
systemctl restart docker
非常感谢Giovanni