Elasticsearch外网无法通过ip访问


在这里插入图片描述

想学习架构师构建流程请跳转:Java架构师系统架构设计

1 遇到的问题

外网服务器安装 elasticsearch,解压elasticsearch之后,启动,通过 http://localhost:9200 可以访问的到,但是 http://ip:9200 访问不到,怎么办呢?解决如下

首先,需要明确自己的Elasticsearch版本信息

在这里插入图片描述

1. 问题:为什么使用外网 ip:9200 访问不了?

img

2 解决方法

Elasticsearch 默认只能通过 localhost/127.0.0.1本机环回地址访问 。如需要设置支持其他 ip 访问需要设置配置文件的 network.host 参数。去掉 network.host 的注释,即 network.host 为 ‘0.0.0.0’。

在这里插入图片描述

修改完后,重现启动。继续报错。

2. ERROR: [2] bootstrap checks failed 问题报错

  • [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
  • [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

img

问题1:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

elasticsearch用户拥有的内存权限太小,至少需要262144;

解决:切换到root用户修改配置sysctl.conf
 
vi /etc/sysctl.conf 
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p

问题2 : the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
在这里插入图片描述
看提示可知:缺少默认配置,至少需要配置

discovery.seed_hosts/discovery.seed_providers/cluster.initial_master_nodes中的一个参数.

discovery.seed_hosts: 集群主机列表
discovery.seed_providers: 基于配置文件配置集群主机列表
cluster.initial_master_nodes: 启动时初始化的参与选主的node,生产环境必填

往 yml 文件中添加下面的配置
vim config/elasticsearch.yml
 
node.name: node-1
cluster.initial_master_nodes: [“node-1”]

img

解决完上边问题之后,发现主机内网IP:9200 能正常访问,但是 外网 IP:9200 仍然无法访问。这是为什么呢?

在这里插入图片描述

这就关系到华为云安全组配置的问题。其他像阿里云、腾讯云也是有安全组的概念,所以如果使用云服务器部署的还需要考虑安全组的配置问题,开放9200端口

解决完上边的报错问题后,浏览器输入 IP:9200 会返回如下正常外网页面

### 配置Elasticsearch以允许外部网络访问 为了使Elasticsearch能够被外部网络访问,需要对配置文件 `elasticsearch.yml` 进行相应的调整。以下是具体的解决方案: #### 修改配置文件 编辑 `elasticsearch.yml` 文件,可以通过命令 `vim config/elasticsearch.yml` 完成操作[^1]。找到并修改以下参数: ```yaml network.host: 0.0.0.0 ``` 此设置表示 Elasticsearch 将监听所有的网络接口,而不仅仅局限于本地回环地址 (localhost)。 如果希望进一步增强安全性,可以指定特定的 IP 地址代替 `0.0.0.0`,以便仅限于某些网络适配器上的请求处理。 #### 设置跨域支持(可选) 对于需要支持跨域资源共享的应用场景,在同一配置文件中添加如下选项来启用 CORS 功能[^3]: ```yaml http.cors.enabled: true http.cors.allow-origin: "*" ``` 上述配置使得任何源都可以向该服务发起 HTTP 请求;然而生产环境中建议更精确地定义允许的来源列表而非通配符(*)。 #### 权限管理 确保运行 Elasticsearch 的用户拥有足够的权限去读写数据目录及其子目录下的资源。这通常涉及更改这些路径所属组以及所有权的操作: ```bash chown -R elasticsearch:elasticsearch /usr/local/elasticsearch su - elasticsearch ``` 这里假设 `/usr/local/elasticsearch` 是软件安装位置,并切换到名为 'elasticsearch' 的专用账户下执行后续动作[^2]. #### RedHat Linux 下额外注意事项 在基于Red Hat发行版操作系统上部署时,除了以上提到的内容之外还需要注意解压缩过程中的细节问题。例如当下载的是 `.tar.gz` 压缩包形式分发版本,则需按照下面方式展开档案内容至目标存储空间内: ```bash tar -xzvf elasticsearch-5.0.0.tar.gz -C 解压文件的目标存放目录 ``` 另外也要记得查看 JVM 参数设定部分(`jvm.options`)是否有影响远程连接行为的关键项存在[^4]。 完成所有改动之后重启 ElasticSearch 实例生效新的设定即可实现外网正常访问功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值