在虚拟机上安装elasticsearch出现了比较多的问题,由于官网文档没有详细介绍,导致问题比较多需要自己一个一个解决,这里介绍下安装的过程和部分问题解决办法,以及elasticsearch的启动停止和远程访问。
测试环境:centos7.6
,jdk1.8
,elasticsearch6.6.0
官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/6.6/index.html
elasticsearch需要java8环境的支持,注意先设置好java。
[root@localhost ~]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
安装elasticsearch
安装目录
cd /usr/local/src
这里安装的是6.6.0版本的,其他版本安装包可自行官网查看
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
然后提取如下:
tar -xvf elasticsearch-6.6.0.tar.gz
然后它会在当前目录中创建一堆文件和文件夹。然后我们进入bin目录,如下所示:
cd elasticsearch-6.6.0 /bin
启动命令
./elasticsearch
启动之前需要先创建用户和设置权限,由于安全问题elasticsearch不让用root用户直接运行,所以要创建新用户
创建新用户
添加用户组、用户、设置密码(注意密码不能太简单也不行、并且八位以上)
groupadd elastic
useradd elastic -g elastic
passwd elastic
修改用户操作权限
chown -R elastic:elastic /usr/local/src/elasticsearch-6.6.0/
切换用户
su - elastic
由于我是虚拟机运行,导致又报了几个内存不足相关的错误
1、[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:
sudo sysctl -w vm.max_map_count=262144
2、[1]: max file descriptors [65535] for elasticsearch process likely too low, increase to at least [65536]
解决办法:
sudo vi /etc/security/limits.conf
添加如下配置,elastic为用户名
elastic hard nofile 65536
elastic soft nofile 65536
3、OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000006ca660000, 4120510464, 0) failed; error='Cannot allocate memory' (errno=12)
解决办法:
(1) 修改虚拟机设置 处理器-》每个处理器的核心数量为2(反正比1大就行,自行把握,修改配置需要先关机,然后开机生效)
(2) 修改elasticsearch配置
vi /usr/local/src/elasticsearch-6.6.0/config/jvm.options
-Xms1g
-Xmx1g
修改为刚才配置的数量
-Xms2g
-Xmx2g
启动elasticsearch和后台运行
elasticsearch启动比较缓慢,可以给多分配点内存加快启动速度。
1、直接前台启动,停止ctrl+c就可以了
[elastic@localhost elasticsearch-6.6.0]$ ./bin/elasticsearch
2、后台启动,停止可以使用 kill -9 PID
[elastic@localhost elasticsearch-6.6.0]$ ./bin/elasticsearch -d
启动成功一半会开启两个监听端口,我们可以通过9200端口进行访问
- 9200 http协议的RESTful接口和外部通讯
- 9300 tcp通讯端口,集群间和TCPClient都走的它,
[root@localhost ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7105/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7110/nginx: master
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6572/sshd
tcp6 0 0 :::6379 :::* LISTEN 7736/docker-proxy
tcp6 0 0 :::9200 :::* LISTEN 10071/java
tcp6 0 0 :::9300 :::* LISTEN 10071/java
tcp6 0 0 :::22 :::* LISTEN 6572/sshd
访问结果一般如下:
[root@localhost ~]# curl 127.0.0.1:9200
{
"name" : "nJliXyp",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "E2Qf0imzSji5ZKzEZYOBbw",
"version" : {
"number" : "6.6.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "1fd8f69",
"build_date" : "2019-02-13T17:10:04.160291Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
但是端口显示的只可以本地访问,下面介绍如何开启远程访问。
配置远程访问
由于安全问题elasticsearch之允许本机访问,我们需要修改elasticsearch的配置文件
vim /usr/local/src/elasticsearch-6.6.0/config/elasticsearch.yml
去掉network.host的注释,并修改为
network.host: 0.0.0.0
开发环境可以这样设置,用于生产环境可以修改为固定的ip或者本机访问。
然后在外部就可以通过 ip:9200 访问了,显示内容如上一致。
mysql和elasticsearch数据同步请参见:《elasticsearch从mysql同步数据之logstash的安装和使用》