资源规划
组件 | bigdata-node1 | bigdata-node2 | bigdata-node3 |
---|---|---|---|
OS | centos7.6 | centos7.6 | centos7.6 |
elasticsearch | Elasticsearch | Elasticsearch | Elasticsearch |
Git | git | N.A | N.A |
Node.js | node/npm | N.A | N.A |
Zip | zip/unzip | zip/unzip | zip/unzip |
安装介质
版本: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》
安装Zip
参考:《CentOS7.6-安装Zip》
安装ES
注意:ES不能使用root用户来启动,必须使用普通用户来安装启动。
解压缩
# 先在节点bigdata-node1上安装并修改配置文件,之后分发到bigdata-node2、bigdata-node3
tar -zxvf /share/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: bigdata-node1
# 数据存放目录
path.data: /home/vagrant/modules/elasticsearch-7.6.0/datas
# 日志存放目录
path.logs: /home/vagrant/modules/elasticsearch-7.6.0/logs
# 绑定ip,否则不能通过远程ip:port访问
network.host: 192.168.0.101
http.port: 9200
# 集群通信端口
transport.port: 9300
# ======================== Discovery =========================
# 所有的集群节点,使其自动发现加入集群(该配置与discovery.zen.ping.unicast.hosts冲突,二选其一)
# discovery.seed_hosts: ["192.168.0.101:9300", "192.168.0.102:9300", "192.168.0.103:9300"]
# 指定启动时master节点
cluster.initial_master_nodes: ["bigdata-node1"]
# 候选主节点数,官方推荐(N/2)+1
discovery.zen.minimum_master_nodes: 2
# 候选主节点
discovery.zen.ping.unicast.hosts: ["192.168.0.102:9300", "192.168.0.103: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堆内存大小,根据服务器的内存大小进行调整
-Xms2g
-Xmx2g
分发
scp -r ~/modules/elasticsearch-7.6.0 bigdata-node2:~/modules
scp -r ~/modules/elasticsearch-7.6.0 bigdata-node3:~/modules
对bigdata-node2修改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: bigdata-node2
# 数据存放目录
path.data: /home/vagrant/modules/elasticsearch-7.6.0/datas
# 日志存放目录
path.logs: /home/vagrant/modules/elasticsearch-7.6.0/logs
# 绑定ip,否则不能通过远程ip:port访问
network.host: 192.168.0.102
http.port: 9200
# 集群通信端口
transport.port: 9300
# ======================== Discovery =========================
# 所有的集群节点,使其自动发现加入集群(该配置与discovery.zen.ping.unicast.hosts冲突,二选其一)
# discovery.seed_hosts: ["192.168.0.101:9300", "192.168.0.102:9300", "192.168.0.103:9300"]
# 指定启动时master节点
cluster.initial_master_nodes: ["bigdata-node1"]
# 候选主节点数,官方推荐(N/2)+1
discovery.zen.minimum_master_nodes: 2
# 候选主节点
discovery.zen.ping.unicast.hosts: ["192.168.0.101:9300", "192.168.0.103:9300"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
# 是否支持跨域
http.cors.enabled: true
# 支持所有域名
http.cors.allow-origin: "*"
对bigdata-node3修改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: bigdata-node3
# 数据存放目录
path.data: /home/vagrant/modules/elasticsearch-7.6.0/datas
# 日志存放目录
path.logs: /home/vagrant/modules/elasticsearch-7.6.0/logs
# 绑定ip,否则不能通过远程ip:port访问
network.host: 192.168.0.103
http.port: 9200
# 集群通信端口
transport.port: 9300
# ======================== Discovery =========================
# 所有的集群节点,使其自动发现加入集群(该配置与discovery.zen.ping.unicast.hosts冲突,二选其一)
# discovery.seed_hosts: ["192.168.0.101:9300", "192.168.0.102:9300", "192.168.0.103:9300"]
# 指定启动时master节点
cluster.initial_master_nodes: ["bigdata-node1"]
# 候选主节点数,官方推荐(N/2)+1
discovery.zen.minimum_master_nodes: 2
# 候选主节点
discovery.zen.ping.unicast.hosts: ["192.168.0.101:9300", "192.168.0.102: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
# 所有节点上执行
# 后台启动
# 方式1
nohup /home/vagrant/modules/elasticsearch-7.6.0/bin/elasticsearch 2>&1 &
# 方式2
/home/vagrant/modules/elasticsearch-7.6.0/bin/elasticsearch -d -p pid
pkill -F pid
ES设置service服务
cd /etc/init.d
sudo vi elasticsearch
脚本如下:
#!/bin/bash
case $1 in
start)
cd /home/vagrant/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/vagrant/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://bigdata-node1:9200/?pretty
ES Web UI:http://bigdata-node1: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\.101: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://bigdata-node1:9100
分词插件
# 在线安装
cd ~/modules/elasticsearch-7.6.0
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.0/elasticsearch-analysis-ik-7.6.0.zip
# 离线安装
mkdir -p ~/modules/elasticsearch-7.6.0/plugins/ik
cp /share/elasticsearch-analysis-ik-7.6.0.zip ~/modules/elasticsearch-7.6.0/plugins/ik/
cd ~/modules/elasticsearch-7.6.0/plugins/ik
unzip elasticsearch-analysis-ik-7.6.0.zip
rm -rf elasticsearch-analysis-ik-7.6.0.zip
验证:
curl -XGET http://bigdata-node1:9200/_analyze?pretty -H 'Content-Type:application/json' -d'
{
"analyzer": "ik_smart",
"text": "北极星测试分词工具是否好用"
}'
参考
博客园:配置Elasticsearch集群
https://www.cnblogs.com/sparkdev/p/11044662.html
简书:(十四)Elasticsearch集群配置
https://www.jianshu.com/p/15d6241e7844