Elastic Certified Engineer复习记录-集群搭建

集群搭建和启动

对应考纲里的
Installation and Configuration
Deploy and start an Elasticsearch cluster that satisfies a given set of requirements

一般有几种方式来deploy and start 一个 ES集群,对于考试来说应该是Linux里的两种RPM包和tar包安装,毕竟包括windows、Mac在内的系统并不是搭建搜索服务器的常用环境,而docker并不是elastic的技术栈(虽然他们也有从docker image到docker-compose的支持)

Linux环境

环境准备

sudo yum install -y wget tar shasum

tar包安装方式

官网步骤

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.6.0-linux-x86_64.tar.gz.sha512 
tar -xzf elasticsearch-7.6.0-linux-x86_64.tar.gz
cd elasticsearch-7.6.0/ 
  1. 从官网地址下载对应的tar包以及它的sha512的验证文件
    1. 或者也可以直接下载这个包,里面只有纯开源功能的部分,不过考试的话后面可能会考到权限设置之类的只在xpack里面的功能,不大可能需要这个包https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.6.0-linux-x86_64.tar.gz
    2. tar包的格式是elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz,或者elasticsearch-oss-${ES_VERSION}-linux-x86_64.tar.gz
  2. 通过shasum来验证这个jar包的合法性
  3. 解压缩这个tar包并进入项目文件夹,这个文件夹下面会用$ES_HOME表示
  4. 记得给整个文件夹赋予相应的权限,特别是$ES_HOME/data和$ES_HOME/log,或者相应的配置的data和log目录
  5. 运行命令 sudo echo vm.max_map_count=655360 >> /etc/sysctl.conf
  6. 然后把修改配置文件 sudo vi /etc/security/limits.conf
    1. 把两个nofile的值改成65536
      1. * soft nofile 65535
      2. * hard nofile 65535
    2. 添加 memlock unlimited的配置
      1. * hard memlock unlimited
      2. * soft memlock unlimited
  7. 执行启动命令./bin/elasticsearch,如果要求后台运行则需要加参数-d写作./bin/elasticsearch -d
    1. ES默认不可以用root账户,某些旧的版本可以通过修改jvm参数或者直接在启动参数里添加-Des.insecure.allow.root=true来强行使用root启动
    2. 但是在比较新的版本里这个方式已经失效了,只能用非root用户启动
  8. 如果是前台运行,es节点的日志会直接输出在屏幕上,同时写在$ES_HOME/logs/${clusterName}.log
  9. 检查一下集群状态,是否正常启动
    1. curl ${ip}:9200,看是否会有显示集群信息的json返回,如果有就说明启动正常了
      {
        "name" : "node1", // 当前访问节点名字
        "cluster_name" : "docker-cluster", // 集群名称
        "cluster_uuid" : "wZFXKEITRKWVg36vUHWgyQ", // 集群id(自动生成)
        "version" : {
          "number" : "7.6.0", // 节点ES版本
          "build_flavor" : "oss", // 存储方式
          "build_type" : "docker", // 构建方式(我用的docker,官网的例子用的tar包)
          "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3", // 构建hash
          "build_date" : "2020-02-06T00:09:00.449973Z", // 构建时间
          "build_snapshot" : false, // 是否snapshot
          "lucene_version" : "8.4.0", // lucene版本
          "minimum_wire_compatibility_version" : "6.8.0", // 最低写入版本
          "minimum_index_compatibility_version" : "6.0.0-beta1" // 最低索引版本,这俩我也不太清楚啥意思,目测是最小支持的ES节点版本
        },
        "tagline" : "You Know, for Search"
      }
      

RPM包安装

官网步骤有俩:
直接yum install

  1. sudo vim /etc/yum.repos.d/elasticsearch.repo把下面这些玩意填在里面,保存并退出
    [elasticsearch]
    name=Elasticsearch repository for 7.x packages
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=0
    autorefresh=1
    type=rpm-md
    
  2. sudo yum install --enablerepo=elasticsearch elasticsearch

手动下载rpm包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-x86_64.rpm.sha512
shasum -a 512 -c elasticsearch-7.6.0-x86_64.rpm.sha512 
sudo rpm --install elasticsearch-7.6.0-x86_64.rpm

#当然,rpm包也有开源版的,https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.6.0-x86_64.rpm
命名格式和tar包类似,elasticsearch-${ES_VERSION}-linux-x86_64.rpm

然后就是正常的运行systemctl启动命令了,和通过systemctl安装启动其他服务一样

sudo /bin/systemctl daemon-reload // 重新家在systemctl配置
sudo systemctl enable elasticsearch.service // ES服务保活开启
sudo systemctl start elasticsearch.service // 开启ES服务
sudo systemctl stop elasticsearch.service // 关闭ES服务

通过RPM包安装和tar包安装之后配置文件包括ES的一些功能性文件(夹)的位置会有所不同,具体见下一节。
运行完systemctl start elasticsearch.service之后有两种方式看ES节点是否正常启动

  1. 运行systemctl start elasticsearch.service,如果成功了会打印相应的start状态的日志出来
  2. 和tar包启动一样,运行curl ${ip}:9200看是否会出现集群启动成功的信息

在系统配置文件里(/etc/sysconfig/elasticsearch),RPM包安装还支持一些其他的环境配置

key
JAVA_HOME 自行指定的Javahome,替代安装完之后默认的路径
MAX_OPEN_FILES 最大可打开文件数?默认65535
MAX_LOCKED_MEMORY 最大可锁定内存数,建议设成unlimited用来配合配置文件里的bootstrap.memory_lock
MAX_MAP_COUNT 最大内存map空间,不知道干嘛用的,官网提供的文档也打不开。大概说的是如果用mmapfs的方式存储数据,那么记得在systemctl启动ES之前把它设大点,默认262144
ES_PATH_CONF 自定义的配置文件路径,不设就在/etc/elasticsearch目录里面
ES_JAVA_OPTS 其他的Java启动参数。ES是个Java项目,所以这里可以添加一些自定的Java启动参数。我能想到的就是一些Java agent路径之类的东西
RESTART_ON_UPGRADE 是否在手动安装升级之后自动重启ES实例,默认false

tar包安装和RPM包安装的区别

区别 tar包 rpm包
home tar包解压缩的地方$ES_HOME /usr/share/elasticsearch
bin $ES_HOME/bin /usr/share/elasticsearch/bin
conf $ES_HOME/conf /etc/elasticsearch,也可以配置为环境变量 ES_PATH_CONF
data $ES_HOME/data /var/lib/elasticsearch
logs $ES_HOME/logs /var/log/elasticsearch
jdk /usr/share/elasticsearch/jdk
plugins $ES_HOME/plugins /usr/share/elasticsearch/plugins

简单讲用tar包安装的时候,tar包解压缩的folder就是$ES_HOME,而用rpm包安装的时候,ES的各个文件夹会到处散,不过主要会在/usr/share/elasticsearch里面

安装完成

按照官网的说法,安装完成基本的安装之后,理论上应该是对ES开启守护进程或者做保活。

通过tar包安装的话,运行./bin/elasticsearch -d -p pid让ES节点运行在指定的pid上,后面可以通过运行pkill -F pid来停用ES节点,不过我想大家应该更多的会是直接kill -9吧。😛

给个参考命令,当然这样停止ES节点不够优雅。ps -ef | grep elastic | grep -v grep | awk '{ print $2 }'

对于RPM包安装的就不用那么麻烦
sudo systemctl enable elasticsearch.service做保活和自启动
sudo systemctl stop elasticsearch.service做服务停止

docker 方式

虽然我个人认为主流方式(考试会考)的是Linux环境的安装,但是作为越来越火的docker技术还是想提一嘴。

  1. 下docker镜像docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.0
  2. 直接单节点启动docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    1. 这里可以看到除了ES默认端口暴露之外,还有个"discovery.type=single-node",这就是单节点启动的时候不去尝试连接其他节点的意思
  3. 还有直接docker-compose方式启动多节点的,配置文件太长了就不贴了,有兴趣的同学可以自己下下来玩玩

参考资料

官网安装方式目录
tar包安装
rpm包安装
docker安装

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章