ElasticSearch单节点扩展集群

现况

公司线上环境,随着数据量的增长,存储、查询请求量的增长,单节点已经无法满足使用。需要将单机ES扩展成集群。

数据量:6亿+,800G+

环境依赖

机器配置:24C,64G虚拟机 centos6.8。

项目版本:es版本7.4.0,  jdk版本 1.8。

测试环境改造前

 

目标

将单节点ES扩展成3个主节点4个数据节点的集群。同时需要保障存量数据可以完整进入新集群中。本文章以测试环境为基础先验证。

思路

现有 151(es-m-01),168(es-m-02),169(es-m-03),170(es-s-01),171(es-s-02),172(es-s-03),173(es-s-04) 作为测试机器。

  1. 新建一个主节点(169),将原ES data目录拷贝到新节点中,启动验证是否正常。
  2. 新增4个数据节点(170,171,172,173),设置启动3个节点后同步数据。
  3. 启动数据节点,加入es单节点,等待自动同步数据。
  4. 动态新增2个主节点(151,168)。
  5. 整体停机,更改数据节点配置,设置为3个主节点。
  6. 确认主节点加入后,关停原始主节点(169)。
  7. 设置主节点数据为不存储。删除data数据。启动主节点。
  8. reindex数据,让数据更均匀分布。

环境准备

操作列表

  • 下载设置jdk1.8以上
  • 将es7.4.0解压放在目录/opt/bssoft/es 下
  • 将ik插件(elasticsearch-analysis-ik-7.4.0)放入plugins/
  • 更改/etc/security/limits.conf ,追加如下配置
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
es soft memlock unlimited
es hard memlock unlimited
  • 修改/etc/sysctl.conf

vm.max_map_count=262144

执行  sysctl -p

  • 更改/etc/hosts 文件

192.168.1.151 es-m-01
192.168.1.168 es-m-02
192.168.1.169 es-m-03
192.168.1.170 es-s-01
192.168.1.171 es-s-02
192.168.1.172 es-s-03
192.168.1.173 es-s-04
192.168.1.175 es-s-05
  • 添加es用户组用户,更改用户

groupadd es
useradd es -g es -p es
#更改es文件目录权限
chown -R es:es es
  • 关闭防火墙,或开放9200和9300端口

效果验证

[es@hosta171 es]$ pwd
/opt/bssoft/es
[es@hosta171 es]$ ll
总用量 556
drwxr-xr-x.  2 es es   4096 9月  27 2019 bin
drwxr-xr-x.  2 es es    178 3月   5 16:37 config
drwxr-xr-x.  3 es es     19 3月   5 14:30 data
drwxr-xr-x. 10 es es    119 9月  27 2019 jdk
drwxr-xr-x.  3 es es   4096 9月  27 2019 lib
-rw-r--r--.  1 es es  13675 9月  27 2019 LICENSE.txt
drwxr-xr-x.  2 es es   4096 3月   5 15:03 logs
drwxr-xr-x. 37 es es   4096 9月  27 2019 modules
-rw-r--r--.  1 es es 523209 9月  27 2019 NOTICE.txt
drwxr-xr-x.  3 es es     25 3月   4 17:21 plugins
-rw-r--r--.  1 es es   8500 9月  27 2019 README.textile README.textile
[es@hosta171 es]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31792
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[es@hosta171 es]$ firewall-cmd --state
not running

操作过程

步骤1 新建一个主节点(169),将原ES data目录拷贝到新节点中,启动验证是否正常。

169 config/elasticsearch.yml

cluster.name: bssoft
node.name: es-m-03
path.data: /opt/bssoft/es/data
path.logs: /opt/bssoft/es/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
#discovery.seed_hosts: ["192.168.1.151","192.168.1.168","192.168.1.169"]
#cluster.initial_master_nodes: ["es-m-01","es-m-02","es-m-03"]
discovery.seed_hosts: ["192.168.1.169"]
cluster.initial_master_nodes: ["es-m-03"]
#gateway.recover_after_nodes: 3
#bootstrap.system_call_filter: false
path.repo: ["/usr/local/backups/es_backup"]
http.cors.enabled: true
http.cors.allow-origin: "*"
node.data: true
node.master: true

拷贝数据,更改目录权限

[root@ev01 data]# scp -rp nodes/ root@192.168.1.169:/opt/bssoft/es/data/

[root@host169 es]#cd /opt/bssoft/es
[root@host169 es]#chown -R es:es data/

切换 es用户,启动elasticsearch

步骤2 新增4个数据节点(170,171,172,173),设置启动3个节点后同步数据。

关闭169 es,更改elasticsearch.yml 开启节点备份

gateway.recover_after_nodes: 3

更改170,171,172,173配置 elasticsearch.yml配置

cluster.name: bssoft
node.name: es-s-01
# node.attr.rack: r1
path.data: /opt/bssoft/es/data
path.logs: /opt/bssoft/es/logs
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
#discovery.seed_hosts: ["192.168.1.151","192.168.1.168","192.168.1.169"]
#cluster.initial_master_nodes: ["es-m-01","es-m-02","es-m-03"]
discovery.seed_hosts: ["192.168.1.169"]
cluster.initial_master_nodes: ["es-s-03"]
gateway.recover_after_nodes: 3
#action.destructive_requires_name: true
bootstrap.system_call_filter: false
path.repo: ["/usr/local/backups/es_backup"]
http.cors.enabled: true
http.cors.allow-origin: "*"
node.data: true
node.master: false

验证集群以及数据同步

http://192.168.1.169:9200/_cat/nodes

192.168.1.171 35 71 2 0.05 0.20 0.40 dil  - es-s-02
192.168.1.172 32 57 0 0.00 0.03 0.05 dilm - es-s-03
192.168.1.170 29 57 0 0.00 0.01 0.05 dil  - es-s-01
192.168.1.151 15 98 1 0.18 0.14 0.11 dilm  * es-m-03
192.168.1.173 23 56 0 0.04 0.05 0.05 dil  - es-s-04

步骤3 启动数据节点,加入es单节点,等待自动同步数据。

通过elasticsearch-head看到数据已同步完毕

(博主数据同步的elasticsearch-head截图没有保留)

步骤4 动态新增2个主节点(151,168)。

151,168 更改配置文件

差异配置 discovery.zen.minimum_master_nodes: 2

cluster.name: bssoft
node.name: es-m-01
# node.attr.rack: r1
path.data: /opt/bssoft/es/data
path.logs: /opt/bssoft/es/logs
# Lock the memory on startup:
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["192.168.1.151","192.168.1.168","192.168.1.169"]
cluster.initial_master_nodes: ["es-m-01","es-m-02","es-m-03"]
#action.destructive_requires_name: true
#bootstrap.system_call_filter: false
path.repo: ["/usr/local/backups/es_backup"]
http.cors.enabled: true
http.cors.allow-origin: "*"
node.data: false
node.master: true

discovery.zen.minimum_master_nodes: 2

验证集群以及数据同步

http://192.168.1.169:9200/_cat/nodes

192.168.1.168 16 46 1 0.02 0.04 0.05 ilm  - es-m-02
192.168.1.169 15 89 1 0.01 0.07 0.05 dilm  * es-m-03
192.168.1.171 35 71 2 0.05 0.20 0.40 dil  - es-s-02
192.168.1.172 32 57 0 0.00 0.03 0.05 dilm - es-s-03
192.168.1.170 29 57 0 0.00 0.01 0.05 dil  - es-s-01
192.168.1.151 15 98 1 0.18 0.14 0.11 ilm  - es-m-01
192.168.1.173 23 56 0 0.04 0.05 0.05 dil  - es-s-04

效果 图

步骤5 整体停机,更改数据节点配置,设置为3个主节点。

更改169 elasticsearch.yml

discovery.seed_hosts: ["192.168.1.151","192.168.1.168","192.168.1.169"]
cluster.initial_master_nodes: ["es-m-01","es-m-02","es-m-03"]
discovery.zen.minimum_master_nodes: 2

更改170,171,172,173 elasticsearch.yml

discovery.seed_hosts: ["192.168.1.151","192.168.1.168","192.168.1.169"]
cluster.initial_master_nodes: ["es-m-01","es-m-02","es-m-03"]

步骤6 确认主节点加入后,关停原始主节点(169)。

http://192.168.1.169:9200/_cat/nodes

结果应与步骤4一致

步骤7 设置主节点数据为不存储。删除data数据。启动主节点。

将169(es-m-03) kill掉

http://192.168.1.169:9200/_cat/nodes

192.168.1.168 16 46 1 0.02 0.04 0.05 ilm  - es-m-02
192.168.1.171 35 71 2 0.05 0.20 0.40 dil  - es-s-02
192.168.1.172 32 57 0 0.00 0.03 0.05 dilm - es-s-03
192.168.1.170 29 57 0 0.00 0.01 0.05 dil  - es-s-01
192.168.1.151 15 98 1 0.18 0.14 0.11 ilm  * es-m-01
192.168.1.173 23 56 0 0.04 0.05 0.05 dil  - es-s-04

等待数据同步结束 

更改169 elasticsearch.yml

node.data: false

删除169  data下的数据后再次启动

结果验证

http://192.168.1.169:9200/_cat/nodes

192.168.1.168 16 46 1 0.02 0.04 0.05 ilm  - es-m-02
192.168.1.169 15 89 1 0.01 0.07 0.05 ilm  - es-m-03
192.168.1.171 35 71 2 0.05 0.20 0.40 dil  - es-s-02
192.168.1.172 32 57 0 0.00 0.03 0.05 dilm - es-s-03
192.168.1.170 29 57 0 0.00 0.01 0.05 dil  - es-s-01
192.168.1.151 15 98 1 0.18 0.14 0.11 ilm  * es-m-01
192.168.1.173 23 56 0 0.04 0.05 0.05 dil  - es-s-04

elasticsearch-head验证

步骤8 reindex数据,让数据更均匀分布。

发现es-s-02上有全量数据,为了保证数据均匀,建议通过 _reidnex 重新索引下。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置elasticsearch节点,请按照以下步骤进行操作: 1. 下载和安装Elasticsearch 首先,您需要下载和安装Elasticsearch。请确保您已经安装了Java 8或更高版本,并且已将其添加到了PATH环境变量中。然后,您可以从Elasticsearch官网下载最新的稳定版本。 2. 配置elasticsearch.yml文件 在安装完成后,您需要修改elasticsearch.yml文件以配置Elasticsearch。该文件位于Elasticsearch安装目录下的config文件夹中。 打开elasticsearch.yml文件并进行以下更改: - 设置集群名称:cluster.name: my_elasticsearch_cluster - 设置节点名称:node.name: my_elasticsearch_node - 设置数据目录:path.data: /path/to/elasticsearch/data - 设置日志目录:path.logs: /path/to/elasticsearch/logs 注意,您应该将/path/to/elasticsearch/data和/path/to/elasticsearch/logs替换为您的数据和日志目录的实际路径。 3. 启动Elasticsearch 完成elasticsearch.yml文件的配置后,您可以启动Elasticsearch。打开终端并导航到Elasticsearch安装目录下的bin文件夹。然后运行以下命令: ./elasticsearch 这将启动Elasticsearch并将其绑定到默认端口9200和9300。您可以通过在浏览器中访问http://localhost:9200来验证Elasticsearch是否正在运行。如果一切正常,您应该能够看到Elasticsearch的基本信息。 4. 验证集群健康状况 您可以使用curl命令验证Elasticsearch集群的健康状况。打开终端并运行以下命令: curl -XGET 'http://localhost:9200/_cluster/health?pretty=true' 如果Elasticsearch正在运行,并且集群的健康状况为“green”,则表示一切正常。 现在,您已经成功地配置了一个Elasticsearch节点。如果您想要将其扩展为多节点集群,请参阅Elasticsearch官方文档以获取更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值