Docker Swarm 解决报错Error response from daemon: rpc error: code = Unavailable desc = connection error:

简介: 本文是博主学习docker swarm遇到的问题记录,希望对大家有所帮助。

问题报错

使用swarm搭建集群时出现如下错误:

Error response from daemon: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial tcp 192.168.227.3:2377: connect: no route to host"

这个错误是发生在将node节点加入swarm中时,原因就是manager节点这台机器上的防火墙端口没有打开,加入连接出现了问题。
在这里插入图片描述

解决方案一(推荐)

开启端口

firewalld防火墙

firewall-cmd --zone=public --add-port=2377/tcp --permanent #TCP port 2377 用于集群管理节点间通信
firewall-cmd --zone=public --add-port=2375/tcp --permanent #docker服务开启TCP远程管理容器功能,portainer可以使用该端口管理主机上的容器
firewall-cmd --zone=public --add-port=7946/tcp --permanent #TCP 和 UDP 端口号 7946 用于节点间通信
firewall-cmd --zone=public --add-port=4789/tcp --permanent #UDP port 4789 for overlay network traffic,也就是说docker如果使用overlay网络,该端口会用于主机间网络数据包的传输
firewall-cmd --permanent --zone=trusted --add-source=192.168.0.0/16 #允许该网段所有访问所有端口
firewall-cmd --reload

iptables防火墙

iptables -A INPUT -p tcp --dport 2377 -j ACCEPT
iptables -A INPUT -p tcp --dport 2375 -j ACCEPT
iptables -A INPUT -p tcp --dport 7946 -j ACCEPT
iptables -A INPUT -p tcp --dport 4789 -j ACCEPT
service iptables save

解决方案二

把manager这台机器上的防火墙关闭就可以啦

firewalld防火墙

检测防火墙状态

systemctl status firewalld

可以看到是active (running),就是运行状态。
在这里插入图片描述

关闭防火墙

可以选择停止防火墙,重复后会自动开启防火墙。
或者禁用防火墙。

# 停止防火墙
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld

iptables防火墙

查看防火墙状态

service iptables status

关闭防火墙

service iptables stop

这样问题就解决了。

目录
相关文章
|
6天前
|
Ubuntu Linux Go
docker容器启动报错
docker容器启动报错解决
|
6天前
|
Linux Docker 容器
安装新版本Docker报错container-selinux >= 2:2.74 - 蓝易云
以上步骤应该能够帮助你解决遇到的问题。如果问题仍然存在,你可能需要寻求专业的技术支持。
28 0
|
8天前
|
应用服务中间件 nginx Docker
Docker中报错 Error response from daemon: Conflict. The container name “/nginx01“ is already in use
在尝试运行 `docker run -d --name nginx01 -p 3344:80 nginx` 时遇到错误。问题源于已有名为 nginx01 的容器未正确终止,造成命名冲突。解决方法:首先使用 `docker ps -a` 查看所有容器,然后删除现有 nginx01 容器,执行 `docker rm <container_id>`(替换 `<container_id>` 为实际容器ID),最后再运行 `docker run` 命令即可。
|
8天前
|
负载均衡 Dubbo Java
Dubbo 3.x:探索阿里巴巴的开源RPC框架新技术
随着微服务架构的兴起,远程过程调用(RPC)框架成为了关键组件。Dubbo,作为阿里巴巴的开源RPC框架,已经演进到了3.x版本,带来了许多新特性和技术改进。本文将探讨Dubbo 3.x中的一些最新技术,包括服务注册与发现、负载均衡、服务治理等,并通过代码示例展示其使用方式。
97 9
|
8月前
|
消息中间件 负载均衡 Dubbo
如何自己设计一个类似Dubbo的RPC框架?
如何自己设计一个类似Dubbo的RPC框架?
65 0
|
8天前
|
Dubbo Java 应用服务中间件
Rpc编程系列文章第三篇:Hessian RPC一个老的RPC框架
Rpc编程系列文章第三篇:Hessian RPC一个老的RPC框架
|
8天前
|
XML JSON Java
RPC框架之Thrift—实现Go和Java远程过程调用
RPC框架之Thrift—实现Go和Java远程过程调用
54 1
|
8天前
|
消息中间件 Dubbo Java
Simple RPC - 01 框架原理及总体架构初探
Simple RPC - 01 框架原理及总体架构初探
52 0
|
10月前
|
Dubbo Java 应用服务中间件
Netty入门到超神系列-手撸简单版RPC框架(仿Dubbo)
原理还是比较简单 : 代理 + 线程池 + Netty 下面做一些解释: 首先需要定义一个统一的API接口,例:UserApi , 服务端(provider)需要实现这个接口,提供相应的方法UserApiImpl#save,客户端通过远程来调用该接口。 然后需要约定一个协议,服务器如何才能识别到客户端要调用哪个接口?:我这里用 “接口权限定名#方法名#参数” ,的方式来,因为是一个简单版本的RPC。服务端解析该内容就能匹配对应的接口的实现类,然后调用该方法。并把方法的返回值通过Netty写回给客户端 使用的编解码器都是比价简单的String的编解码器
120 0
|
10月前
|
前端开发
Netty手写RPC框架
创建Request类,继承Message,klass是调用的Class目标,name,parameterType,argument分别是方法名称,参数类型,参数
67 0