单机版:
解压elasticsearch
配置vim elasticsearch.yml
sed -n '/^#/!p' /usr/local/ELK/elasticsearch/config/elasticsearch.yml cluster.name: my-application # 设置ES集群的集群名称 node.name: node-1 #本台机器在集群中的名称 path.data: /usr/local/ELK/elasticsearch/data #设置ES存储data path.logs: /usr/local/ELK/elasticsearch/logs #设置ES存储logs network.host: 192.168.254.3 #访问地址 http.port: 9200 #访问端口 #以下两项设置es5.x版本的head插件可以访问es http.cors.enabled: true #开启跨域访问支持,默认为false http.cors.allow-origin: "*" #跨域访问允许的域名地址,使用正则表达式
因为es禁止使用root账号启动,所以新建账号然后进入bin目录,./elasticsearch启动
useradd elasticsearch -s /bin/bash chown -R elasticsearch.elasticsearch /usr/local/ELK/elasticsearch su elasticsearch ./elasticsearch
启动时报错
查看日志,显示需要2G的内存。
解决:因为elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配即可
config/jvm.options
解决方法
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024 #修改为 * soft nproc 2048
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
再次启动再次报错:
ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
解决:elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false bootstrap.system_call_filter: false
再次启动成功
集群:
1、复制5份es,版本要相同,且各个节点上jdk版本也要相同,否则会报数据同步格式不一致 invalid internal transport message format。
2、配置elasticsearch.yml,主要修改以下方面:
cluster.name: my-application #集群名,各个节点要一致
node.name: node-01 #节点名
path.data: /data1/elk/elasticsearch/data #数据存储位置
path.logs: /data1/elk/elasticsearch/logs #日志
bootstrap.system_call_filter: false #关闭锁内存
network.host: 192.168.0.1 #各个节点IP,每个节点写自己的ip
http.port: 9200 #端口
discovery.zen.ping.unicast.hosts: ["192.168.0.1", "192.168.0.2","192.168.0.3","192.168.0.4","192.168.0.5"] #集群ip列表
discovery.zen.minimum_master_nodes: 3 #集群master节点数,建议为(集群节点总数/2)+1
3、配置好直接启动即可,随意先启动哪一台,先启动即为master。9300是tcp通讯端口,集群间和TCPClient都走的它,所以各个主机间9300一定要能互通。
4、验证集群 ,es 9200是http协议的RESTful接口,可用此端口查看集群状态
curl -XGET 'http://192.168.0.1:9200/_cat/nodes?pretty'
其中
- _cat代表查看信息
- nodes为查看节点信息,默认会显示为一行,所以就用刀了?preety让信息更有好的显示
- ?preety让输出信息更友好的显示
结果如下表示集群已搭建成功:
5、es启动脚本
vim /etc/init.d/es
#!/bin/sh #chkconfig: 2345 80 05 #description: elasticsearch export JAVA_HOME=/usr/local/jdk1.8.0_92 export JAVA_BIN=/usr/local/jdk1.8.0_92/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH case "$1" in start) su dev<<! cd /data1/elk/elasticsearch ./bin/elasticsearch -d ! echo "elasticsearch startup" ;; stop) es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'` kill -9 $es_pid echo "elasticsearch stopped" ;; restart) es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'` kill -9 $es_pid echo "elasticsearch stopped" su dev<<! cd /data1/elk/elasticsearch ./bin/elasticsearch -d ! echo "elasticsearch startup" ;; *) echo "start|stop|restart" ;; esac exit $?
6、集群管理-cerebro
下载cerebro
wget https://github.com/lmenezes/cerebro/releases/download/v0.7.2/cerebro-0.7.2.zip
解压并配置application.conf
启动后,访问http://127.0.0.1:9000 即可
因为cerebo目前没有什么登录验证(最起码写这篇博客时,我还不知道,如果你们知道更方便的登录验证,请留言告诉我,谢谢~),用户直接访问域名即可,不是很安全,所以用nginx配置下登录验证。
1、在location /下添加auth_basic_user_file /usr/local/.passwd;
2、登陆http://tool.oschina.net/htpasswd 输入用户名和密码,在线生成加密密码
3、将生成的密码写入/usr/local/.passwd文件中
echo "wuyun:$apr1$TrU5vUSC$RBuz3xG67Mr2pnAV596N5." >/usr/local/.passwd
nginx配置如下:
此时重启nginx,再登录访问域名时就需要输入账号密码了。不输入密码会报401 Authorization Required错误
另如果logstash启动多个配置需先建立单独存在配置文件目录,
然后启动
nohup ./logstash -f ../conf &