如何将Elasticsearch安装到CentOS 7上?
本文介绍了如何将Elasticsearch安装到CentOS 7上。
前提条件
登录系统的用户要有sudo权限才能安装软件包。
安装Elasticsearch
将Elasticsearch安装到CentOS 7上的推荐方法是从官方的Elasticsearch存储库安装rpm软件包。
本文发稿时,Elasticsearch的***版是6.7,要求Java 8或更高版本。你可以使用官方的Oracle Java发行版或OpenJDK 8。
我们将安装OpenJDK 8:
- sudo yum install java-1.8.0-openjdk-devel
通过输出Java版本来验证Java的安装:
- java -version
输出应类似这样:
- openjdk version "1.8.0_201"
- OpenJDK Runtime Environment (build 1.8.0_201-b09)
- OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
鉴于Java已安装,下一步是添加Elasticsearch注册库。
使用下列命令导入注册库的GPG密钥:
- sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
打开文本编辑工具,创建下列注册库文件:
- sudo nano /etc/yum.repos.d/elasticsearch.repo
将下列内容粘贴到该文件中:
- /etc/yum.repos.d/elasticsearch.repo
- [elasticsearch-6.x]
- name=Elasticsearch repository for 6.x packages
- baseurl=https://artifacts.elastic.co/packages/6.x/yum
- gpgcheck=1
- gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
- enabled=1
- autorefresh=1
- type=rpm-md
保存文件,关闭文本编辑工具。
如果你想安装之前版本的Elasticsearch,将上述命令中的6.x换成你需要的那个版本。
现在可以输入下列命令来安装Elasticsearch软件包:
- sudo yum install elasticsearch
一旦安装过程完成,运行下列命令,开始并启用服务:
- sudo systemctl enable elasticsearch.service
- sudo systemctl start elasticsearch.service
你可以使用下列curl命令,通过向localhost上的端口9200发送HTTP请求来验证Elasticsearch在正常运行:
- curl -X GET "localhost:9200/"
输出应类似下面这样:
- {
- "name" : "fLVNqN_",
- "cluster_name" : "elasticsearch",
- "cluster_uuid" : "6zKcQppYREaRH0tyfJ9j7Q",
- "version" : {
- "number" : "6.7.0",
- "build_flavor" : "default",
- "build_type" : "rpm",
- "build_hash" : "8453f77",
- "build_date" : "2019-03-21T15:32:29.844721Z",
- "build_snapshot" : false,
- "lucene_version" : "7.7.0",
- "minimum_wire_compatibility_version" : "5.6.0",
- "minimum_index_compatibility_version" : "5.0.0"
- },
- "tagline" : "You Know, for Search"
- }
可能5秒至10秒后服务才开启。如果你看到curl: (7) Failed to connect to localhost port 9200: Connection refused,那就等几秒,再试一下。
想查看Elasticsearch服务记录的消息,可以使用下列命令:
- 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来访问:
- sudo firewall-cmd --new-zone=elasticsearch --permanent
- sudo firewall-cmd --reload
- sudo firewall-cmd --zone=elasticsearch --add-source=192.168.121.80/32 --permanent
- sudo firewall-cmd --zone=elasticsearch --add-port=9200/tcp --permanent
- sudo firewall-cmd --reload
别忘了将192.168.121.80换成你的远程IP地址。
之后,如果你想允许从另一个IP地址来访问,请使用:
- sudo firewall-cmd --zone=elasticsearch --add-source= --permanent
- sudo firewall-cmd --reload
一旦防火墙配置完毕,下一步是编辑Elasticsearch配置,让Elasticsearch可以侦听外部连接。
为此,打开elasticsearch.yml配置文件:
- sudo nano /etc/elasticsearch/elasticsearch.yml
搜索含有network.host的那一行,取消注释,把值改成0.0.0.0:
- /etc/elasticsearch/elasticsearch.yml
- network.host: 0.0.0.0
如果你的机器上有多个网络接口,可以指定接口的IP地址,那样Elasticsearch只侦听指定的接口。
重启Elasticsearch服务,让变更生效:
- sudo systemctl restart elasticsearch
结束语