4. es集群搭建
目录
es集群搭建
一 . 单机集群搭建 - windows
单机集群部署,需要通过设置不同的IP和集群IP来实现区分各节点。
windows单机集群的特点是,搭建简单,好理解,能快速入门,了解es集群的特点。
搭建环境: win10 + elasticsearch-6.8.0 + kibana-6.8.0
1.windows安装JAVA环境
1.下载点击jdk-8u201-windows-x64.exe安装Java,Java目录下会有两个目录: jdk,jre
2.配置环境变量:
- 此电脑 -> 右键属性 -> 高级系统设置 -> 环境变量 -> 系统变量
- 新建系统变量:
变量名:JAVA_HOME
变量值:安装Java目录下的jdk
- 点击Path,编辑环境变量,新建-> %JAVA_HOME%\bin 相当jdk目录下的bin
3.检查:
win+R -> cmd -> java -version
2.创建es集群节点
为了便于管理,我在E盘的根目录下创建一个es_cluster
目录,然后将elasticsearch压缩包和kibana压缩包解压到该目录内,并且对es节点重命名node-1,node-2,node-3
我们为这个集群增加一些单播配置,打开各节点内的\config\elasticsearch.yml
文件。每个节点的配置如下:
node-1
cluster.name: s33 # 集群名称要一致
node.name: node-1 # 节点名称
network.host: 127.0.0.1
http.port: 9200 # 监听端口
transport.tcp.port: 9300 # 广播端口,集群端口
# ping地址
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2 # 脑裂值 = 节点数 // 2 + 1
node.master: true # 是否允许成为主节点
node.data: false # 是否允许储存数据
node-2
cluster.name: s33
node.name: node-2
network.host: 127.0.0.1
http.port: 9201
transport.tcp.port: 9301
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2
node.master: true
node.data: true
node-3
cluster.name: s33
node.name: node-3
network.host: 127.0.0.1
http.port: 9202
transport.tcp.port: 9302
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301", "127.0.0.1:9302"]
discovery.zen.minimum_master_nodes: 2
node.master: false
node.data: true
运行es: 右键各个节点\bin\elasticsearch.bat
以管理员身份打开
查看节点:
1.使用elasticsearch head
浏览器插件,输入监听端口http://127.0.0.1:9200
2.使用kibana查看,编辑配置文件\config\kibana.yml
# 监听es地址
elasticsearch.hosts: ["http://127.0.0.1:9200"]
3.运行kibana,右键bin\kibana.bat
以管理员身份打开
4.浏览器输入网址: 127.0.0.1:5601
二 . 多机集群搭建 - centOS
搭建环境:centos7.9 + elasticsearch-6.8.15
演示如何在三台服务器上搭建es集群,基于rpm包的安装方式。
复制三台centOS7.9虚拟机,分别为node-1,node-2,node-3三个节点
环境部署
集体环境部署 - 三台虚拟机都需要部署
1.安装上传下载与不全功能:
yum install lrzsz bash-completion -y
2.JAVA环境安装:
yum install java-1.8.0-openjdk.x86_64 -y
查看:
java -version
3.安装elasticsearch
1.上传或下载rpm包
[root@cs ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.15.rpm
[root@cs ~]# rz
2.解压
[root@cs tmp]# rpm -ivh elasticsearch-6.8.15.rpm
[root@cs tmp]# systemctl daemon-reload
删除安装包
[root@cs tmp]# rm -rf elasticsearch-6.8.15.rpm
查看elasticsearch目录
[root@cs tmp]# rpm -qc elasticsearch
4.更改目录权限:
注意: elasticsearch服务的运行需要以非root权限运行,但rpm安装时,默认帮我们创建了一个elasticsearch用户,所以,接下来,这里,我手动创建一个数据文件目录,然后给相关目录进行授权:
mkdir -p /data/elasticsearch
chown -R elasticsearch:elasticsearch /data/elasticsearch/
chmod -R g+s /data/elasticsearch/
chown -R elasticsearch:elasticsearch /etc/elasticsearch/
chown -R elasticsearch:elasticsearch /etc/init.d/elasticsearch
chown -R elasticsearch:elasticsearch /etc/sysconfig/elasticsearch
chown -R elasticsearch:elasticsearch /var/log/elasticsearch/
chown -R elasticsearch:elasticsearch /usr/share/elasticsearch/
chown -R elasticsearch:elasticsearch /usr/lib/sysctl.d/elasticsearch.conf
chown -R elasticsearch:elasticsearch /usr/lib/systemd/system/elasticsearch.service
5.为了后续能正常启动集群,需要提前对系统参数和内核参数做些配置。
修改系统参数:
[root@cs tmp]# vim /etc/security/limits.conf
# 可打开的文件句柄最大数
* soft nofile 65535
* hard nofile 65535
# 单个用户可用的最大进程数
* soft nproc 4096
* hard nproc 4096
# 可打开的文件描述符的最大数,unlimited:无限制
* soft memlock unlimited
* hard memlock unlimited
修改内核参数:
[root@cs tmp]# vim /etc/sysctl.conf
# JAM能开启的最大线程数
vm.max_map_count = 262144
[root@cs tmp]# sysctl -p # 使修改的内核参数生效
vm.max_map_count = 262144
6.为了避免内存锁定失败,还需要编译文件输入内容:
[root@cs tmp]# sudo systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
[root@cs tmp]# sudo systemctl daemon-reload
节点配置
node-1
# 复制 清空 编辑 elasticsearch配置文件
[root@cs tmp]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
[root@cs tmp]# > /etc/elasticsearch/elasticsearch.yml
[root@cs tmp]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my_cluster # 集群名称
node.name: node-1 # 节点名称
node.master: true # 是否允许做主节点
node.data: true # 是否允许储存数据
path.data: /data/elasticsearch # 数据储存目录
path.logs: /var/log/elasticsearch # 日志目录
bootstrap.memory_lock: true # 是否锁定内存
network.host: 192.168.189.132,127.0.0.1 # 监听地址 - 虚拟机ip地址
http.port: 9200 # 监听端口
discovery.zen.ping.unicast.hosts: ["192.168.189.132", "192.168.189.133", "192.168.189.134"] # ping地址:三个虚拟机地址
http.cors.enabled: true
http.cors.allow-origin: "*"
# discovery.zen.minimum_master_nodes: 2 # 脑裂值,先注释掉,集群搭建成功,再解开注释
node-2
# 与node-1相比,质数改变了节点名称和ip地址
# 复制 清空 编辑 elasticsearch配置文件
[root@cs tmp]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
[root@cs tmp]# > /etc/elasticsearch/elasticsearch.yml
[root@cs tmp]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my_cluster
node.name: node-2
node.master: true
node.data: true
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 192.168.189.133,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.189.132", "192.168.189.133", "192.168.189.134"]
http.cors.enabled: true
http.cors.allow-origin: "*"
# discovery.zen.minimum_master_nodes: 2
node-3
# 与node-1相比,质数改变了节点名称和ip地址
# 复制 清空 编辑 elasticsearch配置文件
[root@cs tmp]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
[root@cs tmp]# > /etc/elasticsearch/elasticsearch.yml
[root@cs tmp]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my_cluster
node.name: node-3
node.master: true
node.data: true
path.data: /data/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 192.168.189.134,127.0.0.1
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.189.132", "192.168.189.133", "192.168.189.134"]
http.cors.enabled: true
http.cors.allow-origin: "*"
# discovery.zen.minimum_master_nodes: 2
启动es服务
[root@cs tmp]# systemctl start elasticsearch
[root@cs tmp]# systemctl status elasticsearch
[root@cs tmp]# curl http://127.0.0.1:9200
{
"name" : "node-2",
"cluster_name" : "my_cluster",
"cluster_uuid" : "sPQePmgpSi6c9AQkpWm6oA",
"version" : {
"number" : "6.8.15",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "c9a8c60",
"build_date" : "2021-03-18T06:33:32.588487Z",
"build_snapshot" : false,
"lucene_version" : "7.7.3",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
[root@cs tmp]# curl http://127.0.0.1:9200/_cat/nodes # 查看集群节点
或者使用elasticsearch head 插件查看节点 输入: http://192.168.189.132:9200