Files
baim0-learn/elk/03.Elasticsearch的图形化界面工具的使用以及ZooKeeper集群的实现.md
T
2024-03-12 08:29:44 +08:00

216 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 3.Elasticsearch的图形化界面工具的使用以及ZooKeeper集群的实现
## 1.安装Head插件
## 1.1 安装Head插件
Head插件是Elasticsearch的图形化界面工具,通过此插件可以很方便的对数据进行增删改查等数据交互操作。在Elasticsearch5.x版本以后,head插件已经是一个独立的Web App了,所以不需要和Elasticsearch进行集成。可以将Head插件安装到任何一台机器上,这里将Head插件安装到172.16.213.37(server1)机器上,读者可以从https://github.com/mobz/elasticsearch-head 下载此插件。
由于Head插件本质上是一个Node.js的工程,因此需要安装Node.js,使用npm工具来安装依赖的包。这里简单说下Node.js和NPM,作为知识的铺垫。
Node.js是一个Javascript运行环境,一个新兴的前端框架,用于方便地搭建响应速度快、易于扩展的网络应用。
NPM的全称是Node Package Manager,是一个Node.JS包管理和分发工具,它定义了包依赖关系标准,并提供了用于JavaScript开发所需要的各种常见第三方框架的下载。
在Centos7.x系统上,可以直接通过yum在线安装Node.js和NPM工具(前提是你的机器要能上网),操作如下:
```coffeescript
[root\@localhost \~]\# yum install -y nodejs npm
```
这里我们通过git克隆方式下载Head插件,所以还需要安装一个git命令工具,执行如下命令即可:
```coffeescript
[root\@localhost \~]\# yum install -y git
```
接着,开始安装head插件,这里将head插件安装到/usr/local目录下,操作过程如下:
```perl
[root\@localhost \~]\# cd /usr/local
[root\@localhost local]\# git clone git://github.com/mobz/elasticsearch-head.git
[root\@localhost local]\# npm config set registry
http://registry.npm.taobao.org/
[root\@localhost local]\# cd elasticsearch-head
[root\@localhost elasticsearch-head]\# npm install
```
其中,第一步是通过git命令从github克隆head插件程序,第二步是修改源地址为淘宝NPM镜像,因为默认NPM的官方源为 [https://registry.npmjs.org/](https://registry.npmjs.org/) , 国内下载速度回很慢,所以建议切换到淘宝的NPM镜像站点。第四步是安装head插件所需的库和第三方框架。
克隆下来的head插件程序目录名为elasticsearch-head,进入此目录,修改配置文件 /usr/local/elasticsearch-head/\_site/app.js ,找到如下内容:
```bash
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
```
将其中的
```plain
http://localhost:9200
```
修改为elasticsearch集群中任意一台主机的IP地址,这里修改为
```plain
<http://172.16.213.78:9200>
```
表示的意思是head插件将通过172.16.213.78(server3)访问elasticsearch集群。
注意,访问elasticsearch集群中的任意一个节点,都能获取集群的所有信息。
## 1.2 修改elasticsearch配置
在上面的配置中,将head插件访问集群的地址配置为172.16.213.78(server3)主机,下面还需要修改此主机上elasticsearch的配置,添加跨域访问支持。
修改elasticsearch配置文件,允许head插件跨域访问elasticsearch,在elasticsearch.yml文件最后添加如下内容:
```bash
http.cors.enabled: true
http.cors.allow-origin: "*"
```
其中,http.cors.enabled表示开启跨域访问支持,此值默认为false,http.cors.allow-origin表示跨域访问允许的域名地址,可以使用正则表达式,这里的“\*”表示允许所有域名访问。
## 1.3 启动head插件服务
所有配置完成之后,就可以启动插件服务了,执行如下操作:
```bash
[root\@localhost \~]# cd /usr/local/elasticsearch-head
[root\@localhost elasticsearch-head]# npm run start
```
head插件服务启动之后,默认的访问端口为9100,直接访问http://172.16.213.37:9100 就可以访问head插件了。
下图是配置完成后的一个head插件截图:
![](assets/1593327223-1ad5b6bb56aff0e4ced9e9a133d623a0.png)
下面简单说明一下head插件的使用方法和技巧。
首先可以看到,elasticsearch集群有server1、server2和server3三个节点,其中,server3是目前的主节点。点击图上的信息按钮,可查看节点详细信息。
其次,从这个页面上可以看到elasticsearch基本的分片的信息,比如主分片、副本分片等等,以及多少可用分片。由于在elasticsearch配置中设置了5个分片,一个副本分片,因此可以看到每个索引都有10个分片,每个分片都用0、1、2、3、4等数字加方框表示,其中,粗体方框是主分片,细体方框是副本分片。
图中esbigdata是集群的名称,后面的“集群健康值”通过不同的颜色表示集群的健康状态:其中,绿色表示主分片和副本分片都可用;黄色表示只有主分片可用,没有副本分片;红色表示主分片中的部分索引不可用,但是某些索引还可以继续访问。正常情况下都显示绿色。
在索引页面可以创建索引,并且可以设置分片的数量,副本的数量等等。点击创建索引按钮,即可创建一个索引,例如:
![](assets/1593327223-f34c105278df63aec1f28a84449c6798.png)
在数据浏览页面可以看到每个索引的基本信息,比如都有什么字段,存储的内容等等。
在基本查询页面可以拼接一些基本的查询。
在复合查询页面,不仅仅可以做查询,还可以执行PUT、GET、
DELETE等curl命令,所有需要通过curl执行的rest请求,都可以在这里执行。
例如,要查询一个索引的数据结构,可执行如下图的操作即可:
![](assets/1593327223-d0255c30406ab4850da2769d995a5783.png)
下面是删除索引数据,右边结果显示true的话,表示删除成功。
![](assets/1593327223-10ddb0af8c442932c972c3919d50837b.png)
## 2.安装并配置ZooKeeper分布式集群
Zookeeper的安装和配置十分简单, 可以配置成单机模式,
也可以配置成集群模式,这里将Zookeeper配置为集群模式。
## 2.1 ZooKeeper集群环境说明
对于集群模式下的ZooKeeper部署,官方建议至少要三台服务器,关于服务器的数量,推荐是奇数个(3、5、7、9等等),以实现ZooKeeper集群的高可用,这里使用三台服务器进行部署,服务器信息如下表所示:
| 节点名称 | IP地址 | 安装软件 |
| --- | --- | --- |
| kafkazk1 | 172.16.213.51 | JDK1.8、zookeeper-3.4.11 |
| kafkazk2 | 172.16.213.75 | JDK1.8、zookeeper-3.4.11 |
| kafkazk3 | 172.16.213.109 | JDK1.8、zookeeper-3.4.11 |
由于是部署集群模式的zookeeper,因此下面的操作需要在每个集群节点都执行一遍。
## 2.2 下载与安装ZooKeeper
ZooKeeper是用Java编写的,需要安装Java运行环境,这在前面章节已经介绍过了,这里不再介绍,读者可以从zookeeper官网https://zookeeper.apache.org/ 获取zookeeper安装包,这里安装的版本是zookeeper-3.4.11.tar.gz。将下载下来的安装包直接解压到一个路径下即可完成zookeeper的安装,这里统一将zookeeper安装到/usr/local目录下,基本操作过程如下:
```coffeescript
[root\@localhost \~]\# tar -zxvf zookeeper-3.4.11.tar.gz -C /usr/local
[root\@localhost \~]\# mv /usr/local/zookeeper-3.4.11 /usr/local/zookeeper
```
这里我们将zookeeper安装到了/usr/local目录下。
## 2.3 配置ZooKeeper
zookeeper安装到了/usr/local目录下,因此,zookeeper的配置模板文为/usr/local/zookeeper/conf/zoo\_sample.cfg,拷贝zoo\_sample.cfg并重命名为zoo.cfg,重点配置如下内容:
```makefile
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper
clientPort=2181
server.1=172.16.213.51:2888:3888
server.2=172.16.213.109:2888:3888
server.3=172.16.213.75:2888:3888
```
其中,每个配置项含义如下:
> \-tickTime:zookeeper使用的基本时间度量单位,以毫秒为单位,它用来控制心跳和超时。2000表示2tickTime。更低的tickTime值可以更快地发现超时问题。
> \-initLimit:这个配置项是用来配置Zookeeper集群中Follower服务器初始化连接到Leader时,最长能忍受多少个心跳时间间隔数(也就是tickTime),这里设置为10个,即10\*2000=20秒。
> \-syncLimit:这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度最长不能超过多少个tickTime的时间长度,这里总的时间长度是5\*2000=10秒。
> \-dataDir:必须配置项,用于配置存储快照文件的目录。需要事先创建好这个目录,如果没有配置dataLogDir,那么事务日志也会存储在此目录。
> \-clientPort:zookeeper服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
> \-server.A=B:C:D:其中A是一个数字,表示这是第几个服务器;B是这个服务器的IP地址;C表示的是这个服务器与集群中的Leader服务器通信的端口;D表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
除了修改zoo.cfg配置文件外,集群模式下还要配置一个文件myid,这个文件需要放在dataDir配置项指定的目录下,这个文件里面只有一个数字,如果要写入1,表示第一个服务器,与zoo.cfg文本中的server.1中的1对应,以此类推,在集群的第二个服务器zoo.cfg配置文件中dataDir配置项指定的目录下创建myid文件,写入2,这个2与zoo.cfg文本中的server.2中的2对应。本文中Zookeepe集群有三台服务器,可按照任意顺序,依次在每个服务器上创建myid文件写入1、2、3一个数字即可。Zookeeper在启动时会读取这个文件,得到里面的数据与zoo.cfg里面的配置信息比较,从而判断每个zookeeper server的对应关系。
为了保证zookeeper集群配置的规范性,建议将zookeeper集群中每台服务器的安装和配置文件路径都保存一致。例如将zookeeper统一安装到/usr/local目录下,配置文件统一为/usr/local/zookeeper/conf/zoo.cfg等。
## 2.4 启动zookeeper集群
Zookeeper集群所有节点配置完成后,就可以启动Zookeeper服务了,在三个节点依次执行如下命令,启动Zookeeper服务:
```coffeescript
[root\@localhost \~]\# cd /usr/local/zookeeper/bin
[root\@localhost bin]\# ./zkServer.sh start
[root\@localhost kafka]\# jps
23097 QuorumPeerMain
```
Zookeeper启动后,通过jps命令(jdk内置命令)可以看到有一个QuorumPeerMain标识,这个就是Zookeeper启动的进程,前面的数字是Zookeeper进程的PID。
Zookeeper启动后,在执行启动命令的当前目录下会生成一个zookeeper.out文件,这个就是Zookeeper的运行日志,可以通过此文件查看Zookeeper运行状态。
有时候为了启动Zookeeper方面,也可以添加zookeeper环境变量到系统的/etc/profile中,这样,在任意路径都可以执行“zkServer.sh start”命令了,添加环境变量的内容为:
```plain
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=\$PATH:\$ZOOKEEPER_HOME/bin
```
至此,zookeeper集群安装、配置完成。
@版权声明:51CTO独家出品,未经允许不能转载,否则追究法律责任
---------------------------------------------------
原网址: [访问](https://blog.51cto.com/cloumn/blog/243)
创建于: 2020-06-28 14:53:43
目录: default
标签: `blog.51cto.com`