ES集群扩容
随着业务的不断发展,ES集群存储空间不足的问题时常出现,此时就需要对ES集群进行扩容。今天正好对一个已有的集群进行了水平扩容,在此记录一下扩容过程。
集群信息
ES版本:7.5.0
集群名称:es_cluster_7.5.0
ip | hostname | 角色 |
---|---|---|
134.100.100.101 | node-1 | master/data |
134.100.100.102 | node-2 | master/data |
134.100.100.103 | node-3 | master/data |
134.100.100.104 | node-4 | data |
134.100.100.201 | node-5 | 新增data |
134.100.100.202 | node-6 | 新增data |
134.100.100.203 | node-7 | 新增data |
需求
水平扩容,新增3台节点作为ES集群的data节点。
过程
前期准备
与ES安装基本一致,此处简单叙述。
分发安装包
此处为与已有集群保持一致,选择使用二进制安装包进行安装。
将安装包分发至各机器并解压,但先不要启动。
切换es用户
es需要使用root以外的用户启动,此处我们新建一个esuser用户,并将es的安装目录权限的所有权更改为esuser。
chown -R esuser:esuser elasticsearch-7.5.0/
配置JDK
建议使用es安装包内自带的jdk,可以配置到es用户的~/.bash_profile
中,不影响系统的环境变量。
JAVA_HOME=/data/elasticsearch-7.5.0/jdk
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
修改配置文件
编辑elasticsearch.yml
设置集群名称
cluster.name: es_cluster_7.5.0
此处名称要与已有集群保持一致。
设置NodeName
node.name: node-5
此处要确保不能和已有node的名称重复。
设置不为主节点
node.master: false
此处我添加的是data节点,不让其参与选主,所以设置为false,如果可选主则设置为true。
设置节点发现列表
discovery.seed_hosts: ["134.100.100.101","134.100.100.102","134.100.100.103","134.100.100.104","134.100.100.201","134.100.100.202","134.100.100.203"]
将集群中的各个节点ip加入发现列表。
设置安全认证(可选)
如果原集群开启了xpack,则新加入的节点也应该开启相应的配置。
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
并且将原集群中某节点的证书拷贝至该新节点对应目录中:
scp node-1:/data/elasticsearch-7.5.0/config/certs/elastic-certificates.p12 /data/elasticsearch-7.5.0/config/certs
# 别忘了权限
chown -R esuser:esuser /data/elasticsearch-7.5.0/config/certs
启动新节点
nohup bin/elasticsearch 2>&1 &
观察日志,有问题解决问题,没问题则启动成功。
观察节点状态
curl -u elastic:'xxxxxx' -XGET 'http://node-1:9200/_cat/nodes'
192.100.100.102 46 95 2 1.62 1.60 1.59 dilm * node-2
134.100.100.201 4 73 1 0.29 0.24 0.25 dil - node-5
134.100.100.103 65 78 0 0.17 0.15 0.16 dilm - node-3
134.100.100.101 46 82 1 0.67 0.64 0.56 dilm - node-1
134.100.100.104 7 94 1 0.32 0.31 0.32 dil - node-4
可以看到新加入的node-5已经在集群中。
重复以上步骤将3台新节点都加入集群。
尝试连接新节点
在所有节点加入集群成功后,尝试连接新加入的节点查看集群状态。
curl -u elastic:'xxxxxx' -XGET 'http://node-5:9200/_cluster/health?pretty'
{
"cluster_name" : "es_cluster_7.5.0",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 7,
"number_of_data_nodes" : 7,
"active_primary_shards" : 33,
"active_shards" : 66,
"relocating_shards" : 2,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 5,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 4879139,
"active_shards_percent_as_number" : 100.0
}
可以看到新节点已经可以使用,集群中共7个节点,集群状态为green。因为有新节点加入,集群中有2个分片在进行迁移。
广告时间
既然自己维护ES这么复杂,不如试试腾讯云 Elasticsearch Service。
腾讯云 Elasticsearch Service(ES)是基于开源引擎打造的云端全托管 ELK 服务,集成 X-Pack 特性、独有高性能自研内核、QQ 分词、集群巡检、一键升级等优势能力,引入极致性价比的腾讯自研星星海服务器。助您轻松管理和运维集群,高效构建日志分析、运维监控、信息检索、数据分析等业务。
【腾讯云】ElasticSearch新用户特惠,快速实现日志分析、应用搜索,首购低至4折
↑↑↑现在新用户免费试用30天,快点击上方连接开启试用吧。↑↑↑