Kafka安装时遇到的错误-防火墙

问题描述:

controller服务器不能连接到另外两台kafka服务器,但是telnet却可以通。

 WARN [RequestSendThread controllerId=137] Controller 137's connection to broker 192.168.154.138:9092 (id: 138 rack: null) was unsuccessful (kafka.controller.RequestSendThread)
java.net.SocketTimeoutException: Failed to connect within 30000 ms
        at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:272)
        at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:225)
        at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:82)
[2019-09-02 17:30:45,535] WARN [RequestSendThread controllerId=137] Controller 137's connection to broker 192.168.154.139:9092 (id: 139 rack: null) was unsuccessful (kafka.controller.RequestSendThread)
java.net.SocketTimeoutException: Failed to connect within 30000 ms
        at kafka.controller.RequestSendThread.brokerReady(ControllerChannelManager.scala:272)
        at kafka.controller.RequestSendThread.doWork(ControllerChannelManager.scala:225)
        at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:82)
详细问题描述:

服务器环境:
服务器一:192.168.154.137
服务器二:192.168.154.138
服务器三:192.168.154.139
服务器一无法连接服务器二,三,服务器二三无法互联,但可以连接服务器一。
服务器之间可以ping通,但是telnet无法与服务器二三通信。

问题发现:

服务器二三的防火墙没有设置白名单,而服务器一的防火墙已关闭。

解决措施:

一:将二三的防火墙关闭,一劳永逸。

service iptable stop

简单粗暴的同时,安全性略有降低。

二:为二三的防火墙设置白名单,将我们的端口放行。
在设置之前我们需要先了解一下防火墙的配置文件所代表的含义
1、工作机制
iptables在linux内核中涉及的五个位置:

  1. 内核空间中:从一个网络接口进来,到另一个网络接口去的
  2. 数据包从内核流入用户空间的
  3. 数据包从用户空间流出的
  4. 进入/离开本机的外网接口
  5. 进入/离开本机的内网接口

这五个位置也被称为五个钩子函数(hook functions),也叫五个规则链。

  1. PREROUTING (路由前)
  2. INPUT (数据包流入口)
  3. FORWARD (转发管卡)
  4. OUTPUT(数据包出口)
  5. POSTROUTING(路由后)

这是NetFilter规定的五个规则链,任何一个数据包,只要经过本机,必将经过这五个链中的其中一个链。

2、iptables规则写法
iptables定义规则的方式比较复杂:
格式:iptables [-t table] COMMAND chain CRETIRIA -j ACTION

  • -t table :3个filter nat mangle
  • COMMAND:定义如何对规则进行管理
  • chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的
  • CRETIRIA:指定匹配标准
  • -j ACTION :指定如何进行处理

eg:

 比如:不允许202.110.0.0/24的进行访问。
 iptables -t filter -A INPUT -s 202.110.0.0/16 -p udp --dport 53 -j DROP
 当然你如果想拒绝的更彻底:
 iptables -t filter -R INPUT 1 -s 202.110.0.0/16 -p udp --dport 53 -j REJECT

3、iptables配置文件
iptables配置文件在系统的/etc/sysconfig/目录下,主要记录系统中iptables的规则,下面是定义某些ip为系统可访问白名单的配置,主要是在INPUT (数据包流入口)这个规则下拦截白名单以外的ip进行具体端口的访问:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

我们在后面为我们的服务追加一个白名单记录,这样子,防火墙就不会阻拦我们了。
最后我们需要对防火墙重启并保存

service iptables restart
service iptables save

最后问题完美解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值