一:elasticsearch

1.1:环境初始化: 最小化安装 Centos 7 操作系统的虚拟机,vcpu 2,内存 4G 或更多,操作系统盘 50G,主机名设置规则为linux-hostX.exmaple.com,其中host1和host2为elasticsearch 服务器,为保证效果特额外添加一块单独的数据磁盘 并格式化挂载到/data。 1.1.1:主机名和磁盘挂载: [root@localhost ~]# hostnamectl set-hostname linux-host1.exmaple.com && reboot #各服务器配置自己的主机名并重启 [root@localhost ~]# hostnamectl set-hostname linux-host2.exmaple.com && reboot [root@linux-host1 ~]# mkdir /elk [root@linux-host1 ~]# mount /dev/sdb /elk/ [root@linux-host1 ~]# echo " /dev/sdb /elk/ xfs defaults 0 0" >> /etc/fstab

1.1.2:防火墙和 selinux: 关闭防所有服务器的火墙和 selinux [root@linux-host1 ~]# systemctl disable firewalld [root@linux-host1 ~]# systemctl disable NetworkManager [root@linux-host1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config [root@linux-host1 ~]# echo "* soft nofile 65536" >> /etc/security/limits.conf [root@linux-host1 ~]# echo "* hard nofile 65536" >> /etc/security/limits.conf

1.1.3:设置 epel 源、安装基本操作命令并同步时间: [root@linux-host1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@linux-host1 ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump wget ntpdate [root@linux-host1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [root@linux-host1 ~]# echo "*/5 * * * * ntpdate time1.aliyun.com &> /dev/null && hwclock -w" >> /var/spool/cron/root [root@linux-host1 ~]# systemctl restart crond

1.2:在 host1 和 host2 分别安装 elasticsearch: 1.2.1:在两台服务器准备 java 环境: 因为 elasticsearch 服务运行需要 java 环境,因此两台 elasticsearch 服务器需要 安装 java 环境,可以使用以下方式安装:

本地安装在 oracle 官网下载 rpm 安装包: [root@linux-host1 ~]# yum localinstall jdk-8u92-linux-x64.rpm [root@linux-host1 ~]# tar xvf jdk-8u121-linux-x64.tar.gz -C /usr/local/ [root@linux-host1 ~]# ln -sv /usr/local/jdk1.8.0_121 /usr/local/jdk [root@linux-host1 ~]# ln -sv /usr/local/jdk/bin/java /usr/bin/

[root@linux-host1 ~]# vim /etc/profile export HISTTIMEFORMAT="%F %T whoami " export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/to ols.jar export PATH=$PATH:$JAVA_HOME/bin

[root@linux-host1 ~]# source /etc/profile [root@linux-host1 ~]# java -version java version "1.8.0_121" #确认可以出现当前的 java 版本号 Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

1.3:官网下载 elasticsearch 并安装: 下载地址:https://www.elastic.co/downloads/elasticsearch [root@linux-host1 ~]# yum –y localinstall elasticsearch-6.8.1.rpm

1.3.2:编辑各 elasticsearch 服务器的服务配置文件: [root@linux-host1 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml cluster.name: ELK-Cluster #ELK 的集群名称,名称相同即属于是同一个集群 node.name: elk-node1 #本机在集群内的节点名称 path.data: /elk/data #数据保存目录 path.logs: /elk/logs #日志保存目 bootstrap.memory_lock: true #服务启动的时候锁定足够的内存,防止数据写入 swap network.host: 0.0.0.0 #监听 IP http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.0.13", "192.168.0.51"]

1.3.3:修改内存限制,并同步配置文件: [root@linux-host1 ~]# vim /usr/lib/systemd/system/elasticsearch.service #修改内存限制 LimitMEMLOCK=infinity #无限制使用内存 [root@linux-host1 ~]# vim /etc/elasticsearch/jvm.options 22 -Xms2g 23 -Xmx2g #最小和最大内存限制 #官方配置文档最大建议 30G 以内。 #将以上配置文件 scp 到 host2 并修改自己的 node 名称 [root@linux-host1~]#scp /etc/elasticsearch/elasticsearch.yml 192.168.0.51:/etc/elasticsearch/ [root@linux-host2 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml cluster.name: ELK-Cluster node.name: elk-node2 #与 host1 不能相同 path.data: /data/elk path.logs: /data/elk bootstrap.memory_lock: true network.host: 0.0.0.0 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.0.13:9300", "192.168.0.51:9300"]#必须加端口要不找es主从通不了

1.3.4:目录权限更改: 各服务器创建数据和日志目录并修改目录权限为 elasticsearch: [root@linux-host1 ~]# mkdir /elk/{data,logs} [root@linux-host1 ~]# ll /elk/ total 0 drwxr-xr-x 2 root root 6 Apr 18 18:44 data drwxr-xr-x 2 root root 6 Apr 18 18:44 logs [root@linux-host1 ~]# chown elasticsearch.elasticsearch /elk/ -R [root@linux-host1 ~]# ll /elk/ total 0 drwxr-xr-x 2 elasticsearch elasticsearch 6 Apr 18 18:44 data drwxr-xr-x 2 elasticsearch elasticsearch 6 Apr 18 18:44 logs

1.3.5:启动 elasticsearch 服务并验证: [root@linux-host1 ~]# systemctl restart elasticsearch [root@linux-host1 ~]# tail -f /elk/logs/ELK-Cluster.log [root@linux-host1 ~]# tail -f /elk/logs/

1.3.6:验证端口监听成功:

1.3.7:通过浏览器访问 elasticsearch 服务端口:

1.4:安装 elasticsearch 插件之 head: 插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发 爱好者提供的插件,可以实现对 elasticsearch 集群的状态监控与管理配置等功能。

1.4.1.1:docker 版本启动 head 插件: [root@linux-host1 ~]# yum install docker -y [root@linux-host1 ~]# systemctl start docker && systemctl enable docker [root@linux-host1 ~]# docker run -d -p 9100:9100 mobz/elasticsearch-head:5

![](https://s4.51cto.com/images/blog/202006/07/f9e35570877493c6882f429aeff716f0.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk

下面这段转载的https://blog.csdn.net/jingzuangod/article/details/99673361 elasticsearch-head插件连接不上elasticsearch的处理方式 在elasticsearch的安装目录下找到config文件夹,找到elasticsearch.yml文件,打开编辑它,加上如下这两行配置

http.cors.enabled: true http.cors.allow-origin: "*" http.cors.enabled配置项表示是否支持跨域,默认为false;

http.cors.allow-origin,当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?://localhost(:[0-9]+)?/

然后重启elasticsearch,打开elasticsearch-head再连接一下,