Elasticsearch 二
下载 Elasticsearc
- https://www.elastic.co/cn/downloads/past-releases#elasticsearch
Linux部署
- 创建用户(ES不允许 root用户直接运行
$ groupadd es; useradd -g es es;
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.0-linux-x86_64.tar.gz;
$ tar -xvf elasticsearch-7.8.0-linux-x86_64.tar.gz;
$ chown es.es elasticsearch-7.8.0 -R
单机部署
$ vim config/elasticsearch.yml;
cluster.name: elasticsearch
node.name: node-1
path.data: /path/to/data
path.logs: /path/to/logs
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
集群部署
$ vim config/elasticsearch.yml;
# 集群名称
cluster.name: cluster-es
# 节点名称, 每个节点的名称不能重复
node.name: node-1
path.data: /path/to/data
path.logs: /path/to/logs
# ip地址, 每个节点的地址不能重复
network.host: linux1
# 是不是有资格主节点
node.master: true
node.data: true
# HTTP API端口
http.port: 9200
# 跨域配置(head插件需要打开以下配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
# es7.x之后新增的配置, 初始化一个新的集群时, 需通过该配置进行选举 master
cluster.initial_master_nodes: ["node-1"]
# es7.x 之后新增的配置, 节点发现
discovery.seed_hosts: ["linux1:9300","linux2:9300","linux3:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
# 集群间组件 TCP监听端口
transport.tcp.port: 9300
transport.tcp.compress: true
# 集群内同时启动的数据任务个数, 默认为2个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
# 添加或删除节点及负载均衡时, 并发恢复的线程个数, 默认为4个
cluster.routing.allocation.node_concurrent_recoveries: 16
# 初始化数据恢复时, 并发恢复线程的个数, 默认为4个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
$ vim /etc/security/limits.conf
# 每个进程可以打开文件数的限制
es soft nofile 65536
es hard nofile 65536
$ vim /etc/security/limits.d/20-nproc.conf
# 每个进程可以打开文件数的限制
es soft nofile 65536
es hard nofile 65536
# 操作系统级别对每个用户创建进程数的限制
* hard nproc 4096
$ vim /etc/sysctl.conf
# 一个进程可以拥有的 VMA(虚拟内存区域)的数量, 默认值为 65536
vm.max_map_count=655360
-
重新加载:
$ sysctl -p; -
启动 ES
$ bin/elasticsearch # 启动
$ bin/elasticsearch -d # 后台启动
Windows集群
# 节点 1
cluster.name: my-elasticsearch
# 节点名称, 集群内要唯一
node.name: node-1
node.master: true
node.data: true
# ip地址
network.host: localhost
# HTTP API端口
http.port: 9201
# 集群间组件 TCP监听端口
transport.tcp.port: 9301
#discovery.seed_hosts: ["localhost:9301", "localhost:9302","localhost:9303"]
#discovery.zen.fd.ping_timeout: 1m
#discovery.zen.fd.ping_retries: 5
# 集群内的可以被选为主节点的节点列表
#cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# 跨域配置
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
# 节点 2
cluster.name: my-elasticsearch
# 节点名称, 集群内要唯一
node.name: node-2
node.master: true
node.data: true
# ip地址
network.host: localhost
# HTTP API端口
http.port: 9202
# 集群间组件 TCP监听端口
transport.tcp.port: 9302
# discovery是 es用于指定 master节点的模块; master节点是不用加的
discovery.seed_hosts: ["localhost:9301"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# 集群内的可以被选为主节点的节点列表
#cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# 跨域配置
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
# 节点 3
cluster.name: my-elasticsearch
# 节点名称, 集群内要唯一
node.name: node-3
node.master: true
node.data: true
# ip地址
network.host: localhost
# HTTP API端口
http.port: 9203
# 集群间组件 TCP监听端口
transport.tcp.port: 9303
# 候选主节点的地址, 在开启服务后可以被选为主节点
discovery.seed_hosts: ["localhost:9301", "localhost:9302"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# 集群内的可以被选为主节点的节点列表
#cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
# 跨域配置
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
-
启动节点
$ bin/elasticsearch.bat -
查看集群节点状态:
http://localhost:9201/_cluster/health
安装 Kibana
- Kibana是 ES的节点监控& 数据可视化工具
1. Kibana下载:
https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-windows-x86_64.zip
2. 解压后修改 config/kibana.yml文件
# 默认端口
server.port: 5601
# ES 服务器的地址
elasticsearch.hosts: ["http://localhost:9200"]
# 索引名
kibana.index: ".kibana"
# 支持中文
i18n.locale: "zh-CN"
3. Windows环境下执行
bin/kibana.bat文件
4. 通过浏览器访问
http://localhost:5601
Elasticsearch数据备份与恢复
安装备份& 恢复工具
-
安装 node
$ curl --silent --location https://rpm.nodesource.com/setup_12.x | sudo bash -
$ yum install -y nodejs;
$ node --version; -
设置淘宝镜像
$ npm config set registry http://registry.npm.taobao.org -
安装 elasticdump
$ npm install elasticdump -g;
数据备份脚本
$ mkdir /home/es/backup/data -p;
$ touch /home/es/backup/backup-data.sh;
$ chmod 755 /home/es/backup/backup-data.sh;
- 编辑脚本
$ vim backup-data.sh
#!/bin/bash
index=${1}
address=${2}
echo 'begin backup index: '${index}' from '${address}
elasticdump --input=http://${address}:9200/${index} --output=/home/es/backup/data/${index}_alias.json --type=alias &> /dev/null
elasticdump --input=http://${address}:9200/${index} --output=/home/es/backup/data/${index}_analyzer.json --type=analyzer &> /dev/null
elasticdump --input=http://${address}:9200/${index} --output=/home/es/backup/data/${index}_data.json --type=data &> /dev/null
elasticdump --input=http://${address}:9200/${index} --output=/home/es/backup/data/${index}_template.json --type=template &> /dev/null
echo "end backup."
- 开始备份数据(参数1:索引名称, 参数2:目标 ES地址
$ ./backup-data.sh article 127.0.0.1
数据恢复脚本
$ touch /home/es/backup/recovery-data.sh;
$ chmod 755 /home/es/backup/recovery-data.sh;
$ vim recovery-data.sh
#!/bin/bash
index=${1}
address=${2}
echo 'begin recovery index: '${index}' from '${address}
elasticdump --input=/home/es/backup/data/${index}_alias.json --output=http://${address}:9200/${index} --type=alias &> /dev/null
elasticdump --input=/home/es/backup/data/${index}_analyzer.json --output=http://${address}:9200/${index} --type=analyzer &> /dev/null
elasticdump --input=/home/es/backup/data/${index}_data.json --output=http://${address}:9200/${index} --type=data &> /dev/null
elasticdump --input=/home/es/backup/data/${index}_template.json --output=http://${address}:9200/${index} --type=template &> /dev/null
echo "end recovery."
- 开始恢复数据(参数1:索引名称, 参数2:目标 ES地址
$ ./recovery-data.sh article 127.0.0.1
- 配置环境变量
$ vim /etc/profile
export ELASTIC_DUMP=/usr/lib/node_modules/elasticdump
export PATH= P A T H : PATH: PATH:ELASTIC_DUMP/bin
使生效系统变量:
$ source /etc/profile;
如果您觉得有帮助,欢迎点赞哦 ~ 谢谢!!