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: "*"
 
修改完成后重启es和head即可,即9100和9200端口应用
 
现在我们在加上一个logstash
下载地址 https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz
运行时只需要执行命令bin/logstash -f logstash.conf ,但是我们先不运行,因为我们还需要进行其他配置。比如说,我们现在尝试用logstash连接mysql,并同步到elasticsearch
首先我们需要下载mysql连接工具https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz
在logstash解压目录下的bin目录新建logstash.conf文件,内容如下(#后面的内容是我注释的,只做解释作用,复制时最好删除)
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

原文地址:https://www.cnblogs.com/biaopei/p/8632877.html