终于解决!ElasticSearch公网无法访问的问题

因工作的需要,要使用elasticsearch,安装完了,启动也成功了之后,发现公网无法访问elasticsearch的服务,于是开始在CSDN里四处寻找问题原因。我自己是使用的阿里云服务器,系统是cento7。

第一种方法是直接关闭防火墙:

(非root用户记得命令前加sudo,没有sudo权限可以vim /etc/sudoers,在root    ALL=(ALL)       ALL下面加上:你的用户名 ALL=(ALL:ALL)   ALL )

# 暂时关闭防火墙,重新开机后防火墙还是会启动
systemctl stop firewalld    

#看一下防火墙状态是不是dead  
systemctl status firewalld   

# 当然你也可以永久关闭防火墙,开机防火墙也不会启动
systemctl disable firewalld 

第二种方法是给elasticsearch的9200端口设置访问权限:

# 开启防火墙
systemctl start firewalld    

#看一下防火墙状态是不是active(running)
systemctl status firewalld    

#永久开放9200端口
firewall-cmd --permanent --zone=public --add-port=9200/tcp    

#重启防火墙
firewall-cmd --reload    

#测试9200是否开放,yes为开放
sudo firewall-cmd --permanent --query-port=9200/tcp    

第三种方法是在 /etc/elasticsearch/elasticsearch.yml (默认安装位置是这个,具体的elasticsearch.yml文件位置以你自己实际安装情况为准)中修改Elasticsearch的X-Pack安全功能的设置:

# --------------------------------------------------------------------------------

# Enable security features
xpack.security.enabled: false        (改为false)

xpack.security.enrollment.enabled: true

# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: false                     (改为false)
  keystore.path: certs/http.p12

# Enable encryption and mutual authentication between cluster nodes
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12
# Create a new cluster with the current node only
# Additional nodes can still join the cluster later
# cluster.initial_master_nodes: ["iZbp1fo2y5vjf68zt51hpsZ"]

# Allow HTTP API connections from anywhere
# Connections are encrypted and require user authentication
http.host: 0.0.0.0

# Allow other nodes to join the cluster from anywhere
# Connections are encrypted and mutually authenticated
#transport.host: 0.0.0.0

#----------------------- END SECURITY AUTO CONFIGURATION -------------------------
  1. xpack.security.enabled: false:这个设置项禁用了Elasticsearch的X-Pack安全功能。如果设置为true,Elasticsearch将启用用户认证、角色权限管理、HTTPS加密等安全特性。

  2. xpack.security.enrollment.enabled: false:这个设置项禁用了自动节点加入集群的安全验证过程。如果设置为true,新加入的节点在加入集群时需要提供有效的证书和密码。

  3. xpack.security.http.ssl::这部分配置是关于HTTP API客户端连接(如Kibana、Logstash和Agents)的SSL/TLS加密设置。

    • enabled: false:这个设置项禁用了HTTP API客户端连接的SSL/TLS加密。
    • keystore.path: certs/http.p12:如果启用了SSL/TLS加密,这个设置项指定了包含HTTPS证书和私钥的PKCS12格式的密钥库文件的位置。
  4. xpack.security.transport.ssl::这部分配置是关于集群节点间通信的SSL/TLS加密和相互认证设置。

    • enabled: false:这个设置项禁用了集群节点间通信的SSL/TLS加密。
    • verification_mode: certificate:如果启用了SSL/TLS加密,这个设置项指定了节点间通信的证书验证模式。在这个例子中,设置为certificate表示需要进行严格的证书验证。

请注意,这些配置可能会对Elasticsearch的安全性和性能产生影响。在生产环境中,建议启用X-Pack安全功能并正确配置SSL/TLS加密以保护数据的安全和隐私。在调整这些设置时,请确保理解其含义并根据你的具体需求进行配置。

另外看到有人说需要更改network.host: 0.0.0.0为自己的外网ip,这个不需要的哈。0.0.0.0会自动适配你的服务器ip。

在前面三种方法都没办法解决后,我开始思考可能不是服务器自身的问题,而是阿里云的配置问题。因为服务器里 curl 私网ip地址:9200 是能返回响应的,但是curl 公网ip地址:9200是无法返回的。

私网IP地址可以访问:

所以考虑可能是公网ip的端口号没有开放,之前开放的都是私网ip的端口号。云服务器中,私网ip就是你 ifconfig 后服务器返回的ip地址,但是公网ip端口号的管理是需要到云服务器控制页面去操作的。

于是进入阿里云的云服务器管理控制台,尝试去寻找答案。

第四种方法是修改云服务器的安全组配置:

https://ecs.console.aliyun.com/   阿里云ECS云服务器管理网址

1、点击实例

2、点击更多-网络和安全组-安全组配置

3、点击服务器实例名称

4、点击手动添加,添加公网允许的端口

5、我为了省事直接把所有的端口号都加上了(1/65535)

6、最后访问公网访问成功!

  • 19
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 16.04是一个基于Debian的Linux发行版,而Elasticsearch是一款流行的开源搜索和分析引擎。要在该系统上安装并配置Elasticsearch以便通过IP地址访问,您可以按照以下步骤操作: 1. **更新包列表和添加Elasticsearch官方仓库**: ```bash sudo apt-get update sudo apt-get install software-properties-common curl -fs https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elasticsearch.list ``` 2. **安装Elasticsearch**: ```bash sudo apt-get update sudo apt-get install elasticsearch ``` 3. **启动服务**: ```bash sudo service elasticsearch start ``` 4. **检查服务是否正在运行**: ```bash sudo service elasticsearch status ``` 5. **配置Elasticsearch以监听所有网络接口(包括IP)**: 进入Elasticsearch配置文件: ``` sudo nano /etc/elasticsearch/elasticsearch.yml ``` 在`network.host`行设置为`*` 或 `0.0.0.0`,让Elasticsearch监听所有可用的网络接口。 6. **重启Elasticsearch应用新配置**: ```bash sudo service elasticsearch restart ``` 7. **验证IP访问**: 使用curl命令尝试从另一个机器连接到Elasticsearch: ``` curl -XGET 'http://your_server_ip:9200/' ``` 将`your_server_ip`替换为您的服务器实际IP地址。 8. **安全性和权限考虑**: 如果您计划在生产环境中使用,可能还需要设置防火墙规则,并确保只有授权用户可以访问。 相关问题: 1. 如何查看Elasticsearch的默认端口? 2. 如何在安全模式下运行Elasticsearch? 3. 如何在Elasticsearch中创建索引?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值