es集群搭建

时间:2021-08-17 11:54:09

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让输出信息更友好的显示

结果如下表示集群已搭建成功:

es集群搭建

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 $?

es集群搭建

es集群搭建

6、集群管理-cerebro

下载cerebro

wget https://github.com/lmenezes/cerebro/releases/download/v0.7.2/cerebro-0.7.2.zip

解压并配置application.conf 

es集群搭建

启动后,访问http://127.0.0.1:9000 即可

es集群搭建

因为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配置如下:

es集群搭建

此时重启nginx,再登录访问域名时就需要输入账号密码了。不输入密码会报401 Authorization Required错误


另如果logstash启动多个配置需先建立单独存在配置文件目录,

es集群搭建

然后启动
nohup  ./logstash -f ../conf &