1. Elasticsearch实战
最后更新于:2022-04-02 07:41:53
### Elasticsearch优化
- 数据目录单独磁盘分区存放
- 最好RAID 10或RAID 0
### JVM配置
/etc/elasticsearch/jvm.options
```shell
-Xms2g #是指设定程序启动时占用内存大小
-Xmx2g #是指设定程序运行期间最大可占用的内存大小
```
#### 建议设置一样大小,避免JVM的垃圾回收和内存的申请
### 配置Elasticsearch内存锁
/etc/elasticsearch/elasticsearch.yml
```shell
# 内存锁配置,避免使用swap分区
# 5.x开启还需要配置Elasticsearch的启动选项,否则启动失败
bootstrap.memory_lock: true
```
/usr/lib/systemd/system/elasticsearch.service
```shell
#允许使用无限大的内存
LimitMEMLOCK=infinity
```
修改elasticsearch.service需要重新加载
```shell
systemctl daemon-reload
systemctl restart elasticsearch.service
```
>[官方文档](https://www.elastic.co/guide/en/elasticsearch/reference/5.5/setting-system-settings.html#systemd "官方文档")
### Elasticsearch数据迁移到新集群
#### 场景介绍
1台ES服务器hostA,一组新ES集群hostB,hostC,想讲hostA中的数据迁移至新集群,版本无变化
##### 将hostB,hostC加入到hostA中
可行,但hostA想废弃,次方案放弃
##### 将hostA中的数据目录拷贝到新集群
可行,但有以下注意事项
1.如hostA中的数据只能复制到新集群中的一台,因为数据目录保存了节点信息,如果hostB和hostC数据一样, 会冲突
```shell
[2017-09-07T10:35:22,521][INFO ][o.e.d.z.ZenDiscovery ] [node-1] failed to send join request to master [{master-1}{DJsZJ1WURqGX_1veHrxVNw}{G-L07qVPQiu9F1_5XTUt4A}{192.168.0.231}{192.168.0.231:9300}], reason [RemoteTransportException[[master-1][192.168.0.231:9300][internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {node-1}{DJsZJ1WURqGX_1veHrxVNw}{ll64l0GAQ-ebOrsMSGJ5Cg}{192.168.0.232}{192.168.0.232:9300}, found existing node {master-1}{DJsZJ1WURqGX_1veHrxVNw}{G-L07qVPQiu9F1_5XTUt4A}{192.168.0.231}{192.168.0.231:9300} with the same id but is a different node instance]; ]
```
2.集群要全部停止,然后先启动有数据的ES
### 故障一例(磁盘超过85%,ES会告警)
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/disk-allocator.html
可以选择ES配置中关闭检测
```shell
cluster.routing.allocation.disk.threshold_enabled: false
```
';