目录
1. 软件下载
软件下载地址:https://www.elastic.co/cn/downloads/past-releases/
2. 集群部署
- 多个不同的节点(es)要提供不同的端口号,将集群当成一个整体来使用。
- 一个 Elasticsearch 集群有一个唯一的名字标识,节点只能通过指定某个集群的名字,来加入这个集群。
- 建议部署3台
# 解压缩到三台服务器 node1、node2、node3
tar -zxvf elasticsearch-7.5.1-linux-x86_64.tar.gz
# 在三台服务器分别改名
mv elasticsearch-7.5.1 es-node1
mv elasticsearch-7.5.1 es-node2
mv elasticsearch-7.5.1 es-node3
3. 创建账户
因为安全问题, Elasticsearch 不允许 root 用户直接运行,所以要在每个节点中创建新用户,在 root 用户中创建新用户
#root账户下新增es用户
useradd es #新增用户
passwd es #为 es 用户设置密码
userdel -r es #如果错了,可以删除再加
chown -R es:es /home/yc/elastic/es-node1 #文件夹所有者
chown -R es:es /home/yc/elastic/es-node2 #文件夹所有者
chown -R es:es /home/yc/elastic/es-node3 #文件夹所有者
#给最高权限
chmod 775 文件名
4. 集群搭建
Linux集群搭建
1)解压软件:tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz -C /opt/module
2)创建用户:Elasticsearch 不允许 root 用户直接运行,所以要创建新用户。
3)修改三个节点上的config/elasticsearch.yml 文件
-
node-1
# 加入如下配置 #集群名称 cluster.name: cluster-es #节点名称, 每个节点的名称不能重复 node.name: node-1 #ip 地址,填入每个节点的ip network.host: xxx.xxx.xxx.xxx #是不是有资格主节点 node.master: true node.data: true # 设置对外服务的http端口,默认为9200 http.port: 9200 # 设置节点间交互的tcp端口,默认是9300 transport.tcp.port: 9300 # head 插件需要这打开这两个配置 http.cors.allow-origin: "*" http.cors.enabled: true http.max_content_length: 200mb #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master cluster.initial_master_nodes: ["node-1", "node-2", "node-3"] #es7.x 之后新增的配置,节点发现 discovery.seed_hosts: ["xxx.xxx.xxx.xxx:9300","xxx.xxx.xxx.xxx:9301","xxx.xxx.xxx.xxx:9302"] #集群内同时启动的数据任务个数,默认是 2 个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认 4 个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
-
node-2
# 加入如下配置 #集群名称 cluster.name: cluster-es #节点名称, 每个节点的名称不能重复 node.name: node-2 #ip 地址,填入每个节点的ip network.host: xxx.xxx.xxx.xxx #是不是有资格主节点 node.master: true node.data: true # 设置对外服务的http端口,默认为9200 http.port: 9201 # 设置节点间交互的tcp端口,默认是9300 transport.tcp.port: 9301 # head 插件需要这打开这两个配置 http.cors.allow-origin: "*" http.cors.enabled: true http.max_content_length: 200mb #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master cluster.initial_master_nodes: ["node-1", "node-2", "node-3"] #es7.x 之后新增的配置,节点发现 discovery.seed_hosts: ["xxx.xxx.xxx.xxx:9300","xxx.xxx.xxx.xxx:9301","xxx.xxx.xxx.xxx:9302"] #集群内同时启动的数据任务个数,默认是 2 个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认 4 个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
-
node-3
# 加入如下配置 #集群名称 cluster.name: cluster-es #节点名称, 每个节点的名称不能重复 node.name: node-3 #ip 地址,填入每个节点的ip network.host: xxx.xxx.xxx.xxx #是不是有资格主节点 node.master: true node.data: true # 设置对外服务的http端口,默认为9200 http.port: 9202 # 设置节点间交互的tcp端口,默认是9300 transport.tcp.port: 9302 # head 插件需要这打开这两个配置 http.cors.allow-origin: "*" http.cors.enabled: true http.max_content_length: 200mb #es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master cluster.initial_master_nodes: ["node-1", "node-2", "node-3"] #es7.x 之后新增的配置,节点发现 discovery.seed_hosts: ["xxx.xxx.xxx.xxx:9300","xxx.xxx.xxx.xxx:9301","xxx.xxx.xxx.xxx:9302"] #集群内同时启动的数据任务个数,默认是 2 个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个 cluster.routing.allocation.node_concurrent_recoveries: 16 #初始化数据恢复时,并发恢复线程的个数,默认 4 个 cluster.routing.allocation.node_initial_primaries_recoveries: 16
3)需要修改一下系统的相关配置
-
修改/etc/security/limits.conf(es是新建的账户)
# 在文件末尾中增加下面内容 # 每个进程可以打开的文件数的限制 es soft nofile 65536 es hard nofile 65536
-
修改/etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面内容 # 每个进程可以打开的文件数的限制 es soft nofile 65536 es hard nofile 65536 # 操作系统级别对每个用户创建的进程数的限制 * hard nproc 4096 # 注:* 带表 Linux 所有用户名称
-
修改/etc/sysctl.conf
# 在文件中增加下面内容 # 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536 vm.max_map_count=655360
-
重新加载
sysctl -p
5)启动es(顺序启动)
cd /opt/module/es/
#启动
bin/elasticsearch
#后台启动
bin/elasticsearch -d
关闭防火墙(按需操作)
#暂时关闭防火墙
systemctl stop firewalld
#永久关闭防火墙
systemctl enable firewalld.service #打开放货抢永久性生效,重启后不会复原
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原
Windows集群搭建
1)创建 elasticsearch-cluster 文件夹,在内部复制三个 elasticsearch 服务
2)修改集群文件目录中每个节点的 config/elasticsearch.yml 配置文件
3)启动集群(启动前先删除每个节点中的 data 目录中所有内容),bin/elasticsearch.bat, 启动节点服务。
config/elasticsearch.yml
-
node1
#节点 1 的配置信息: #集群名称,节点之间要保持一致 cluster.name: my-elasticsearch #节点名称,集群内要唯一 node.name: es-1001 node.master: true node.data: true #ip 地址 network.host: localhost #http 端口 http.port: 1001 #tcp 监听端口 transport.tcp.port: 9301 #ES查找节点模块(第一台机器不需要加) #discovery.seed_hosts: ["localhost:9301", "localhost:9302","localhost:9303"] #discovery.zen.fd.ping_timeout: 1m #discovery.zen.fd.ping_retries: 5 #集群内的可以被选为主节点的节点列表 #cluster.initial_master_nodes: ["node-1", "node-2","node-3"] #跨域配置 #action.destructive_requires_name: true http.cors.enabled: true http.cors.allow-origin: "*"
-
node2
#节点 2 的配置信息: #集群名称,节点之间要保持一致 cluster.name: my-elasticsearch #节点名称,集群内要唯一 node.name: es-1002 node.master: true node.data: true #ip 地址 network.host: localhost #http 端口 http.port: 1002 #tcp 监听端口 transport.tcp.port: 9302 #ES查找节点模块(第一台机器不需要加) discovery.seed_hosts: ["localhost:9301"] discovery.zen.fd.ping_timeout: 1m discovery.zen.fd.ping_retries: 5 #集群内的可以被选为主节点的节点列表 #cluster.initial_master_nodes: ["node-1", "node-2","node-3"] #跨域配置 #action.destructive_requires_name: true http.cors.enabled: true http.cors.allow-origin: "*"
-
node3
#节点 3 的配置信息: #集群名称,节点之间要保持一致 cluster.name: my-elasticsearch #节点名称,集群内要唯一 node.name: es-1003 node.master: true node.data: true #ip 地址 network.host: localhost #http 端口 http.port: 1003 #tcp 监听端口 transport.tcp.port: 9303 #ES查找节点模块(第一台机器不需要加) discovery.seed_hosts: ["localhost:9301","localhost:9302"] discovery.zen.fd.ping_timeout: 1m discovery.zen.fd.ping_retries: 5 #集群内的可以被选为主节点的节点列表 #cluster.initial_master_nodes: ["node-1", "node-2","node-3"] #跨域配置 #action.destructive_requires_name: true http.cors.enabled: true http.cors.allow-origin: "*"