对应考纲里的
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的支持)
环境准备
sudo yum install -y wget tar shasum
官网步骤
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/
sudo echo vm.max_map_count=655360 >> /etc/sysctl.conf
sudo vi /etc/security/limits.conf
./bin/elasticsearch
,如果要求后台运行则需要加参数-d
写作./bin/elasticsearch -d
-Des.insecure.allow.root=true
来强行使用root启动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"
}
官网步骤有俩:
直接yum install
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
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节点是否正常启动
systemctl start elasticsearch.service
,如果成功了会打印相应的start状态的日志出来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包 |
---|---|---|
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
做服务停止
虽然我个人认为主流方式(考试会考)的是Linux环境的安装,但是作为越来越火的docker技术还是想提一嘴。
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.0
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.0
官网安装方式目录
tar包安装
rpm包安装
docker安装