elasticsearch 部署

一:elasticsearch

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

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

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

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

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

[[email protected] ~]# 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

[[email protected] ~]# source /etc/profile
[[email protected] ~]# 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
[[email protected] ~]# yum –y localinstall elasticsearch-6.8.1.rpm

1.3.2:编辑各 elasticsearch 服务器的服务配置文件:
[[email protected] ~]# 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:修改内存限制,并同步配置文件:
[[email protected] ~]# vim /usr/lib/systemd/system/elasticsearch.service #修改内存限制
LimitMEMLOCK=infinity #无限制使用内存
[root[email protected] ~]# vim /etc/elasticsearch/jvm.options
22 -Xms2g
23 -Xmx2g #最小和最大内存限制
#官方配置文档最大建议 30G 以内。 #将以上配置文件 scp 到 host2 并修改自己的 node 名称
[[email protected]~]#scp /etc/elasticsearch/elasticsearch.yml
192.168.0.51:/etc/elasticsearch/
[[email protected] ~]# 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:
[[email protected] ~]# mkdir /elk/{data,logs}
[[email protected] ~]# 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
[[email protected] ~]# chown elasticsearch.elasticsearch /elk/ -R
[[email protected] ~]# 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 服务并验证:
[[email protected] ~]# systemctl restart elasticsearch
[[email protected] ~]# tail -f /elk/logs/ELK-Cluster.log
[[email protected] ~]# tail -f /elk/logs/

1.3.6:验证端口监听成功:
elasticsearch 部署

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

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

1.4.1.1:docker 版本启动 head 插件:
[[email protected] ~]# yum install docker -y
[[email protected] ~]# systemctl start docker && systemctl enable docker
[[email protected] ~]# 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_100,g_se,x_10,y_10,shadow_90,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再连接一下,