ElasticSearch 5. 搭建ES集群

Elasticsearch集群

1. why?

  • 提高负载能力
  • 提高存储容量上限
  • 实现高可用
  • 提高并发处理能力

2. 数据分片(Shard)

​ es集群把数据拆分成多份,每一份存储到不同节点(node),从而实现减少每个节点的数据量,减少单个服务器的压力,构成分布式搜索。它通过将一个索引切分为多个底层物理的Lucene索引完成索引数据的分割存储功能,这每一个物理的Lucene索引称为一个分片(shard)。当集群规模扩大或者缩小时, Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。

​ 分片的数量只能在索引创建前指定,并且索引创建后不能更改。前一篇留下的创建索引库时设置属性的知识点(https://blog.csdn.net/qq_34928194/article/details/117093434),在这里就可以学到了:

PUT /first_index
{
    "settings" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 1
    }
}
# number_of_shards 分片数量,即这个index切为几个分片
# number_of_replicas 副本数量,保存几个副本

3. 数据备份(replica)

​ es可以给每个分片数据进行备份,存储到其它节点,防止数据丢失,即分片副本(replica)。replica是一个分片的复制,每个分片可以有零个或多个副本。副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。

​ es实现数据备份,首先将数据分片,存储到不同节点上,然后对每个分片进行备份,放在其他节点,完成互相备份。

​ 以上文创建/first_index 的例子,使用head插件查看索引的的分片和副本效果如图:

在这里插入图片描述

first_index 分为三个分片:0 1 2

first_index每个分片有一个副本,分布在不同节点中

4. 集群搭建

在第一篇单机版的基础上进行集群搭建:

ElasticSearch 1. 认识和安装

node-1配置文件修改:

#集群名称
cluster.name: my-application 
#节点名称
node.name: node-1
#是不是可做主节点
node.master: true
#是否存储数据
node.data: true
#数据存储目录
path.data: /path/data
#日志存储目录
path.logs: /path/logs
#⽹关地址
network.host: 192.168.75.130
#http端口,默认9200
http.port: 9200
#集群内tcp通讯端口,默认9300
transport.tcp.port: 9300
#最⼤集群节点数
node.max_local_storage_nodes: 3
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.75.130:9300", "192.168.75.131:9300","192.168.75.132:9300"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

建立node-2、node-3,使用统一集群名称,修改对应的"节点名称"和"网关地址"

#集群名称
cluster.name: my-application 
#节点名称
node.name: node-2
#是不是可做主节点
node.master: true
#是否存储数据
node.data: true
#数据存储目录
path.data: /path/data
#日志存储目录
path.logs: /path/logs
#⽹关地址
network.host: 192.168.75.131
#http端口,默认9200
http.port: 9200
#集群内tcp通讯端口,默认9300
transport.tcp.port: 9300
#最⼤集群节点数
node.max_local_storage_nodes: 3
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.75.130:9300", "192.168.75.131:9300","192.168.75.132:9300"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
#集群名称
cluster.name: my-application 
#节点名称
node.name: node-3
#是不是可做主节点
node.master: true
#是否存储数据
node.data: true
#数据存储目录
path.data: /path/data
#日志存储目录
path.logs: /path/logs
#⽹关地址
network.host: 192.168.75.132
#http端口,默认9200
http.port: 9200
#集群内tcp通讯端口,默认9300
transport.tcp.port: 9300
#最⼤集群节点数
node.max_local_storage_nodes: 3
#es7.x 之后新增的配置,写⼊候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.75.130:9300", "192.168.75.131:9300","192.168.75.132:9300"]
#es7.x 之后新增的配置,初始化⼀个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

新节点接入时使用统一集群名称和新的节点名称

需注意的是:

建立集群时,要把数据存储目录中的旧数据清除掉或者使用新的路径,否则可能会同步数据报错

5. 集群安全性设置

原文链接:https://blog.csdn.net/wzh8108/article/details/105202077

(1) 创建认证

执行:

bin/elasticsearch-certutil ca

依次输入回车(文件使用默认名),密码

(2) 生成证书

执行

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

依次输入上一个步骤的密码。回车(文件使用默认名),密码(建议与上一步密码相同)

执行bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password 并输入第一步输入的密码

执行bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password 并输入第一步输入的密码

(3) 多节点配置

将生成的elastic-certificates.p12、elastic-stack-ca.p12移动至config目录

将生成的elastic-certificates.p12、elastic-stack-ca.p12和config目录下的elasticsearch.keystore复制到其他节点服务器的config目录

记得给elastic用户授权这些文件

(4) 修改配置文件
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

重启各节点,此时访问9200提示需要输入用户名密码

(5) 设置密码

执行

bin/elasticsearch-setup-passwords interactive

依次输入管理员用户elastic和其他内置用户的密码

至此,完成

此时访问9200,输入用户名密码即可访问
查看集群状态
http://192.168.75.130:9200/_cluster/health?pretty

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值