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 副本数量,保存几个副本
es可以给每个分片数据进行备份,存储到其它节点,防止数据丢失,即分片副本(replica)。replica是一个分片的复制,每个分片可以有零个或多个副本。副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
es实现数据备份,首先将数据分片,存储到不同节点上,然后对每个分片进行备份,放在其他节点,完成互相备份。
以上文创建/first_index 的例子,使用head插件查看索引的的分片和副本效果如图:
first_index 分为三个分片:0 1 2
first_index每个分片有一个副本,分布在不同节点中
在第一篇单机版的基础上进行集群搭建:
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"]
新节点接入时使用统一集群名称和新的节点名称
需注意的是:
建立集群时,要把数据存储目录中的旧数据清除掉或者使用新的路径,否则可能会同步数据报错
原文链接:https://blog.csdn.net/wzh8108/article/details/105202077
执行:
bin/elasticsearch-certutil ca
依次输入回车(文件使用默认名),密码
执行
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 并输入第一步输入的密码
将生成的elastic-certificates.p12、elastic-stack-ca.p12移动至config目录
将生成的elastic-certificates.p12、elastic-stack-ca.p12和config目录下的elasticsearch.keystore复制到其他节点服务器的config目录
记得给elastic用户授权这些文件
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提示需要输入用户名密码
执行
bin/elasticsearch-setup-passwords interactive
依次输入管理员用户elastic和其他内置用户的密码
至此,完成
此时访问9200,输入用户名密码即可访问
查看集群状态
http://192.168.75.130:9200/_cluster/health?pretty