centos7 部署elasticsearch
环境:
系统:centos7.3
版本:elasticsearch6.2.3
head版本:https://codeload.github.com/mobz/elasticsearch-head/zip/master (这个就是下面说的head目录,把解压后的文件夹命名为head,但也不是强制性的要求)
首先下载elasticsearch
下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.zip
解压到某个普通用户家目录下(解压目录没有硬性要求,但是必须把解压的文件夹所有者改为普通用户,因为开启服务时我们需要用普通用户才能启动服务,root用户不行)
然后执行该解压目录下的bin下的elasticsearch文件
可能会报错,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],修改
解决:
切换到root用户
执行命令:
sysctl -w vm.max_map_count=262144
查看结果:
sysctl -a|grep vm.max_map_count
显示:
vm.max_map_count = 262144
上述方法修改之后,如果重启虚拟机将失效,所以:
解决办法:
在 /etc/sysctl.conf文件最后添加一行
vm.max_map_count=262144
即可永久修改
上面这种问题我还遇到过其他的,快速解决的方法是ulimit -a查看全部属性
比如说,他提示文件数太小,就是open files哪里,直接使用ulimit -n 2048就能直接设置为该值,其中-n是括号里面的那个n,如果想改processes那个,就该用-u
访问localhost:9200,效果如下,这是Firefox浏览器,我用360极速浏览器,发现没有东西显示出来
但是如果我们从外面访问,会无法访问
解决方法
vim ./config/elasticsearch.yml
在最后增加一行,network.host:0.0.0.0,或者在原文找到network.host修改其值
下载node
去官网下载nodejs,https://nodejs.org/en/download/
下载好之后,解压./configure;make;make install
查看node是否安装成功
node -v
顺便看一下npm
npm -v
安装grunt
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install -g grunt-cli --registry=https://registry.npm.taobao.org
检测是否成功安装grunt
grunt -version
编辑文件head/Gruntfile.js
connect: { server: { options: { port: 9100, hostname: '*', #这里改为* base: '.', keepalive: true } } }
编辑head/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
把上面的localhost改为服务器ip
运行head
npm install
grunt server
执行上面两条命令后,提示已连接localhost:9100
如果不出意外的话,连接那里是灰色的,还需要进行额外的配置
vim $ES_HOME$
/config/elasticsearch
.yml
# 增加如下字段
http.cors.enabled:
true
http.cors.allow-origin:
"*"
input { jdbc { jdbc_driver_library => "/usr/local/elasticsearch/plugins/logstash/mysql-connector-java-5.1.44-bin.jar" #解压后的mysql连接文件路径 jdbc_driver_class => "com.mysql.jdbc.Driver" jdbc_connection_string => "jdbc:mysql://192.168.0.200:3306/vegent?characterEncoding=UTF-8&useSSL=false" #ip需要更改为自己的ip,vegent是数据库名? jdbc_user => "test" #数据库用户名 jdbc_password => "test" #数据库test用户密码 statement => "SELECT * FROM vegent" #数据库表 jdbc_paging_enabled => "true" jdbc_page_size => "50000" schedule => "* * * * *" } } filter { json { source => "message" remove_field => ["message"] } } output { stdout { codec => rubydebug } elasticsearch { hosts => "192.168.0.200" #这个也要改为自己的ip index => "vegent" #不知道这个又是什么鬼,跟上面的vegent保持一致吧 } }
现在执行bin/logstash -f logstash.conf
可以看到,有数据出来了
参考文档
https://blog.csdn.net/mergerly/article/details/53412417
https://www.cnblogs.com/eleven24/p/7733052.html