美文网首页
rancher+nfs报错:goroutine * [chan

rancher+nfs报错:goroutine * [chan

作者: 螃蟹和骆驼先生Yvan | 来源:发表于2018-12-13 10:45 被阅读15次

主题: 这个bug,ipv4升级到ipv6留下来的巨坑,耽误了我3天时间我真的很不爽

报错截图:


rancher报错日志
我解释一下ipv4协议和ipv6协议的区别吧:
通俗一点说ipv4和ipv6同时收到请求的时候,ipv4的dns解析响应,
会让socket处于等待状态,而ipv6因为在dns解析接口加了一句话:
options timeout:2 attempts:3 rotate single-request-reopen
这句话的意思就是在不影响ipv4解析的情况下,重新打开一个新的socket接收ipv6的解析响应。
如果 socket 发送的两次请求处理,解析端发送第一次请求后会关闭 socket,
并在发送第二次请求前打开新的 socket。
这就导致rancher的dns解析地址极其不稳定,直接导致nfs挂载失败,解析不出来明确的ip地址。
当然有的时候,因为ipv6没有出现响应丢包,
并且响应很快的情况,新的socket将不会打开,所以有的时候nfs又被解析成功,当然这个成功概率是5%。
我在遇到这个问题的时候我很头疼,完全没有头绪,
部署rancher+nfs官方根本没有解释这一块,只能不停测试,3天时间我一共删除rancher4次,
重新部署所有服务5次,用了不同厂家3台服务器做测试,
我很高兴我成功测试出来了,当初在看到这个日志报错是任何bug提示都没有,我都想哭。

解决方法修改vi /etc/resolv.conf文件,隐藏上面那句话:


修改dns解析配置

dns不需要重启,修改过后默认自动生效

如果有什么问题欢迎咨询Q我,有的时候如果忙回复慢,一般晚上都有时间:
179061434

相关文章

  • rancher+nfs报错:goroutine * [chan

    主题: 这个bug,ipv4升级到ipv6留下来的巨坑,耽误了我3天时间我真的很不爽 报错截图: 解决方法修改vi...

  • go channel

    channel channel一般用于goroutine之间的通信;初始化chan :=make(chan int...

  • 通道channel

    channel特点 chan类型的值本身的并发安全的,因此可用于多个goroutine之间通信 chan使用mak...

  • Channel

    Channel是在goroutine之间同步的方式 定义 ChannelType = ( "chan" | "ch...

  • Go 语言多线程实例

    Go 语言多线程实例 本文代码使用了goroutine实现了多线程,使用chan来控制多线程。runtime.GO...

  • 给自己的区块链添加网络通信

    准备工作: go语言中Channels的用法:在不同的Goroutine中运行的函数之间传递数据,可以使用Chan...

  • 第十八章:Go语言并发数据同步

    1. 概述 Go程序可以通过channel在多个goroutine 之间进行数据交换保障了数据正确性,但是chan...

  • go day10 goroutine、runtime、chan

    goroutine (如果主协程退出了,程序也就退出了) runtime包: 1.runtime.Gosched(...

  • 【go系列5】golang中的通道

    golang中的通道类型是一种特殊的类型, 类型名字为chan。在任何时候,同时只有一个goroutine访问通道...

  • Go的channel常见使用方式

    go关键字可以用来开启一个goroutine(协程))进行任务处理,而多个任务之间如果需要通信,就需要用到chan...

网友评论

      本文标题:rancher+nfs报错:goroutine * [chan

      本文链接:https://www.haomeiwen.com/subject/eelvhqtx.html