如何将Elasticsearch安装到CentOS 7上?

如何将Elasticsearch安装到CentOS 7上?

本文介绍了如何将Elasticsearch安装到CentOS 7上。

前提条件

登录系统的用户要有sudo权限才能安装软件包。

安装Elasticsearch

将Elasticsearch安装到CentOS 7上的推荐方法是从官方的Elasticsearch存储库安装rpm软件包。

本文发稿时,Elasticsearch的***版是6.7,要求Java 8或更高版本。你可以使用官方的Oracle Java发行版或OpenJDK 8。

我们将安装OpenJDK 8:

  1. sudo yum install java-1.8.0-openjdk-devel 

通过输出Java版本来验证Java的安装:

  1. java -version 

输出应类似这样:

  1. openjdk version "1.8.0_201"  
  2. OpenJDK Runtime Environment (build 1.8.0_201-b09)  
  3. OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)  

鉴于Java已安装,下一步是添加Elasticsearch注册库。

使用下列命令导入注册库的GPG密钥:

  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 

打开文本编辑工具,创建下列注册库文件:

  1. sudo nano /etc/yum.repos.d/elasticsearch.repo 

将下列内容粘贴到该文件中:

  1. /etc/yum.repos.d/elasticsearch.repo  
  2. [elasticsearch-6.x]  
  3. name=Elasticsearch repository for 6.x packages  
  4. baseurl=https://artifacts.elastic.co/packages/6.x/yum  
  5. gpgcheck=1  
  6. gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch  
  7. enabled=1  
  8. autorefresh=1  
  9. type=rpm-md  

保存文件,关闭文本编辑工具。

如果你想安装之前版本的Elasticsearch,将上述命令中的6.x换成你需要的那个版本。

现在可以输入下列命令来安装Elasticsearch软件包:

  1. sudo yum install elasticsearch 

一旦安装过程完成,运行下列命令,开始并启用服务:

  1. sudo systemctl enable elasticsearch.service  
  2. sudo systemctl start elasticsearch.service  

你可以使用下列curl命令,通过向localhost上的端口9200发送HTTP请求来验证Elasticsearch在正常运行:

  1. curl -X GET "localhost:9200/" 

输出应类似下面这样:

  1.  
  2. "name" : "fLVNqN_" 
  3. "cluster_name" : "elasticsearch" 
  4. "cluster_uuid" : "6zKcQppYREaRH0tyfJ9j7Q" 
  5. "version" : {  
  6. "number" : "6.7.0" 
  7. "build_flavor" : "default" 
  8. "build_type" : "rpm" 
  9. "build_hash" : "8453f77" 
  10. "build_date" : "2019-03-21T15:32:29.844721Z" 
  11. "build_snapshot" : false 
  12. "lucene_version" : "7.7.0" 
  13. "minimum_wire_compatibility_version" : "5.6.0" 
  14. "minimum_index_compatibility_version" : "5.0.0"  
  15. },  
  16. "tagline" : "You Know, for Search"  
  17.  

可能5秒至10秒后服务才开启。如果你看到curl: (7) Failed to connect to localhost port 9200: Connection refused,那就等几秒,再试一下。

想查看Elasticsearch服务记录的消息,可以使用下列命令:

  1. sudo journalctl -u elasticsearch 

至此,你已将Elasticsearch安装在CentOS服务器上。

配置Elasticsearch

Elasticsearch数据存储在/var/lib/elasticsearch目录中,而配置文件位于/etc/elasticsearch。

默认情况下,Elasticsearch配置成只侦听localhost。如果连接到数据库的客户端也在同一个主机上运行,你安装的又是单节点集群,就不需要更改默认配置文件。

远程访问

默认情况下,Elasticsearch并不实施验证机制,所以它可以被能访问HTTP API的任何人访问。如果你想远程访问Elasticsearch服务器,就需要配置防火墙,允许只从可信的客户端访问Elasticsearch端口9200。

从CentOS 7开始,FirewallD取代iptable,成为默认的防火墙管理工具。

运行下列命令,允许从远程可信IP地址通过端口9200来访问:

  1. sudo firewall-cmd --new-zone=elasticsearch --permanent  
  2. sudo firewall-cmd --reload  
  3. sudo firewall-cmd --zone=elasticsearch --add-source=192.168.121.80/32 --permanent  
  4. sudo firewall-cmd --zone=elasticsearch --add-port=9200/tcp --permanent  
  5. sudo firewall-cmd --reload  

别忘了将192.168.121.80换成你的远程IP地址。

之后,如果你想允许从另一个IP地址来访问,请使用:

  1. sudo firewall-cmd --zone=elasticsearch --add-source= --permanent  
  2. sudo firewall-cmd --reload  

一旦防火墙配置完毕,下一步是编辑Elasticsearch配置,让Elasticsearch可以侦听外部连接。

为此,打开elasticsearch.yml配置文件:

  1. sudo nano /etc/elasticsearch/elasticsearch.yml 

搜索含有network.host的那一行,取消注释,把值改成0.0.0.0:

  1. /etc/elasticsearch/elasticsearch.yml  
  2. network.host: 0.0.0.0  

如果你的机器上有多个网络接口,可以指定接口的IP地址,那样Elasticsearch只侦听指定的接口。

重启Elasticsearch服务,让变更生效:

  1. sudo systemctl restart elasticsearch 

结束语