CentOS7安装ES(Elasticsearch)集群记录
- 1.下载(6.5.4)
- 2.安装
- 3.配置目录
- 4.创建用于存放数据与日志的目录
- 5.集群配置
- 6.JVM配置
- 7.配置es用户
- 7.1.创建es运行用户
- 7.2.修改es目录权限
- 7.3.切换es用户
- 8.把es复制到其他两台机子
- 9.启动服务关闭服务
- 10.安装可视化head插件
- 10.1.安装相关依赖包
- 10.1.1.安装head
- 10.1.2.安装grunt(安装完elasticsearch-head后安装)
- 10.2.安装elasticsearch-head
- 10.3启动elasticsearch-head
1.下载(6.5.4)
前提:需要java环境(这里三台机子已经安装)
三台服务器:
192.168.3.111
192.168.4.222
192.168.5.333(主节点)https://www.elastic.co/cn/downloads/elasticsearch.,是ELasticsearch的官方站点,如果需要下载最新的版本,进入官网下载即可。可以下载到本地电脑然后再导入CentOS中,也可以直接在CentOS中下载。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpm
2.安装
命令:rpm -ivh elasticsearch-6.5.4.rpm
rpm -ivh elasticsearch-6.5.4.rpm
警告:elasticsearch-6.5.4.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...
1:elasticsearch-0:6.5.4-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
Created elasticsearch keystore in /etc/elasticsearch
3.配置目录
安装完毕后会生成很多文件,包括配置文件日志文件等等,下面几个是最主要的配置文件路径:
/elasticsearch-6.5.4/config/elasticsearch.yml # els的配置文件
/elasticsearch-6.5.4/config/jvm.options # JVM相关的配置,内存大小等等
/elasticsearch-6.5.4/config/log4j2.properties # 日志系统定义
/usr/share/elasticsearch # elasticsearch 默认安装目录
/var/lib/elasticsearch # 数据的默认存放位置
4.创建用于存放数据与日志的目录
数据文件会随着系统的运行飞速增长,所以默认的日志文件与数据文件的路径不能满足我们的需求,那么手动创建日志与数据文件路径,可以使用NFS、可以使用Raid等等方便以后的管理与扩展
mkdir -p /data1/es
mkdir -p /data1/log
chown -R elasticsearch.elasticsearch /data1/* #为es用户添加操作权限
5.集群配置
集群配置中最重要的两项是node.name
与network.host
,每个节点都必须不同。其中node.name
是节点名称主要是在Elasticsearch自己的日志加以区分每一个节点信息。 discovery.zen.ping.unicast.hosts
是集群中的节点信息,可以使用IP地址、可以使用主机名(必须可以解析)。
111:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-els # 集群名称
node.name: els-node1
node.master: true
node.data: true
# 节点名称,仅仅是描述名称,用于在日志中区分
path.data: /data1/es # 数据的默认存放路径
path.logs: /data1/log # 日志的默认存放路径
network.host: 192.168.3.111 # 当前节点的IP地址
http.port: 9200 # 对外提供服务的端口,9300为集群服务的端口
#添加如下内容
#culster transport port
transport.tcp.port: 9300
transport.tcp.compress: true
discovery.zen.ping.unicast.hosts: ["192.168.3.151", "192.168.3.150","192.168.3.149"]
# 集群个节点IP地址,也可以使用els、els.shuaiguoxia.com等名称,需要各节点能够解析
discovery.zen.minimum_master_nodes: 2 # 为了避免脑裂,集群节点数最少为 半数+1
http.cors.enabled: true
http.cors.allow-origin: "*"
222:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-els # 集群名称
node.name: els-node2
node.master: true
node.data: true
# 节点名称,仅仅是描述名称,用于在日志中区分
path.data: /data1/es # 数据的默认存放路径
path.logs: /data1/log # 日志的默认存放路径
network.host: 192.168.4.222 # 当前节点的IP地址
http.port: 9200 # 对外提供服务的端口,9300为集群服务的端口
#添加如下内容
#culster transport port
transport.tcp.port: 9300
transport.tcp.compress: true
discovery.zen.ping.unicast.hosts: ["192.168.3.151", "192.168.3.150","192.168.3.149"]
# 集群个节点IP地址,也可以使用els、els.shuaiguoxia.com等名称,需要各节点能够解析
discovery.zen.minimum_master_nodes: 2 # 为了避免脑裂,集群节点数最少为 半数+1
333:
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-els # 集群名称
node.name: els-node3
node.master: true
node.data: true
# 节点名称,仅仅是描述名称,用于在日志中区分
path.data: /data1/es # 数据的默认存放路径
path.logs: /data1/log # 日志的默认存放路径
network.host: 192.168.5.333 # 当前节点的IP地址
http.port: 9200 # 对外提供服务的端口,9300为集群服务的端口
#添加如下内容
#culster transport port
transport.tcp.port: 9300
transport.tcp.compress: true
discovery.zen.ping.unicast.hosts: ["192.168.3.111", "192.168.4.222","192.168.5.333"]
# 集群个节点IP地址,也可以使用els、els.shuaiguoxia.com等名称,需要各节点能够解析
discovery.zen.minimum_master_nodes: 2 # 为了避免脑裂,集群节点数最少为 半数+1
注意:不要在elasticsearch.yml中添加index开头的配置项。如:
#index.number_of_shards: 5
#index.number_of_replicas: 1
6.JVM配置
由于Elasticsearch是Java开发的,所以可以通过/etc/elasticsearch/jvm.options
配置文件来设定JVM的相关设定。如果没有特殊需求按默认即可。 不过其中还是有两项最重要的-Xmx1g
与-Xms1g
JVM的最大最小内存。如果太小会导致Elasticsearch刚刚启动就立刻停止。太大会拖慢系统本身。
vim /etc/elasticsearch/jvm.options
-Xms32g # JVM最大、最小使用内存
-Xmx32g
最好设置为系统内存的一半
7.配置es用户
elasticsearch的相关配置已经完成,下面需要启动elasticsearch集群。但是由于安全的考虑,elasticsearch不允许使用root用户来启动,所以需要创建一个新的用户,并为这个账户赋予相应的权限来启动elasticsearch集群。
7.1.创建es运行用户
# 创建用户组
groupadd es
# 创建用户并添加至用户组
useradd es -g es
# 更改用户密码(输入 es)
passwd es
7.2.修改es目录权限
sudo chown -R es:es /usr/share/elasticsearch/
sudo chown -R es:es /var/log/elasticsearch/
sudo chown -R es:es /etc/sysconfig/elasticsearch/ # 以上操作都是为了赋予es用户操作权限
7.3.切换es用户
命令:su es
8.把es复制到其他两台机子
cd /usr/share/
scp -r /elasticsearch root@222:/usr/share/
scp -r /elasticsearch root@333:/usr/share/
9.启动服务关闭服务
以下操作在es用户操作
三台机子同时运行:
#当前的路径为:/usr/share/elasticsearch/
./bin/elasticsearch #后台运行加-d
关闭服务
[es@glbk151 elasticsearch]$ jps
9505 Elasticsearch
13806 Jps
[es@glbk151 elasticsearch]$ kill -9 9505
10.安装可视化head插件
Elasticsearch Head Plugin:head插件是一个ES集群的web前端工具,它提供可视化的页面方便用户查看节点信息,对ES进行各种操作,如查询、删除、浏览索引等。
10.1.安装相关依赖包
10.1.1.安装head
由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。(npm可以理解为maven)
wget https://nodejs.org/dist/v9.3.0/node-v9.3.0-linux-x64.tar.xz # 下载nodejs最新的bin包
xz -d node-v9.3.0-linux-x64.tar.xz # 解压包
tar -xf node-v9.3.0-linux-x64.tar # 解压包
ln -s ~/node-v9.3.0-linux-x64/bin/node /usr/bin/node # 部署bin文件,先确定nodejs的bin路径
ln -s ~/node-v9.3.0-linux-x64/bin/npm /usr/bin/npm
查看版本:
node -v
npm
npm加速 全局安装cnpm 指定来源淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
10.1.2.安装grunt(安装完elasticsearch-head后安装)
grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.0里的head插件就是通过grunt启动的。因此需要安装一下grunt:
cd /usr/local/elasticsearch-head
npm install -g grunt-cli //执行后会生成node_modules文件夹
npm install
注:
(1)5.0以上,elasticsearch-head 不能放在elasticsearch的 plugins、modules 目录下,否则elasticsearch启动会报错。
(2)这里如果grunt没有安装成功也无所谓,可以通过其他方式启动elasticsearch-head插件(npm run start)。
10.2.安装elasticsearch-head
另外:5.0以前的版本可以通过elasticseach自带的plugin命令 安装elasticsearch-head,5.0以后不支持了。只可以去下载elasticsearch-head对应的源码包去安装。
cd /usr/local/
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
修改配置:
vi _site/app.js
# 修改 this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200"; 在文件的4388行附近
# 这里的 localhost 是指进入elasticsearch-head页面时默认访问的ES集群地址,把她修改为其中一台ES节点的地址即可
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.3.111:9200";
还要修改Head主目录下的Gruntfile.js,由于默认文件中是没有hostname属性的,需要手动添加:
elasticsearch与elasticsearch-head是两个独立进程为防止跨域,在elasticsearch.yml文件最后添加以下内容:
http.cors.enabled: true
http.cors.allow-origin: "*"
10.3启动elasticsearch-head
cd /usr/local/elasticsearch-head //先跳转到head目录下
grunt server //若想在后台运行,结尾追加“&”,也可以使用 npm run start启动
#这里grunt安装失败,使用npm run start启动