资源规划
组件 | LTSR003 | LTSR005 | LTSR006 | LTSR007 | LTSR008 |
---|---|---|---|---|---|
OS | centos7.6 | centos7.6 | centos7.6 | centos7.6 | centos7.6 |
ES | N.A | N.A | Elasticsearch | Elasticsearch | Elasticsearch/Head |
Git | N.A | N.A | N.A | N.A | git |
Node.js | N.A | N.A | N.A | N.A | node/npm/cnpm |
安装介质
版本:elasticsearch-7.6.0-linux-x86_64.tar.gz
下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
镜像:https://mirrors.huaweicloud.com/elasticsearch
环境准备
安装Git
参考:《CentOS7.6-安装Git》
安装Node.js
参考:《CentOS7.6-安装Node.js》
安装ES
注意:ES不能使用root用户来启动,必须使用普通用户来安装启动。
解压缩
# 先在节点LTSR006上安装,之后分发到LTSR007、LTSR008
cd ~/software/
wget https://mirrors.huaweicloud.com/elasticsearch/7.6.0/elasticsearch-7.6.0-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.6.0-linux-x86_64.tar.gz -C ~/modules/
创建相关目录
mkdir -p ~/modules/elasticsearch-7.6.0/logs
mkdir -p ~/modules/elasticsearch-7.6.0/datas
修改配置
配置elasticsearch.yml。
rm -rf ~/modules/elasticsearch-7.6.0/config/elasticsearch.yml vi ~/modules/elasticsearch-7.6.0/config/elasticsearch.yml
配置如下:
# ======================== Elasticsearch Configuration ========================= # 设置集群名字,其他节点也要一样的名字才能加入集区 cluster.name: "bigdata-es-cluster" # 主节点 node.master: true # 唯一节点名字 node.name: LTSR006 # 数据存放目录 path.data: /home/bigdata/modules/elasticsearch-7.6.0/datas # 日志存放目录 path.logs: /home/bigdata/modules/elasticsearch-7.6.0/logs # 绑定ip,否则不能通过远程ip:port访问 network.host: 192.168.0.16 http.port: 9200 # 集群通信端口 transport.port: 9300 # ======================== Discovery ========================= # 所有的集群节点,使其自动发现加入集群(该配置与discovery.zen.ping.unicast.hosts冲突,二选其一) # discovery.seed_hosts: ["192.168.0.16:9300", "192.168.0.17:9300", "192.168.0.18:9300"] # 指定启动时master节点 cluster.initial_master_nodes: ["LTSR006"] # 候选主节点数,官方推荐(N/2)+1 discovery.zen.minimum_master_nodes: 2 # 候选主节点 discovery.zen.ping.unicast.hosts: ["192.168.0.17:9300", "192.168.0.18:9300"] bootstrap.system_call_filter: false bootstrap.memory_lock: false # 是否支持跨域 http.cors.enabled: true # 支持所有域名 http.cors.allow-origin: "*"
配置jvm.option。
vi ~/modules/elasticsearch-7.6.0/config/jvm.options
配置如下:
# 调整jvm堆内存大小,根据服务器的内存大小进行调整 -Xms16g -Xmx16g
分发
scp -r ~/modules/elasticsearch-7.6.0 bigdata@LTSR007:~/modules scp -r ~/modules/elasticsearch-7.6.0 bigdata@LTSR008:~/modules
对LTSR007修改elasticsearch.yml文件。
rm -rf ~/modules/elasticsearch-7.6.0/config/elasticsearch.yml vi ~/modules/elasticsearch-7.6.0/config/elasticsearch.yml
配置如下:
# ======================== Elasticsearch Configuration ========================= # 设置集群名字,其他节点也要一样的名字才能加入集区 cluster.name: "bigdata-es-cluster" # 主节点 node.master: true # 唯一节点名字 node.name: LTSR007 # 数据存放目录 path.data: /home/bigdata/modules/elasticsearch-7.6.0/datas # 日志存放目录 path.logs: /home/bigdata/modules/elasticsearch-7.6.0/logs # 绑定ip,否则不能通过远程ip:port访问 network.host: 192.168.0.17 http.port: 9200 # 集群通信端口 transport.port: 9300 # ======================== Discovery ========================= # 所有的集群节点,使其自动发现加入集群(该配置与discovery.zen.ping.unicast.hosts冲突,二选其一) # discovery.seed_hosts: ["192.168.0.16:9300", "192.168.0.17:9300", "192.168.0.18:9300"] # 指定启动时master节点 cluster.initial_master_nodes: ["LTSR006"] # 候选主节点数,官方推荐(N/2)+1 discovery.zen.minimum_master_nodes: 2 # 候选主节点 discovery.zen.ping.unicast.hosts: ["192.168.0.16:9300", "192.168.0.18:9300"] bootstrap.system_call_filter: false bootstrap.memory_lock: false # 是否支持跨域 http.cors.enabled: true # 支持所有域名 http.cors.allow-origin: "*"
对LTSR008修改elasticsearch.yml文件。
rm -rf ~/modules/elasticsearch-7.6.0/config/elasticsearch.yml vi ~/modules/elasticsearch-7.6.0/config/elasticsearch.yml
配置如下:
# ======================== Elasticsearch Configuration ========================= # 设置集群名字,其他节点也要一样的名字才能加入集区 cluster.name: "bigdata-es-cluster" # 主节点 node.master: true # 唯一节点名字 node.name: LTSR008 # 数据存放目录 path.data: /home/bigdata/modules/elasticsearch-7.6.0/datas # 日志存放目录 path.logs: /home/bigdata/modules/elasticsearch-7.6.0/logs # 绑定ip,否则不能通过远程ip:port访问 network.host: 192.168.0.18 http.port: 9200 # 集群通信端口 transport.port: 9300 # ======================== Discovery ========================= # 所有的集群节点,使其自动发现加入集群(该配置与discovery.zen.ping.unicast.hosts冲突,二选其一) # discovery.seed_hosts: ["192.168.0.16:9300", "192.168.0.17:9300", "192.168.0.18:9300"] # 指定启动时master节点 cluster.initial_master_nodes: ["LTSR006"] # 候选主节点数,官方推荐(N/2)+1 discovery.zen.minimum_master_nodes: 2 # 候选主节点 discovery.zen.ping.unicast.hosts: ["192.168.0.16:9300", "192.168.0.17:9300"] bootstrap.system_call_filter: false bootstrap.memory_lock: false # 是否支持跨域 http.cors.enabled: true # 支持所有域名 http.cors.allow-origin: "*"
修改系统配置
由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等,故需要给普通用户解开资源的束缚。(注意**:所有节点都要操作**)
解除linux系统打开文件最大数目的限制。
临时修改:
# 临时修改某用户(非root)的最大打开文件数(-S指soft,-H指hard)
sudo sh -c "ulimit -SHn 65535 && exec su $LOGNAME"
永久修改(需重启才能生效):
# 查看最大文件句柄数
ulimit -S -n
ulimit -H -n
ulimit -a
sudo vi /etc/security/limits.conf
配置如下:
* soft nofile 65536
* hard nofile 65536
- 更新最大线程数限制。
配置如下: ```shell# 系统限制用户最多可以运行多少进程或线程 ulimit -u sudo vi /etc/security/limits.d/20-nproc.conf
- soft nproc 4096
- hard nproc 4096 ```
- 虚拟内存扩容。
临时修改:
sudo sysctl -w vm.max_map_count=262144
永久修改:
sudo vi /etc/sysctl.conf
添加配置:
vm.max_map_count=262144
修改完成后执行:
sudo sysctl -p
启动ES
# ES集群所有节点上执行
# 后台启动
# 方式1
nohup /home/bigdata/modules/elasticsearch-7.6.0/bin/elasticsearch 2>&1 &
# 方式2
/home/bigdata/modules/elasticsearch-7.6.0/bin/elasticsearch -d -p pid
pkill -F pid
ES设置service服务
# ES集群所有节点上执行
cd /etc/init.d
sudo vi elasticsearch
脚本如下:
#!/bin/bash
case $1 in
start)
cd /home/bigdata/modules/elasticsearch-7.6.0
./bin/elasticsearch -d -p pid
echo "elasticsearch startup"
;;
stop)
es_pid=`ps -ef|grep elasticsearch|grep -v 'grep'|awk '{print $2}'`
for pid in $es_pid
do
kill -9 $pid
done
echo "elasticsearch stopped"
;;
restart)
es_pid=`ps -ef|grep elasticsearch |grep -v 'grep'|awk '{print $2}'`
for pid in $es_pid
do
kill -9 $pid
done
echo "elasticsearch stopped"
cd /home/bigdata/modules/elasticsearch-7.6.0
./bin/elasticsearch
echo "elasticsearch startup"
;;
*)
echo "start|stop|restart"
;;
esac
exit $?
启停服务:
# shell脚本M-BM-字符问题
sudo sed -i 's/\xc2\xa0/ /g' elasticsearch
sudo chmod 755 elasticsearch
# 此处请使用非root用户执行
service elasticsearch start
service elasticsearch stop
service elasticsearch restart
验证
ps -ef | grep elastic
curl -GET http://ltsr006:9200/?pretty
ES Web UI:http://LTSR006:9200/?pretty、http://LTSR007:9200/?pretty、http://LTSR008:9200/?pretty
插件安装
Head插件
mkdir -p ~/modules/elasticsearch-7.6.0/myplugins
cd ~/modules/elasticsearch-7.6.0/myplugins
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
cnpm install
cnpm install -g grunt-cli
cnpm install grunt --save
grunt --version
配置Gruntfile.js:
vi ~/modules/elasticsearch-7.6.0/myplugins/elasticsearch-head/Gruntfile.js
内容如下:
connect: {
server: {
options: {
hostname: '0.0.0.0',
port: 9100,
base: '.',
keepalive: true
}
}
}
更新连接信息:
# 注意转义字符(/、.,冒号:不需要转义)
sed -i 's/http:\/\/localhost:9200/http:\/\/192\.168\.0\.18:9200/g' ~/modules/elasticsearch-7.6.0/myplugins/elasticsearch-head/_site/app.js
启动插件:
cd ~/modules/elasticsearch-7.6.0/myplugins/elasticsearch-head
# 前台运行
cnpm run start
# 后台运行
# 方式1
nohup cnpm run start > /dev/null 2>&1 &
# 方式2
nohup grunt server &
验证:
# 查看端口
netstat -tunlp |grep 9100
ps -ef | grep grunt
kill -9 <pid>
ES-Head Web UI:http://LTSR008:9100