当前位置: 首页 > 面试题库 >

UFW防火墙后面的Elasticsearch集群

麹承
2023-03-14
问题内容

我有一个在两个不同的Digital
Ocean小滴上运行的Elasticsearch集群。它们都是为专用网络而设置的,我有一个运行良好的UFW规则就可以正常运行的Mongo
DB复制集,它只接受来自Droplet的特定(专用)IP地址的相关端口上的连接。

但是,我无法使用相同的方法(只有黄色)获得绿色的Elasticsearch集群运行状况。这意味着节点无法相互连接。

在elasaticsearch.yml中(在两台机器上),我都禁用了多播,并且正在使用单播连接到Droplet的内部IP地址。当我将防火墙设置为接受端口9300上的所有连接(ufw允许9300)时,它工作正常,并且群集运行状况报告为绿色。但是,当我将规则限制为仅允许使用实际IP地址时(与Mongo
DB副本集一样),它不起作用。我已经尝试过使用公共和私有地址,以及IPv4和IPv6。

我在这里想念什么?


问题答案:

默认情况下,首选IPV6。您可以通过将java.net.preferIPv4Stack系统属性设置为来更改此行为true
您还必须看到,默认情况下,ES绑定到anyLocalAddress(通常是0.0.0.0::0)。您可以通过设置network.bind_host正确的IP地址来更改此设置。

参考[1.3]»模块»网络设置

更新:

首先,建议您在SO中禁用ipv6,您可以按照以下步骤操作:

/etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

要在正在运行的系统中禁用:

echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
echo 1 > /proc/sys/net/ipv6/conf/default/disable_ipv6

要么

sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

之后,您必须更改两个节点elasticsearch.yml的值以及network.bind_host它们各自的IP

# Elasticsearch, by default, binds itself to the 0.0.0.0 address, and listens
# on port [9200-9300] for HTTP traffic and on port [9300-9400] for node-to-node
# communicathtml" target="_blank">ion. (the range means that if the port is busy, it will automatically
# try the next port).
# Set the bind address specifically (IPv4 or IPv6):
#
network.bind_host: 10.0.0.1
# Set the address other nodes will use to communicate with this node. If not
# set, it is automatically derived. It must point to an actual IP address.
#
network.publish_host: 10.0.0.1

或设置

# Set both 'bind_host' and 'publish_host':
#
network.host: 10.0.0.1

最后,您必须验证网络适配器的配置,这两个适配器都必须使用之前使用的IP正确配置。

希望这可以帮助



 类似资料:
  • 基本概念 netfilter Linux 内核包含一个强大的网络过滤子系统 netfilter。netfilter 子系统允许内核模块对遍历系统的每个网络数据包进行检查。这表示在任何传入、传出或转发的网络数据包到达用户空间中的组件之前,都可以通过编程方式检查、修改、丢弃或拒绝。netfilter 是 RHEL 7 计算机上构建防火墙的主要构建块。 尽管系统管理员理论上可以编写自己的内核模块以与 n

  • 我有一个服务器写在JavaServerSocket。 我有一个客户端,它位于一个公司防火墙之上,除了公共端口之外,它阻止了所有东西。 我已在SMTP端口(#25)上启动服务器。 有防火墙的用户连接到它,到目前为止一切正常。 然后服务器处理ServerSocket.accept()。据我所知,它在一个随机端口上创建一个套接字(每次端口号都不同)。因为防火墙而失败。 我的问题是-如何制作ServerS

  • 我正在尝试从我们的网络访问cloud Elasticsearch安装,这需要使用外部请求的代理。这是我用来传递Elasticsearch凭据和代理设置的代码片段: CredentialsProvider CredentialsProvider=new BasicCredentialsProvider();CredentialsProvider.SetCredentials(AuthScope.An

  • 问题内容: Ngrok(https://ngrok.com/)应该允许您通过转发将本地端口和服务公开给万维网。但是,如果我像这样打开本地计算机上的端口80: 我回来了: 我知道对http://3a4bfceb.ngrok.com的任何请求都将发送到端口80上的本地计算机,但是如果我坐在NAT /防火墙后面,这会阻止传入流量(一种非常常见的情况),该怎么办。ngrok是否会发起轮询请求来确定何时接收

  • iptables 命令 防火墙分为硬件防火墙和软件防火墙 防火墙策略一般分为两种:开放和屏蔽 iptables 是 Linux 上常用的防火墙软件 iptables 一共有四张表和五条链 iptables (选项)[表名] (选项)[链名规则] (选项)[动作] 表: Raw 负责连接跟踪 Mangle 负责包处理 Nat 负责地址转换 Filter 负责包过滤 链名规则: PREROUTING