ES集群——分片集群
资源准备
安装java环境:Java环境搭建
下载es包:https://pan.baidu.com/s/11Vbh3sEaBfqSFxOCNnWXNg (提取码:wa25) 解压步骤: cd /opt tar -zxvf elasticsearch-6.7.2.tar.gz mv elasticsearch-6.7.2 /usr/local/elasticsearch
集群配置
vi /usr/local/elasticsearch/config/elasticsearch.yml
# ------------------------------------ 节点配置 ------------------------------------
node.name: node_01
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
# ------------------------------------ 集群配置 ------------------------------------
# es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: cell
discovery.zen.ping.unicast.hosts: ["172.168.233.128:9300","172.168.233.129:9300", "172.168.233.130:9300"]
discovery.zen.minimum_master_nodes: 2
# ------------------------------------ 持久化配置 ------------------------------------
path.data: /var/data/elasticsearch
path.logs: /var/log/elasticsearch
集群中只需要修改node.name来做标识区分即可
必要环境
必要环境——添加用戶組
不添加的话,启动时会报错
创建文件夹
mkdir /var/data
mkdir /var/data/elasticsearch
mkdir /var/log/elasticsearch
添加用户并赋予文件权限
groupadd es
useradd es -g es -p es
chown -R es:es /var/data/elasticsearch
chown -R es:es /var/log/elasticsearch
chown -R es:es /usr/local/elasticsearch
必要环境——vm配置
不配置的话就会启动不了/etc/sysctl.conf:https://blog.csdn.net/zxljsbk/article/details/89186161/limits.conf :
limits.conf
资源限制配置文件
修改
vi /etc/security/limits.conf
* hard nofile 300000
* soft nofile 300000
查看
ulimit -Hn ulimit -Sn
sysctl.conf
这里是引用
修改
vi /etc/sysctl.conf
vm.max_map_count=262144
生效
/sbin/sysctl -p
启动
关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
开始启动
su es
cd /usr/local/elasticsearch/bin
./elasticsearch -d
测试
访问:http://172.168.233.128:9200/
ES集群——高可用集群
ES集群最好的地方在于,声明式配置,所有节点只需要声明自己的节点类型然后集群分片还有副本高可用自动配置,所以我们先了解节点类型
节点类型
数据节点(Data node) 配置
node.master = false
node.data = true
意义
副本节点,也可以起到负载均衡的作用
客户端节点(Client node)
一般来讲用户直接访问的客户端节点,并给予高配置CPU、Memory,因为要分发请求还有数据合并以及排序
配置
node.master = false
node.data = false
意义
只负责请求的分发、汇总等等,将多个数据合并统一返回和排序,单独增加这种节点来做这个事也是可以的
主节点(Master-eligible node) 配置
node.master = true
node.data = false
意义
集群中会从候选主节点中选举出一个主节点,主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作
协调节点(Coordinating node)
协调节点,是一种角色,而不是真实的Elasticsearch的节点,你没有办法通过配置项来配置哪个节点为协调节点。集群中的任何节点,都可以充当协调节点的角色。当一个节点A收到用户的查询请求后,会把查询子句分发到其它的节点,然后合并各个节点返回的查询结果,最后返回一个完整的数据集给用户。在这个过程中,节点A扮演的就是协调节点的角色。毫无疑问,协调节点会对CPU、Memory要求比较高。
ES集群——特殊情况(待更新)
主要考虑,主节点宕机,从节点如何替代,以及出现了脑裂的情况 或者主节点和从节点同时宕机会发生什么呢?
脑裂
比如网络通信出现问题、主节点因为负载过大停止响应等等,就会导致重新选举主节点,此时可能会出现集群中有多个主节点的现象,即节点对集群状态的认知不一致,称之为脑裂现象
为了尽量避免此种情况的出现,可以通过discovery.zen.minimum_master_nodes来设置最少可工作的候选主节点个数,建议设置为(候选主节点数 / 2) + 1, 比如,当有三个候选主节点时,该配置项的值为(3/2)+1=2,也就是保证集群中有半数以上的候选主节点
ES集群——常见运维(待更新)
计算分片位置