Elasticsearch扩容文档

540 阅读3分钟

最终步骤

0.SRE配置物理机环境,准备SSD磁盘,同步docker镜像

1.在rolling上启动节点(检查是否正常启动,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

   如果出现此错误,则需要SRE改下ulimit参数。

2.如启动成功,则将 新加的 ip 加入 host 映射中 nodes.es.snowballfinance.com,之后在 kibana 上查看是否已经发现新增节点

  kibana查看地址:esmonitor.snowballfinance.com/app/monitor…

3.检查是否开始自动分片,如 shard activity 中 未开始分片,则检查  cluster.routing.allocation.enable 设置,开启自动分配分片

  • 查看分片状态
    http://10.10.55.1:9200/_cluster/settings 查看cluster.routing.allocation.enable 设置,为all则开启自动分片,为none则需要重新设置

  • 调整代码

    curl -XPUT 10.10.55.1:9200``/_cluster/settings -d '{``    ``"transient" : {``        ``"cluster.routing.allocation.enable" : ``"all"``    ``}`` ``}'

4 等待分片完成,检查功能是否正常。

5 调整 discovery.zen.minimum_master_nodes 参数 (查看 http://10.10.55.1:9200/_cluster/settings

curl -XPUT ``10.10``.``55.1``:``9200``/_cluster/settings -d '{``     ``"persistent" : {``         ``"discovery.zen.minimum_master_nodes" : nodes/``2 + ``1``    ``}``  ``}'

方案

1.es集群由5个节点暂时扩容至7个节点。

2.status修改主片数量,重新索引。

3.stock迁移,优先级提升,确保盘中股票搜索稳定。

4.产品优化,将综合搜索中的帖子搜索拆分。

 

步骤

-1. 提前规划好各节点的副本数

0. 打开帖子搜索降级开关,并 暂停 search-thread,停止写入,降低资源开销

1.elasticsearch.yml 部分重要内容

namevalue作用
cluster.namees-search-prod 
```
node.name
```${ES_NODE_NAME}```html
{ENV}_{LAST_IP}" //sep_200-101
| ```
path.logs
```                    | /persist/ssd/logs                                                        | 扩容顺便可以修改一下日志路径                                                                                                |
| discovery.zen.ping.unicast.hosts     | ["[nodes.es.snowballfinance.com](http://nodes.es.snowballfinance.com/)"] | ```
主要是在ES节点启动的时候会寻找的主机列表。默认扫描9300到9305端口 
```如果这里配置的是域名的话,会扫描该域名由DNS解析出来的所有IP地址。如果节点在其他的服务器上,需要配置该服务器的ip和端口号 |
| discovery.zen.minimum_master_nodes   | (total number of nodes / 2 + 1)                                          | 这个数据可以通过api进行调整。见附录1。                                                                                         |
| gateway.recover_after_nodes          | 4                                                                        | ```
当集群中多少台机器成功加入集群后开始恢复数据。建议集群节点的一半节点
```                                                                    |
| gateway.expected_nodes               | 5                                                                        |                                                                                                               |

 

* 附录1

  ```html
  minimum_master_nodes配置数量为N/2+1。N为集群节点数。
  • 修改方式
    ```

    PUT /_cluster/settings
    {
        "persistent" : {
            "discovery.zen.minimum_master_nodes" : 2
        }
    }
    


    ```

 

2.SRE部分,负责环境搭建

a:自动环境搭建 sre 通过docker 镜像同步环境

b:手动环境搭建:将55.1的escopy中新增节点。

ssh ``10.10``.``55.1``tar -cvf es.gz es``rsync -avz --progress --bwlimit=``1000 es.gz ``10.10``.``25.7``::share``ssh 需要扩容的ip (  ``10.10``.``31.10      10.10``.``36.6 )``cd /data/deploy/``rsync -avz --progress ``10.10``.``25.7``::share/es.gz .``tar -zvf es.gz

 

3.改配置文件

cd es/config/prod

vim elasticsearch.yaml

修改discovery.zen.minimum_master_nodes为(total number of nodes / 2 + 1)

修改discovery.zen.ping.unicast.hosts,需要判断新增的ip是否在["nodes.es.snowballfinance.com"]中

节点还没成功之前,先用["10.10.55.1:9300","10.10.55.2:9300","10.10.55.3:9300","10.10.55.4:9300","10.10.55.5:9300","ip:9300"]

启动:sh start_server.sh

4.kibana查看节点状态

http://#########/app/monitoring#/elasticsearch/nodes?_g=(cluster_uuid:TaZ5d1F6T_eTCzzF6u74jg)

或者http://ip:9200/_cluster/health?pretty

http://ip:9200/_cluster/health?level=indices

5.sre增加节点到rolling中。

 

0:SRE配置物理机环境,准备SSD磁盘,同步docker镜像

1:在rolling上启动节点(检查是否正常启动,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

   如果出现此错误,则需要SRE改下ulimit参数。

2:如启动成功,则将 新加的 ip 加入 host 映射中 nodes.es.snowballfinance.com,之后在 kibana 上查看是否已经发现新增节点

3:检查是否开始自动分片,如 shard activity 中 未开始分片,则检查  cluster.routing.allocation.enable 设置,开启自动分配分片

4:等待分片完成,检查功能是否正常。

5:调整 discovery.zen.minimum_master_nodes 参数