文章目录
Elasticsearch介绍
官网:https://www.elastic.co/cn/
简称: ES
Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上;
Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎;
一个分布式的实时文档存储,每个字段 可以被索引与搜索;
一个分布式实时分析搜索引擎;
能承受上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。
Elasticsearch应用场景
信息检索
日志分析
业务数据分析
数据库加速
运维指标监控
安装配置
安装包下载:https://elasticsearch.cn/download/
因为Elasticsearch是用java开发的,所以运行还需要jdk,所以还需要下载:jdk-7u80-linux-x64.tar.gz
但是在7.6以上的版本里,已经集成里jgdk 的安装包,所以直接安装Elasticsearch就可以。
官网的下载很慢可以使用华为开源镜像下载站下载:https://mirrors.huaweicloud.com/elasticsearch/
[root@server1 ~]# rpm -ivh elasticsearch-7.6.1-x86_64.rpm
安装完成后因为自带jdk所以不需要担心依赖性的问题,然后可以在/etc/elasticsearch有一个jvm.options的文件,这里面有锁定服务开启是使用的内存量,默认是1G,所以如果要注意到你的主机内存,如果可用内存过低,服务是无法启动的,Xmx设置不超过物理RAM的50%,以确保有足够的物理RAM留给内核文件系统缓存,但不要超过32G。
[root@server1 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
配置集群信息
Elasticsearch在单主机上可以直接使用,但是为了效果这里我配置集群去使用,如果是单机就不需要开启集群相关的配置
然后去配置主配置文件
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-app #编写集群名称,自定义
23 node.name: server1 #设置本机的主机名,集群配置要配置所有节点上的解析
33 path.data: /var/lib/elasticsearch #默认的数据储存目录
37 path.logs: /var/log/elasticsearch #默认的日志储存目录
43 #bootstrap.memory_lock: true #内存锁定功能开启或关闭,如果主机内存不是很多,不要打开,否则服务无法启动
55 network.host: 172.25.254.1 #主机ip
59 http.port: 9200 #http访问的端口
72 cluster.initial_master_nodes: ["server1"] #集群内主机名整合,目前只有一个节点,后面可以继续添加集群节点
还需要在/etc/security/limits.conf 文件进行设定修改系统限制
在文件的最后进行添加
[root@server1 ~]# vim /etc/security/limits.conf
elasticsearch - nofile 65536 #设置最大文件数
elasticsearch - nproc 4096 #设置最大进程数
elasticsearch soft memlock unlimited #软件内存锁定
elasticsearch hard memlock unlimited #硬件内存锁定
修改systemd启动文件,在service语句块下添加
[root@server1 ~]# vim /usr/lib/systemd/system/elasticsearch.service
LimitNOFILE=65535
LimitMEMLOCK=infinity #添加内存锁定
# Specifies the maximum number of processes
LimitNPROC=4096 #这个数字就是/etc/security/limits.conf里设置的nproc 4096
修改swap的使用优先级,使它尽量少用或不用 !!!
[root@server1 ~]# echo 0 > /proc/sys/vm/swappiness
[root@server1 ~]# cat /proc/sys/vm/swappiness
0 #将原本的30改为0
[root@server1 ~]# vim /etc/fstab #把fstab下的自动挂载swap注释掉,开机及就不会去挂载swap分区,也就无法使用了
#/dev/mapper/rhel-swap swap swap defaults 0 0
启动服务
[root@server1 ~]# daemon-reload
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
开启后直接通过9200端口就可以去访问了
添加图形界面
图形界面是从github上去下载的,可以自行去选择自己喜欢的
我下载的是
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
[root@server1 ~]# unzip master.zip #解压
[root@server1 ~]# ls
elasticsearch-head-master #得到这样一个目录
因为head插件本质上是一个nodejs的工程,因此需要安装node:
[root@server1 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/nodesource/rpm_9.x/el/7/x86_64/nodejs-9.11.2-1nodesource.x86_64.rpm
[root@server1 ~]# rpm -ivh nodejs-9.11.2-1nodesource.x86_64.rpm #安装nodejs
因为使用npm install的时候它的安装依赖性会自行去网上下载,但是因为它的安装源在国外,我们下载会很慢,所以去更换它的安装源
[root@server1 ~]# cd elasticsearch-head-master/ #进入刚解压出来的目录里
使用淘宝的npm源来安装
[root@server1 elasticsearch-head-master]# npm install --registry=https://registry.npm.taobao.org
**注意:**这里安装的时候还需要一个命令支持,PhantomJS not found on PATH 找不到这个命令,并且它会自动下载,但是它给的网站下载是很慢的,所以需要自行提前去下载好,下载网址:https://mirrors.huaweicloud.com/phantomjs/ ,找到和它要求一样的包
下载完后解压拆解,
[root@server1 ~]# tar xfj phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@server1 bin]# cd phantomjs-2.1.1-linux-x86_64/bin/ #进入它的bin文件
[root@server1 bin]# cp phantomjs /usr/local/bin #复制到系统命令目录里
[root@server1 bin]# yum install -y fontconfig-2.13.0-4.3.el7.x86_64 #还需要安装它的依赖性包
[root@server1 bin]# phantomjs #测试使用就没有问题了
phantomjs>
完成操作再去安装nmp就没有问题了
安装完成还在elasticsearch-head-master目录下修改一个文件配置,将http访问指向本机ip的9200端口
[root@server1 elasticsearch-head-master]# vim _site/app.js
4374 this.base_uri = this.config.base_uri || this.prefs.get("ap p-base_uri") || "http://172.25.254.1:9200";
[root@server1 elasticsearch-head-master]# npm run start & #后台启动就可以了
启动后会开启9100端口提供去访问
最后修改ES跨域支持,添加两条配置
[root@server1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true #是否支持跨域,true支持
http.cors.allow-origin: "*" #*表示支持所有域名
[root@server1 ~]# systemctl restart elasticsearch.service #重启服务
重启之后就可以去页面上连接节点了。连接后显示健康就没问题
ES分布式部署
首先需要再使用两台主机,来搭建集群
server2和server3,也去安装ES,配置文件可以直接从server1上传过去简单改一下就好
[root@server2 ~]# vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-app
23 node.name: server2 #设置本机的主机名,集群配置要配置所有节点上的解析
55 network.host: 172.25.254.2 #主机ip
59 http.port: 9200 #http访问的端口
69 discovery.seed_hosts: ["server1","server2","server3"] #给server1上添加同样的节点主机名
73 cluster.initial_master_nodes: ["server1","server2","server3"] #给server1上添加同样的节点主机名
[root@server3 ~]# vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-app
23 node.name: server3 #设置本机的主机名,集群配置要配置所有节点上的解析
55 network.host: 172.25.254.3 #主机ip
59 http.port: 9200 #http访问的端口
69 discovery.seed_hosts: ["server1","server2","server3"]
73 cluster.initial_master_nodes: ["server1","server2","server3