先了解几个概念
1.候选主节点(Master-eligible node)
一个节点启动后,就会使用Zen Discovery机制去寻找集群中的其他节点,并与之建立连接。集群中会从候选主节点中选举出一个主节点,主节点负责创建索引、删除索引、分配分片、追踪集群中的节点状态等工作。
设置方式node.master: true
2.数据节点(Data node)
负责数据的存储、检索等操作,对磁空间、CPU的要求较高
设置方式node.data: true
3.客户端节点(Client node)
客户端节点就是既不做候选主节点也不做数据节点的节点,只负责请求的分发、汇总等等,也就是下面要说到的协调节点的角色。这样的工作,其实任何一个节点都可以完成,单独增加这样的节点更多是为了负载均衡。
设置方式node.master: false node.data: false
协调节点(Coordinating node)
协调节点,是一种角色,而不是真实的Elasticsearch的节点,没有办法通过配置项来配置哪个节点为协调节点。集群中的任何节点,都可以充当协调节点的角色。当一个节点A收到用户的查询请求后,会把查询子句分发到其它的节点,然后合并各个节点返回的查询结果,最后返回一个完整的数据集给用户。在这个过程中,节点A扮演的就是协调节点的角色。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
部署方式
假设现有3台服务器 ip 分别为 192.168.8.115 192.168.8.116 192.168.8.117
每台机器都修改es安装目录下的 config/elasticsearch.yml
集群名称 cluster.name 相同 例如cluster.name: my-application
节点名称 node.name 不同 每一台机器都是一个节点 例如三台分别为node.name: node-115 node.name: node-116 node.name: node-117
主机地址 network.host 不同 暂时设置为 0.0.0.0
其他配置 每台机器即使候选主节点也作为数据节点 所以以下两项都设置为true 当然也可以根据实际场景做变更,如果原配置文件没有此项 可以在文件末尾添加
候选主节点node.master: true 数据节点node.data: true(true前面要有空格)
增加服务器时如果是克隆服务器,克隆后的服务器需要清空data目录下的数据 假设es的安装目录为/elasticsearch-6.5.0/
则先切换到data目录下 通过cd /elasticsearch-6.5.0/data 然后执行 rm -rf * (!!!!!一定不要在其他目录下执行!!!!!)
discovery.zen.ping.unicast.hosts: ["host1", "host2"]例如每台机器都配置为
discovery.zen.ping.unicast.hosts: ["192.168.8.115", "192.168.8.116","192.168.8.117"]
集群可以作为候选主节点的数量 一般设置为总机器数量一半+1 避免脑裂
例如 discovery.zen.minimum_master_nodes: 2
192.168.8.116 18 96 34 0.55 0.73 0.36 mdi * node-116 192.168.8.115 12 96 30 0.38 0.64 0.33 mdi - node-115 192.168.8.117 15 95 33 1.27 0.89 0.41 mdi - node-117
http://主机地址:9200/_cluster/health
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
安装head插件https://github.com/mobz/elasticsearch-head
yum install git (如果没有git请先下载git)
运行npm命令需要安装nodejs (npm类似于php的composer)
在目标目录下执行下载指令 下面以在/root目录下操作为例子说明
wget https://nodejs.org/dist/v11.2.0/node-v11.2.0-linux-x64.tar.xz
xz -d node-v11.2.0-linux-x64.tar.xz
tar xvf node-v11.2.0-linux-x64.tar
ln -s /root/node-v11.2.0-linux-x64/bin/node /usr/local/bin/node
ln -s /root/node-v11.2.0-linux-x64/bin/npm /usr/local/bin/npm
如果执行npm -v 和node -v 显示对应的版本号说明安装成功
git clone git://github.com/mobz/elasticsearch-head.git
如果以上命令报错可以执行npm install phantomjs-prebuilt@2.1.16 --ignore-scripts(如果报这个脚本错误,那么过滤此脚本)
编辑配置文件 config/elasticsearch.yml(可以只修改安装了head插件的机器 如果允许访问其他机器 则目标机必须做同样的修改) 可以在配置文件末尾追加如下配置