elasticsearch集群+logstash安装
安装准备:
ES版本:6.4.1
环境CentOS6, jdk版本1.8
安装elasticsearch:
下载解压ES文件
修改${es_home}/config/elasticsearch.yml
配置文件:
#集群名称
cluster.name: aubin-cluster
#节点名称
node.name: node1
#指定该节点是否有资格被选举成为master节点,默认是true,
node.master: true
#允许该节点存储数据(默认开启)
node.data: true
#数据的默认存放路径
path.data: /web/soft/elasticsearch/data/
#日志的默认存放路径
path.logs: /web/soft/elasticsearch/logs/
#bind IP地址
network.host: 0.0.0.0
#服务端口
http.port: 9200
#集群服务的端口
transport.tcp.port: 9300
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#集群master节点IP地址
discovery.zen.ping.unicast.hosts: ["172.18.68.11:9300"]
注:
服务器环境是CentOS 6,不支持SecComp,CentOS7已经解决这个问题,当前服务器不能换系统,只能禁用:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
系统参数修改:
/etc/sysctl.conf:
vm.max_map_count=262144
/etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
/etc/security/limits.d/90-nproc.conf
* soft nproc 4096
root soft nproc unlimited
集群安装时其他几机器上参考这个配置文件,确保同一网段下集群名称一致,则ES会自动将他们建立成集群。
安装analysis-ik(分词插件)
离线安装(确保版本和ES一致):
analysis-ik下载地址
先去下载对应版本的zip包,解析到your-es-root/plugins/下,重启你的ES。
启动ES(先创建ES用户)
内存设置一般为机器内存的1/2
设置ES内存:${ES_HOME}/conf/jvm.options
-Xms4g
-Xmx4g
启动: ./bin/elasticsearch -d
\6. 检查启动是否正常
curl -XGET "http://127.0.0.1:9200/_cat/nodes?v&pretty"
安装logstash
下载解压logstash注意版本和ES版本一致。
安装logstash的插件,用于同步mysql数据到ES
a) ./bin/logstash-plugin install logstash-input-jdbc
b) ./bin/logstash-plugin install logstash-output-elasticsearch
离线安装:点击
修改${logstash_home}/config/mysql.conf 配置文件没有就新建个.
input {
stdin {
}
jdbc {
# 数据库地址 端口 数据库名
jdbc_connection_string => "jdbc:mysql://172.16.16.112:3306/nxdb_cms"
# 数据库用户名
jdbc_user => "nxdbcms"
# 数据库密码
jdbc_password => "nxdbcms_2018"
# mysql java驱动地址
jdbc_driver_library => "/web/soft/logstash-6.4.0/mysql-connector-java-5.1.46-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# sql 语句文件
statement_filepath => "/web/soft/logstash-6.4.0/config/test1.sql"
schedule => "* * * * *"
#如果有多个input 输入到不同的type 课用下面的type 字段区分,后续在output下面分别做逻辑(if type=="jdbc " then..)
type => "jdbc"
#use_column_value=>true
#tracking_column => "updatetime"
#--使用别名小写,默认都是小写,sql别名有大小写这里只认小写。
}
}
filter {
json {
source => "message"
remove_field => ["message"]
}
}
output {
stdout {
codec => json_lines
}
elasticsearch {
hosts => "172.16.16.109:9200"
index => "cms"
document_id => "%{id}"
}
}
启动logstash
./bin/logstash -f ../config/mysql.conf