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
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin
2.启动docker
systemctl start docker
出现操作提示就说明安装成功了!
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
错误信息:
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相关配置,结果没找到(默认配置估计都直接缺省了)
于是直接在末尾追加配置
xpack.security.enabled: false
xpack.security.http.ssl.enabled: false
再次启动发现日志启动没有报错了,提示了三个successfully,但是页面输入ip:9200 没反应,于是检查了一下服务器的安全组配置加上9200端口进出,再次访问还是不行,所以再确认一下是否正常启动了
机器上直接curl是正常的,这种情况就很明显了 大多数中间件或者数据库都会有类似白名单配置或措施,再次去看看那个elasticsearch.yml
get it!
清楚明白,上面写了默认只允许本地访问和下面的默认监听端口,于是调整一下
将注释放开且改为0.0.0.0 这是允许所有地址访问的意思,因为只是学习所以简单放开一下,但如果是在实际生产环境中使用那么最好指定具体内部服务的IP 和其他端口。
修改后
保存退出并重启容器
现在已经可以访问了