ES安装部署操作

前言

説到ES,从开始参加工作的时候就一直在搞,搞了四年之久,还是没有説一次性就能搞定,真的是能力问题呀!
下面简单説一下ES的安装步骤吧,关于ES的详细説明,可以参考其他博文或者官网,或者后续我再有什么心德,在在博客上记录一下吧。

一、从官网上下载ES的压缩包,我目前用到的是7.9.1版本的。

官网网址: https://www.elastic.co/cn/downloads/elasticsearch

常见 亿量级 es搭建方案有哪些 es部署_Elastic

二、具体操作步骤

1.将下载好的tar包,上传到linux相应节点上,解压缩。注意的是,操作ES要用普通用户,如果节点上没有普通用户,需要添加一个普通用户,例如添加用户zgz

sudo  adduser zgz

2.进入es目录下的config目录,修改elasticsearch.yml文件

以下为yml配置文件的简要説明 :

cluster.name: ELASTICSEARCH 
#ES集群名称,同一个集群内的所有节点集群名称必须保持一致  
  
node.name: px01  
#ES集群内的节点名称,同一个集群内的节点名称要具备唯一性  
  
node.master: true  
#允许节点是否可以成为一个master节点,ES是默认集群中的第一台机器成为master,如果这台机器停止就会重新选举  
  
node.data: false  
#允许该节点存储索引数据(默认开启)  
  
path.data: /es/data1,/es/data2  
#ES是搜索引擎,会创建文档,建立索引,此路径是索引的存放目录,如果我们的日志数据较为庞大,那么索引所占用的磁盘空间也是不可小觑的  
#这个路径建议是专门的存储系统,如果不是存储系统,最好也要有冗余能力的磁盘,此目录还要对elasticsearch的运行用户有写入权限  
  
path.logs: /var/logs/elasticsearch  
#elasticsearch专门的日志存储位置,生产环境中建议elasticsearch配置文件与elasticsearch日志分开存储  
  
bootstrap.memory_lock: true  
#在ES运行起来后锁定ES所能使用的堆内存大小,锁定内存大小一般为可用内存的一半左右;锁定内存后就不会使用交换分区  
#如果不打开此项,当系统物理内存空间不足,ES将使用交换分区,ES如果使用交换分区,那么ES的性能将会变得很差  
  
network.host: 192.168.55.23  
#es绑定地址,支持IPv4及IPv6,默认绑定127.0.0.1;es的HTTP端口和集群通信端口就会监听在此地址上  
  
network.tcp.no_delay: true  
#是否启用tcp无延迟,true为启用tcp不延迟,默认为false启用tcp延迟  
  
network.tcp.keep_alive: true  
#是否启用TCP保持活动状态,默认为true  
  
network.tcp.reuse_address: true  
#是否应该重复使用地址。默认true,在Windows机器上默认为false  
  
network.tcp.send_buffer_size: 128mb  
#tcp发送缓冲区大小,默认不设置  
  
network.tcp.receive_buffer_size: 128mb  
#tcp接收缓冲区大小,默认不设置  
  
transport.tcp.port: 9300  
#设置集群节点通信的TCP端口,默认就是9300  
  
transport.tcp.compress: true  
#设置是否压缩TCP传输时的数据,默认为false  
  
http.max_content_length: 200mb  
#设置http请求内容的最大容量,默认是100mb  
  
http.cors.enabled: true  
#是否开启跨域访问  
  
http.cors.allow-origin: "*"  
#开启跨域访问后的地址限制,*表示无限制  
  
http.port: 9200  
#定义ES对外调用的http端口,默认是9200  
  
discovery.seed_hosts: ["192.168.55.23:9300", "192.168.55.24:9300", "192.168.55.25:9300"]  
#Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点,由discovery.zen.ping.unicast.hosts:参数改变而来;discovery.zen.ping.unicast.hosts参数在7.x版本后废弃
  
cluster.initial_master_nodes: ["192.168.55.23:9300", "192.168.55.24:9300", "192.168.55.25:9300"]  
#Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点  
  
cluster.fault_detection.leader_check.interval: 15s  
#Elasticsearch7新增参数,设置每个节点在选中的主节点的检查之间等待的时间。默认为1秒  
  
discovery.cluster_formation_warning_timeout: 30s  
#Elasticsearch7新增参数,启动后30秒内,如果集群未形成,那么将会记录一条警告信息,警告信息未master not fount开始,默认为10秒  
  
cluster.join.timeout: 30s  
#Elasticsearch7新增参数,节点发送请求加入集群后,在认为请求失败后,再次发送请求的等待时间,默认为60秒  
  
cluster.publish.timeout: 90s  
#Elasticsearch7新增参数,设置主节点等待每个集群状态完全更新后发布到所有节点的时间,默认为30秒  
  
cluster.routing.allocation.cluster_concurrent_rebalance: 32  
#集群内同时启动的数据任务个数,默认是2个  
  
cluster.routing.allocation.node_concurrent_recoveries: 32  
#添加或删除节点及负载均衡时并发恢复的线程个数,默认4个  
  
cluster.routing.allocation.node_initial_primaries_recoveries: 32  
#初始化数据恢复时,并发恢复线程的个数,默认4个

注意的是,在yml配置文件中冒号后一定要加一个空格。我有的参数在部署的时候没有用到,看个人公司业务需要。

3.用root用户,修改 /etc/security/limits.conf文件

追加以下内容 :

* soft nofile 65536 
    * hard nofile 65536

相关説明:
* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
另外: 65536的值不固定,具体的值可以按照错误提示中方括号"[ ]"中,提示的值修改

4.用root用户修改/etc/sysctl.conf文件

追加以下内容 :

vm.max_map_count=655360
       保存后,执行:
       sysctl -p

5.切换到zgz用户,启动es

进到bin目录下,后台启动./elasticsearch -d -p pid
      查看es进程,看是否启动成功

6.查看各个节点防火墙状态和时间

每个节点的防火墙状态: 
systemctl status firewalld 
如果防火墙是开启状态则需要关闭: 
service status stop

查看每个节点的时间:
用  date 命令查看
若时间不一致则修改时间

7.操作其余节点

24节点的操作步骤,也是需要创建普通用户,修改两个conf文件。
在23节点上把解压好的es文件分别发送到其他节点24,25上,修改24节点上的elasticsearch.yml文件:

cluster.name: ELASTICSEARCH 
node.name: px02 
#ES集群内的节点名称,同一个集群内的节点名称要具备唯一性  
node.master: true    
node.data: false    
path.data: /es/data1,/es/data2  
path.logs: /var/logs/elasticsearch  
bootstrap.memory_lock: true  
network.host: 192.168.55.24  
network.tcp.no_delay: true  
network.tcp.keep_alive: true  
network.tcp.reuse_address: true  
network.tcp.send_buffer_size: 128mb  
network.tcp.receive_buffer_size: 128mb  
transport.tcp.port: 9300    
transport.tcp.compress: true  
http.max_content_length: 200mb  
http.cors.enabled: true  
http.cors.allow-origin: "*"  
http.port: 9200  
discovery.seed_hosts: ["192.168.55.23:9300", "192.168.55.24:9300", "192.168.55.25:9300"]  
cluster.initial_master_nodes: ["192.168.55.23:9300", "192.168.55.24:9300", "192.168.55.25:9300"]  
cluster.fault_detection.leader_check.interval: 15s    
discovery.cluster_formation_warning_timeout: 30s  
cluster.join.timeout: 30s  
cluster.publish.timeout: 90s  
cluster.routing.allocation.cluster_concurrent_rebalance: 32  
cluster.routing.allocation.node_concurrent_recoveries: 32  
cluster.routing.allocation.node_initial_primaries_recoveries: 32

25节点的操作步骤,也是需要创建普通用户,修改两个conf文件。
修改25节点上的elasticsearch.yml文件:

cluster.name: ELASTICSEARCH 
node.name: px03 
#ES集群内的节点名称,同一个集群内的节点名称要具备唯一性  
node.master: true    
node.data: false    
path.data: /es/data1,/es/data2  
path.logs: /var/logs/elasticsearch  
bootstrap.memory_lock: true  
network.host: 192.168.55.25  
network.tcp.no_delay: true  
network.tcp.keep_alive: true  
network.tcp.reuse_address: true  
network.tcp.send_buffer_size: 128mb  
network.tcp.receive_buffer_size: 128mb  
transport.tcp.port: 9300    
transport.tcp.compress: true  
http.max_content_length: 200mb  
http.cors.enabled: true  
http.cors.allow-origin: "*"  
http.port: 9200  
discovery.seed_hosts: ["192.168.55.23:9300", "192.168.55.24:9300", "192.168.55.25:9300"]  
cluster.initial_master_nodes: ["192.168.55.23:9300", "192.168.55.24:9300", "192.168.55.25:9300"]  
cluster.fault_detection.leader_check.interval: 15s    
discovery.cluster_formation_warning_timeout: 30s  
cluster.join.timeout: 30s  
cluster.publish.timeout: 90s  
cluster.routing.allocation.cluster_concurrent_rebalance: 32  
cluster.routing.allocation.node_concurrent_recoveries: 32  
cluster.routing.allocation.node_initial_primaries_recoveries: 32

分别启动24 25节点上的es

进到bin目录下,后台启动./elasticsearch -d -p pid
      查看es进程,看是否启动成功

8.查看集群状态

执行命令:

#查看效果
       curl -XGET http://192.168.55.24:9200
       #查看集群健康状态
       curl -XGET 'http://192.168.55.24:9200/_cluster/health?pretty'
      #查看主节点
      curl -XGET 'http://192.168.55.24:9200/_cat/nodes?v'

9.踩坑的地方

下面是我耗时了好长时间才解决的问题:

#在查看集群健康状态的时候,我明明部署了三台,但是在下面的显示结果中只有一台
       curl -XGET 'http://192.168.55.24:9200/_cluster/health?pretty'
       {
         "cluster_name" : "ELASTICSEARCH",
         "status" : "green",
         "timed_out" : false,
         "number_of_nodes" :1 ,
         "number_of_data_nodes" :1,
         .....
         .....
       }
      #具体原因是我之前启动过24 25 节点,导致在es中的/data/目录下生成了一个node的目录,所以导致了只有一个nodes,因此要把node目录删掉,然后重新启动ES集群,在去查看集群状态是,就显示正常了。
      curl -XGET 'http://192.168.55.24:9200/_cluster/health?pretty'
       {
         "cluster_name" : "ELASTICSEARCH",
         "status" : "green",
         "timed_out" : false,
         "number_of_nodes" : 3 ,
         "number_of_data_nodes" :  3,
         .....
         .....
       }

至此ES集群部署成功。

总结

终于搞了这么长时间的ES这次终于搞定了,后续安装还会或多或少的遇到其他问题,在做补充记录吧。