【ElasticSearch】本地安装部署及集群搭建

一、ElasticSearch安装部署

1、下载软件包

官网下载页.png

2、解压软件包

  • 解压命令
tar -zxvf ./elasticsearch-7.8.0-linux-x86_64.tar.gz

image.png

3、创建启动用户并启动应用

elasticsearch为了安全,不能用root用户运行应用实例,需要为实例创建用户。如果用root用户运行,会出现以下异常。

java.lang.RuntimeException: can not run elasticsearch as root

image.png

  • 创建用户命令
adduser elasticsearch
  • 修改用户密码
passwd elasticsearch
  • 将es解压目录的所有者授予此用户
chown -R elasticsearch elasticsearch-7.8.0
  • 切换至elasticsearch用户
su elasticsearch
  • 进入es安装目录,运行启动脚本
/usr/local/elasticsearch-7.8.0/bin/elasticsearch -d

4、常见错误

完成上述步骤后,在本地虚拟机中启动es单实例,直接运行,通常会抛出如下错误。
常见错误.png

  • 用户被限制打开的文件描述符数量过低
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

解决方法:编辑 /etc/security/limits.conf,追加以下内容,注意此文件修改后需要重新登录用户,才会生效

elasticsearch hard nofile 65536
elasticsearch soft nofile 65536

执行命令查看用户限制

ulimit -a

image.png

  • 用户别限制打开的线程数过低
max number of threads [3796] for user [elasticsearch] is too low, increase to at least [4096]

解决方法:编辑 /etc/security/limits.conf,追加以下内容,注意此文件修改后需要重新登录用户,才会生效

elasticsearch soft nproc 4096
elasticsearch hard nproc 4096

执行命令查看用户限制

ulimit -a

image.png

  • 虚拟内存区域被限制过低
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方案: /etc/sysctl.conf文件最后添加一行

echo "vm.max_map_count=262144" >> /etc/sysctl.conf  
#使修改立即生效
sysctl -p 

查看修改结果:

sysctl -a | grep vm.max_map_count

image.png

  • 提示默认发现配置不适合生产环境使用
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

解决方法:修改elasticsearch.yml配置

#打开节点名称的配置
node.name: node-1

#这里的node-1为node-name配置的值
cluster.initial_master_nodes: ["node-1"]

#外部ip访问elasticsearch
network.host: 0.0.0.0

5、开放端口

  • 查看开放的端口号
firewall-cmd --list-all

  • 设置开放端口号
firewall-cmd --add-port=9200/tcp --permanent
  • 重启防火墙
firewall-cmd --reload

6、验证是否部署成功

  • 访问部署服务器es实例,默认端口为9200

image.png

二、ElasticSearch简单集群搭建

1、本地环境准备

系统版本 机器IP 部署应用 应用版本 节点名称
CentOS 7.6 192.168.15.151 ElasticSearch 7.8.0 node-1
CentOS 7.6 192.168.15.155 ElasticSearch 7.8.0 node-2
CentOS 7.6 192.168.15.156 ElasticSearch 7.8.0 node-3

【ElasticSearch】本地安装部署及集群搭建_第1张图片

说明:在本地PC机上利用VMware workstation虚拟出如上表所示的几台机器,搭建一个主节点及两个从节点的简单集群。

2、修改各个节点的配置文件

【ElasticSearch】本地安装部署及集群搭建_第2张图片

#进入es配置文件所在目录
cd /usr/local/elasticsearch-7.8.0/config

#编辑配置文件
vim elasticsearch.yml
  • node-1节点配置文件(elasticsearch.yml)修改
#集群名称
cluster.name: test-app

#节点名称,集群中保持唯一
node.name: node-1

#绑定远程地址,为了安全通常是指定具体的地址,这里仅仅是测试,放开允许所有远程来源访问
network.host: 0.0.0.0

#开放http接口,默认就是9200
http.port: 9200

#集群节点之间(集群协商、指令传输等)通信的端口
transport.tcp.port: 9300

#允许前端跨域访问
http.cors.enabled: true

#设置允许的跨域的来源,*表示允许所有跨域来源
http.cors.allow-origin: "*"

#设置发现集群节点主机列表
discovery.seed_hosts: ["192.168.15.151:9300","192.168.15.155:9300","192.168.15.156:9300"]

#初始化集群的master节点的候选列表,列表中的节点都可能竞选成为master节点
cluster.initial_master_nodes: ["192.168.15.151:9300","192.168.15.155:9300","192.168.15.156:9300"]
  • node-2节点配置文件(elasticsearch.yml)修改
#集群名称
cluster.name: test-app

#节点名称,集群中保持唯一
node.name: node-2

#绑定远程地址,为了安全通常是指定具体的地址,这里仅仅是测试,放开允许所有远程来源访问
network.host: 0.0.0.0

#开放http接口,默认就是9200
http.port: 9200

#集群节点之间(集群协商、指令传输等)通信的端口
transport.tcp.port: 9300

#允许前端跨域访问
http.cors.enabled: true

#设置允许的跨域的来源,*表示允许所有跨域来源
http.cors.allow-origin: "*"

#设置发现集群节点主机列表
discovery.seed_hosts: ["192.168.15.151:9300","192.168.15.155:9300","192.168.15.156:9300"]

#初始化集群的master节点的候选列表,列表中的节点都可能竞选成为master节点
cluster.initial_master_nodes: ["192.168.15.151:9300","192.168.15.155:9300","192.168.15.156:9300"]
  • node-3节点配置文件(elasticsearch.yml)修改
#集群名称
cluster.name: test-app

#节点名称,集群中保持唯一
node.name: node-3

#绑定远程地址,为了安全通常是指定具体的地址,这里仅仅是测试,放开允许所有远程来源访问
network.host: 0.0.0.0

#开放http接口,默认就是9200
http.port: 9200

#集群节点之间(集群协商、指令传输等)通信的端口
transport.tcp.port: 9300

#允许前端跨域访问
http.cors.enabled: true

#设置允许的跨域的来源,*表示允许所有跨域来源
http.cors.allow-origin: "*"

#设置发现集群节点主机列表
discovery.seed_hosts: ["192.168.15.151:9300","192.168.15.155:9300","192.168.15.156:9300"]

#初始化集群的master节点的候选列表,列表中的节点都可能竞选成为master节点
cluster.initial_master_nodes: ["node-1","node-2","node-3"]

3、启动各个节点服务

注意,在启动各个服务之前,需要保证防火墙开放了以上配置的9200、9300端口,否则集群之间将无法通信,集群构建失败。

#执行es启动命令,分别启动三台服务器下的es服务
/usr/local/elasticsearch-7.8.0/bin/elasticsearch -d
  • 节点(node-1)的日志

image.png

  • 节点(node-2)的日志

【ElasticSearch】本地安装部署及集群搭建_第3张图片

  • 节点(node-3)的日志

【ElasticSearch】本地安装部署及集群搭建_第4张图片

  • 访问节点http端点,查看集群状态

image.png

【ElasticSearch】本地安装部署及集群搭建_第5张图片

【ElasticSearch】本地安装部署及集群搭建_第6张图片

【ElasticSearch】本地安装部署及集群搭建_第7张图片

image.png

说明:从以上日志可以看出,集群搭建成功,node-1、node-2、node-3组成了集群的三个节点,node-1、node-3为slaver节点,node-2为master节点。

你可能感兴趣的:(elasticsearch,搜索,大数据,centos7,linux)