推荐阅读:
声明%须知
本文针对Elastic认证工程师
参加Elastic认证考试
,在备考之前必须要准备的备考环境介绍,关于Elastic认证工程师
和Elastic认证考试
的相关介绍,请移步:认知篇:Elastic认证工程师,完全解读
备考环境必知
要尽可能无限还原真是考试环境
环境并非考点,切勿在环境问题上浪费过多时间
1 备考服务器方案选择
方案 | 优点 | 缺点 | 适合人群 | 综合来说,如果不是电脑配置很低又找不来配置高一些的电脑,囊中又比较羞涩。非常不推荐第一种方案,这是最重要的,原则上是考试啥样,咱们备考就啥样,最不容易才能,一旦踩坑就是400美刀的教训,其他三种都可以,视自己情况选择 |
---|---|---|---|---|
本地多节点部署 | 1、资源占用率最少,对电脑配置要求最低 | 1、和真实考试环境偏差太大,参加真正考试的时候可能因为环境问题踩坑 2、无法跨地区访问 3、环境需要自己搭建 | 对ES和Linux环境本身就很精通,自己电脑配置 不高并且资金不太充足的同学 | |
虚拟机方案 | 1、可以很大程度还原考试环境 2、除对电脑硬件有要求外,成本较低 | 1、需要网络架构、虚拟机搭建有一定基础 2、对电脑内存大小要求比较高 3、环境需要自己搭建 4、不支持跨地区访问 5、如果是桥接方案可能会有ip冲突问题,并且相同的配置方案在公司或家里可能因为网关不同而导致服务不可用 | 有计算机网络基础、 电脑配置比较高、 不经常变更使用地点的同学 | |
ECS云服务器 | 1、可随时随地访问,不被使用地点束缚 | 1、价格较贵 2、环境需要自己搭建 3、备考的电脑需要联网环境 | 希望随时随地可以访问 且资金比较充裕的 | |
NAS云服务器 | 1、可随时随地访问,不受使用地点约束 2、环境是预安装好的 3、价格较为便宜 | 1、服务器为共享隔离服务器,仅适用于备战考试,不适合部署其他服务 2、备考的电脑需要联网环境 | 搞不定环境问题 不想在环境上耽误时间 希望随时随地可以访问服务的 |
2 备考环境集群架构
自建虚拟机集群需遵循以下网络拓扑。课程讲解的时候也会按照下面拓扑进行教学。集群至少要有两个,推荐值为三个。节点数至少为四个。推荐值为四个。DS Cluster保证至少一个节点。推荐值一个节点。CFG Cluster建议两个集群,推荐值为两个集群,其中要至少保证一个集群有两个节点。
每个节点的IP地址根据自己的网络环境。动态修改每个人的一直都是不一样的。
推荐的集群配置为,DSL_Cluster:1个节点。CFG_Cluster_1:2个节点,CFG_Cluster_2:1个节点。这是在保证符合考试要求和课程讲解的前提下的最小节点配置,如果节点过多,配置起来较为麻烦。没有太大意义,只会耽误自己时间。写点数少于这个配置,考题无法完成。
3 虚拟机方案
3.1 不同主机配置的集群拓扑选择
原则上说,备考环境越接近真实环境越好,每个节点建议2G内存,如果内存不够可以调成1G,但是默认1G内存启动会报错,需要修改jvm.options中默认要求的jvm最小值。如果内存足够不建议在环境上花太多时间,因为这并非考试内容,cfg-cluster必须至少有一个多节点集群,因为考点中包含关于集群发现的内容。就算你内存足够,也不建议配置过多节点,因为每次启动你的宿主机你都需要启动每个节点的服务,会浪费你的时间。
3.2 使用自建虚拟机
3.2.1 操作系统要求:
- 版本:CentOS 7
- RAM:建议2G
- 下载:私信我
3.2.2 Java环境:
- 版本:1.8
- 下载:
- 程序员大礼包:https://www.programmer-box.com/?ref=jdk_1.8
- Java I tell you:https://www.injdk.cn/
- Arm JDK for M1:https://www.azul.com/downloads/?version=java-8-lts&os=macos&package=jdk
- 安装:略(自行百度)
- 检查:java -version
3.2.3 Elasticsearch环境:
- 版本:7.13.x
- 下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
- 安装:理论课程
- 检查:访问
server_ip:9200
(视具体配置的ip和端口)
3.2.4 vim编辑器(考试环境中已安装,根据个人习惯选择是否安装)
安装:
yum install vim
3.2.5 网络配置
编辑网卡:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改配置文件:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none" #关闭DHCP
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="6dcded77-ba54-4f70-a16c-805333555ba86"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.3.81" #修改每个节点的ip地址
PREFIX="24"
GATEWAY="192.168.3.1"
DNS1="114.114.114.114"
DOMAIN="8.8.8.8"
IPV6_PRIVACY="no"
保存并重启网络:
service network restart
如果失败,执行
yum install net-tools
3.2.6 新手常见环境问题解决方案
1 禁用Swapping:
bootstrap.memory_lock: true
2 文件描述
问题描述:引导检查报错:未开启内存锁
问题解释:Elasticsearch 使用了很多文件描述符或文件句柄。耗尽文件描述符可能是灾难性的,并且很可能会导致数据丢失。确保将运行 Elasticsearch 的用户的打开文件描述符数量限制增加到 65,536 或更高。
解决办法:
vim /etc/security/limits.conf
# 添加以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
* hard memlock unlimited
* soft memlock unlimited
vim /etc/systemd/system.conf ,分别修改以下内容。
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
ulimit -n 65535(需使用root账号)
3 虚拟内存
问题描述:引导检查报错 max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
问题解释:5.0版本以后ES使用mmapfs作为默认的文件系统存储类型。可以通过配置index.store.type来设置ES默认的文件系统存储类型。ES mmapfs默认使用一个目录来存储它的索引。操作系统对 mmap 计数的默认限制可能太低,这可能会导致内存不足异常.
解决办法:
修改文件系统
Niofs(非阻塞文件系统) mmapfs(内存映射文件系统)
配置:index.store.type: niofs
使用root运行以下命令:
sysctl -w vm.max_map_count=262144
永久生效:
vi /etc/sysctl.conf
vm.max_map_count=262144
grep vm.max_map_count /etc/sysctl.conf
4 线程数
问题描述:max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
问题解释:ES 使用多个线程池来进行不同类型的操作。重要的是它能够在需要时创建新线程。确保 Elasticsearch 用户可以创建的线程数至少为 4096。
解决办法
在启动es服务之前使用root账户执行
ulimit -u 4096
或
vim /etc/security/limits.conf
设置nproc为4096
或
vim /etc/security/limits.d/90-nproc.conf
修改如下内容(注意星号):
* soft nproc 1024 => * soft nproc 4096
5 IPv4 forwarding
问题描述:WARNING: IPv4 forwarding is disabled. Networking will not work.
问题解释:翻译即可
解决办法:
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
restart network && systemctl restart docker
sysctl net.ipv4.ip_forward
6 内存不足
问题描述:error=‘Cannot allocate memory’
问题解释:ES 5.x+堆内存大小默认配置为2G ES 7.x+默认4G
解决办法:
//JVM一般为物理内存一半
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"
3.3 使用共享虚拟机
3.3.1 概述
考试所需Linux集群并非考点。但是我们备考这是必要条件,遵循最小化学习路线。和考试无关的内容我们能跳过则跳过。不能跳过则以最小代价来实现。如果你选择了虚拟机方案,建议直接下载老师共享的虚拟机文件,共享的虚拟机文件里已经集成好了所有环境以及配置等等,下载好导入即可使用,需要集群环境,只需克隆多个节点,改一下IP地址即可。IP地址可根据目前你的网络类型是桥接还是nat动态决策。保证多个节点在同一个内网环境下即可。
3.3.2 共享文件下载地址
虚机文件(已安装Java
环境和备考所需 ES
服务,路径:/usr/local ),通过 VMWare导入即可使用,无需自行花时间配置环境
开袋即食,多节点克隆即可
获取方式
,关注左侧公众号,回复考试环境
或加入Elastic开源社区
星球,私信星主获取。
3.4 创建elastic账号:
创建账号:useradd elastic
设置es账号的密码:passwd elastic
为账号赋予目录权限:chown -R elastic:elastic {{espath}}
4 云服务器方案
4.1 NAS
所有配置均已预先搭建完毕,包括 Java、ES 的服务以及配置文件等,无需任何修改,开箱即用
获取方式
,关注左侧公众号,回复考试环境
或加入Elastic开源社区
星球,私信星主获取。
4.2 ECS
需在阿里云或腾讯云等云服务提供商自行购买,需要自建ES备考集群环境,非内网环境需要通过外网配置集群。
5 主机环境
5.1 Kibana
- 版本:7.13.x
- 下载:
- 安装:课程
- 修改配置项:
- server.host: “server_ip:port”
- server.port: 5601
5.2 远程终端
- Windows:xshell
- MacOS:
- ZenTermLite
- Termius
- all:electerm
这个软件目前是一款开源的虚拟机连接工具,跟大名鼎鼎的Xshell一样好用,软件设计上更加简洁,大气,连接配置也非常方便;只需要配置3个信息(IP地址,用户名和密码)即可连接;软件还提供了命令批量导入功能,比如我们在安装讲集群的时候同时打开三个界面,我们只需要在批量输入框中输入想要的命令,就可以实现在多个界面同时运行,大大减少了平时工作过程中的重复操作,大大提升了虚拟机的体验和工作的效率,是虚拟机运维的一款神奇;目前此软件用的比较少,但是一旦用少你会爱上它;
6 浏览器
Chrome浏览器(必须是Chrome,考试的时候必须使用谷歌浏览器,建议备考的时候和考试环境保持一致。)