anolis OS & alibaba OS 安装ElasticSearch 8.2

383 阅读4分钟

1. 安装docker-ce

系统版本:基于anolis os 8 的alios 3.4

  • (建议直接买个按量计费的云主机几毛钱一小时,计划学习一周 预算几十块,学完就可以停了)

移除残留docker相关残留

sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

安装yum-utils 与配置yum中docker-ce的源

sudo yum install -y yum-utils $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

安装最新稳定版docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

或者安装指定版本

yum list docker-ce --showduplicates | sort -r

image.png

sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin

2.启动docker

systemctl start docker

image.png 出现操作提示就说明安装成功了!

3.接下来安装es

tips:

关于版本的实际案例,很多年前用的3.+ 集群部署,查询效率随着时间推移开始变得无法容忍且脆弱,双副本的情况下用了20+台4C8G的机器,最重要的是新增数据量与新增机器数不能同比增长。后来将ES升级到了7.+ 而且重构了原有的部分不合理结构,且让专人提供数据接口保证查询效率,最终将机器数从20+降到了5台。

开始记录学习ES的过程,es-8.2.0

docker run --net=host --name es -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xmx512m -Xmx512m" \ -e discovery.type=single-node \ -v /data/docker/elasticsearch/data:/usr/share/elasticsearch/data \ -v /data/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -v /data/docker/elasticsearch/config/elasticsearch.yml:\ /usr/share/elasticsearch/config/elasticsearch.yml \ -d elasticsearch:8.2.0

我遇到的第一个坑, 不指定版本直接在后面选择:latest 那么实际拉下来的是5.几版本

于是我直接指定了8.2.0

查看一下是否启动成功

docker logs es -f --tail 200

image.png

错误信息:

ERROR: [2] bootstrap checks failed. You must address the points described in the following [2] lines before starting Elasticsearch.

bootstrap check failure [1] of [2]: initial heap size [130023424] not equal to maximum heap size [536870912]; this can cause resize pauses

bootstrap check failure [2] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

ERROR: Elasticsearch did not exit normally - check the logs at /usr/share/elasticsearch/logs/docker-cluster.log

大概: 1.有俩配置错误 2.初始化堆大小不符合 3.最大虚拟机内存区的配置太低

解决问题之前有个坑就是容器没有启动时你进去改不了配置文件 哈哈哈,我想了个笨办法就是在官网下了个Linux同版本es 然后拷贝配置文件到我ES的那个映射路径下

artifacts.elastic.co/downloads/e…

地址中版本最好与实际安装版本一致,我安装的8.2.0

拷贝下载文件中/etc/elasticsearch下elasticsearch.yml 到配置挂载卷的指定位置就行了

移除之前的容器再次执行上面的启动脚本 发现报错了:


received plaintext http traffic on an https channel, closing connection balbalalala

看前面就知道了 没配置HTTPS,收到了http请求

于是找到宿主机上的配置文件修改那个http相关配置,结果没找到(默认配置估计都直接缺省了)

image.png

于是直接在末尾追加配置

xpack.security.enabled: false

xpack.security.http.ssl.enabled: false

再次启动发现日志启动没有报错了,提示了三个successfully,但是页面输入ip:9200 没反应,于是检查了一下服务器的安全组配置加上9200端口进出,再次访问还是不行,所以再确认一下是否正常启动了

image.png 机器上直接curl是正常的,这种情况就很明显了 大多数中间件或者数据库都会有类似白名单配置或措施,再次去看看那个elasticsearch.yml

get it!

image.png

清楚明白,上面写了默认只允许本地访问和下面的默认监听端口,于是调整一下

将注释放开且改为0.0.0.0 这是允许所有地址访问的意思,因为只是学习所以简单放开一下,但如果是在实际生产环境中使用那么最好指定具体内部服务的IP 和其他端口。

修改后

image.png

保存退出并重启容器

现在已经可以访问了

image.png