"Elasticsearch"是一个流行的开源搜索和分析引擎,它可以用于实时搜索、日志和事件数据分析等任务。以下是在 CentOS 上安装 Elasticsearch 的基本步骤:
- 安装 Java:
Elasticsearch 是基于 Java 的应用程序,所以首先需要确保系统上已经安装了 Java。使用以下命令来检查是否已经安装 Java:
java -version
如果未安装 Java,使用以下命令安装 OpenJDK:
sudo yum install java-1.8.0-openjdk
- 导入 Elastic GPG 密钥:
执行以下命令导入 Elastic GPG 密钥,以确保安装的 Elasticsearch 软件包是官方签名的:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- 添加 Elastic 源:
创建一个.repo
文件来添加 Elastic 软件包源。在/etc/yum.repos.d/
目录下创建一个新文件,例如elasticsearch.repo
,并将以下内容添加到文件中:
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
保存并关闭文件。
- 安装 Elasticsearch:
使用以下命令来安装 Elasticsearch:
sudo yum install elasticsearch
- 配置 Elasticsearch:
修改 Elasticsearch 的配置文件以满足需求。主要配置文件位于/etc/elasticsearch/elasticsearch.yml
。使用文本编辑器(如 Nano 或 Vim)来编辑该文件。
sudo nano /etc/elasticsearch/elasticsearch.yml
配置文件包含各种设置,包括网络配置、索引存储路径、集群设置等。根据需求进行配置。保存并关闭文件。
- 启动 Elasticsearch 服务:
使用以下命令启动 Elasticsearch 服务并设置它在系统启动时自动启动:
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
- 验证 Elasticsearch 运行状态:
使用以下命令检查 Elasticsearch 服务的运行状态
(或者http://ip:9200,无法访问请继续阅读):
sudo systemctl status elasticsearch
- 安装 Kibana 和 Logstash(可选):
如果你打算使用 Elastic Stack(Elasticsearch、Kibana 和 Logstash)进行数据可视化和日志处理,继续安装 Kibana 和 Logstash。
安装 Kibana:
sudo yum install kibana
安装 Logstash:
sudo yum install logstash
然后,按照官方文档进一步配置和启动 Kibana 和 Logstash。
现在,Elasticsearch 已经安装并运行在 CentOS 系统上。通过 HTTP 接口或使用相关客户端库与 Elasticsearch 进行交互,索引和搜索数据。
问题1:无法通过ip:9200访问
在Elasticsearch中允许远程访问时需要谨慎,因为它可能会引入安全风险。以下是步骤:
- 配置
elasticsearch.yml
文件:
打开Elasticsearch的配置文件,通常在/etc/elasticsearch/elasticsearch.yml
中,使用文本编辑器进行编辑:
sudo nano /etc/elasticsearch/elasticsearch.yml
在配置文件中,找到以下设置并进行修改:
network.host: 0.0.0.0
将 network.host
的值从默认的 localhost
或 127.0.0.1
更改为 0.0.0.0
,这将允许Elasticsearch监听所有网络接口上的请求。
- 配置
elasticsearch.yml
文件的绑定地址:
为了增强安全性,可以配置network.bind_host
和network.publish_host
,以限制监听到特定的网络接口或IP地址。例如,将elasticsearch.yml
文件的配置更改如下:
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: your_server_ip
将 your_server_ip
替换为你的服务器的公共IP地址。这将限制Elasticsearch仅在指定的IP地址上监听请求。
- 配置防火墙规则:
确保服务器上的防火墙允许Elasticsearch的端口(默认为9200)上的传入连接。使用防火墙工具(如firewalld或iptables)来配置相应的规则。
例如,使用firewalld来允许9200端口的入站连接:
sudo firewall-cmd --permanent --add-port=9200/tcp
sudo firewall-cmd --reload
- 重启Elasticsearch服务:
当完成配置后,重新启动Elasticsearch服务以使更改生效:
sudo systemctl restart elasticsearch
问题2:启动报错
根据es的启动报错日志(/var/log/elasticsearch/elasticsearch.log)可看出为node 验证错误:
Elasticsearch默认会被配置为具备集群能力,在这里我们改为单一节点模式(/etc/elasticsearch/elasticsearch.yml):
cluster.name: my-application
node.name: node-1
discovery.type: single-node
重启服务:
sudo systemctl restart elasticsearch
访问:ip:9200