经过调研,决定使用 Docker 来快速部署 Elasticsearch。
1.安装 Docker 和 Docker-Compose
笔者服务器是 CentOS 7 x64,参考了Get Docker CE for CentOS和Install Docker Compose安装。
安装 Docker
# Install Docker CE (using the repository)
## SET UP THE REPOSITORY
### 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
### 设置 stable repository(国内机器建议使用国内源,比如阿里云)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
### 安装 docker-ce
yum install docker-ce docker-ce-cli containerd.io
### 设置开机启动,并启动 Docker
systemctl enable docker
systemctl start docker
# 安装后使用以下命令测试(出现以下提示则安装成功)
## This message shows that your installation appears to be working correctly.
docker run hello-world
安装 Docker Compose
使用 Docker Compose 可以轻松、高效的管理容器,它是一个用于定义和运行多容器 Docker 的应用程序工具。具体使用可以参考Docker:Docker Compose 详解 - 简书。
# 下载最新版本安装脚本
curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加可执行权限
chmod +x /usr/local/bin/docker-compose
# 如果提示 docker-compose 命令不可用,则将其添加到PATH(笔者机器不需要)
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 测试
docker-compose --version
建议更换为docker的国内镜像源:
-
1.24年6月份开始国内镜像大面积无法访问,参考博文:国内Docker不能下载镜像问题
-
2.重启docker(添加配置文件后需要加载然后重启docker):
systemctl daemon-reload
systemctl restart docker
- 3.查看docker使用的配置文件:
# 查看环境配置文件
systemctl show docker | grep EnvironmentFile
# EnvironmentFile=-/etc/sysconfig/docker (ignore_errors=yes)
# 查看服务启动文件位置:
systemctl show --property=FragmentPath docker
# FragmentPath=/usr/lib/systemd/system/docker.service
grep EnvironmentFile /usr/lib/systemd/system/docker.service
# EnvironmentFile=-/etc/sysconfig/docker
2.Docker 安装 Elasticsearch
可参考官方文档Install Elasticsearch with Docker。
2.1 安装
# 拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.2
2.2 运行-开发模式 (快速)
2.2.1 先修改内存配置
直接运行报错了:(内存不够,docker默认分配的jvm内存太大了)
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: UseAVX=2 is not supported on this CPU, setting it to UseAVX=1
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000ca660000, 899284992, 0) failed; error='Not enough space' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 899284992 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid1.log
查找 jvm.options 文件位置
locate "jvm.options"
#/var/lib/docker/overlay2/573b40254a1429fcaeda561a8ff5f33eaace854395de9345226111fbb3ef8788/diff/usr/share/elasticsearch/config/jvm.options
根据各自服务器硬件配置,使用 vi 修改 jvm.options 中内存配置。
然后启动 Docker Elasticsearch:
docker run -d -p 9200:9200 -p 9300:9300 -p 5601:5601 -e "discovery.type=single-node" --name "es" docker.elastic.co/elasticsearch/elasticsearch:6.6.2
2.2.2 修改配置,解决跨域访问问题
# 先进入容器
docker exec -it es /bin/bash
# 进入后
ls config/
cd config/
# 编辑 elasticsearch.yml
vim elasticsearch.yml
# 在 yml 文件末尾加上
http.cors.enabled: true
http.cors.allow-origin: "*"
# 为了安全生产环境应该关闭外网访问
vim elasticsearch.yml
# 修改 network.host 为
network.host: 127.0.0.1
# 另外还可以修改默认的集群名称
重启 docker elasticsearch。
docker restart es
修改默认的 Elasticsearch 集群名称
Elasticsearch 默认的集群名称是elasticsearch
,在生产环境上一定要修改成其他的名称,并且不同的环境和不同的集群要保证不相同,监控集群节点情况,如果有未知节点加入,一定要及时预警。
3.安装 Elasticsearch 常用可视化管理工具
3.1 Elasticsearch-head
elasticsearch-head 相当于是一个桌面,通过elasticsearch-head工具可以来操作elasticsearch。
1.镜像拉取
docker pull mobz/elasticsearch-head:5
2.启动
docker run -d --name="es-admin" -p 9100:9100 mobz/elasticsearch-head:5
可通过 http://xxx:9100/ 来访问。
3.2 ElasticHD
ElasticHD 支持 ES监控、实时搜索,Index template快捷替换修改,索引列表信息查看, SQL converts to DSL工具等,体验下来感觉还是比较强大的!
1.项目地址
https://github.com/360EntSecGroup-Skylar/ElasticHD
2.直接安装方式
# 首先下载zip压缩包
wget https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elasticHD_linux_amd64.zip
# 解压
# 修改权限
chmod -R 777 ElasticHD
# 运行
./ElasticHD -p 127.0.0.1:9800
3.Docker安装方式:
# 镜像拉取
docker pull containerize/elastichd
# 启动
docker run -p 9800:9800 -d --name="es-hd" --link es:demo containerize/elastichd
4.启动访问:http://localhost:9800
4.安装 IK 分词器
elasticsearch分词器,对中文分词并不是太友好。可以下载开源的IK分词器,来解决这一问题。
# 先进入 elasticsearch 容器 -> plugins 目录下
docker exec -it es /bin/bash
cd plugins/
mkdir ik
cd ik/
# 下载资源
## elasticsearch 5.0 后的版本都不支持插件在线安装的方式
## 具体可以参考 https://github.com/medcl/elasticsearch-analysis-ik/issues/344
## 可以通过下载资源方式安装
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.2/elasticsearch-analysis-ik-6.6.2.zip
## 这里需要注意的是ik 分词器的版本。需要与elasticsearch版本相对应,否者后面会启动失败(具体可以参考其github首页)。
# 解压
unzip elasticsearch-analysis-ik-6.6.2.zip
rm -rf elasticsearch-analysis-ik-6.6.2.zip
重启 docker elasticsearch。
docker restart es
具体使用方式可以参考ElasticSearch6.5 使用ik+拼音分词。
X.Docker Compose (暂时不使用,略复杂)
## 2.3 运行-生产模式
1.先检查 ``vm.max_map_count`` 配置
# The vm.max_map_count kernel setting needs to be set to at least 262144 for production use. Depending on your platform:
# 如果过小,需要修改(以下命令可以查看)
grep vm.max_map_count /etc/sysctl.conf
# 可通过以下命令,使实时生效
sysctl -w vm.max_map_count=262144
2.推荐安装 Docker Compose
。。。。。。
配置 Docker elasticsearch
6.安装kibana
docker pull docker.elastic.co/kibana/kibana:6.6.2
docker run -d --name kibana --network=container:es -e ELASTICSEARCH_URL=http://127.0.0.1:9200 kibana:6.6.2
# 使用 --network 就不能使用 -p 了
访问http://localhost:5601
7.Docker 容器开机自启动
可以在使用docker run
启动容器时,使用--restart
参数来设置,具体参数值详细信息:
no
- 容器退出时,不重启容器;on-failure
- 只有在非0状态退出时才从新启动容器;always
- 无论退出状态是如何,都重启容器;
如果创建时未指定--restart=always
,可通过update
命令设置。
docker update --restart=always xxx
还可以在使用on-failure
策略时,指定 Docker 将尝试重新启动容器的最大次数(默认情况下,Docker将尝试永远重新启动容器)。
docker run --restart=on-failure:10 xxx
8.自己的SpringBoot项目也可以使用docker运行
。。。
9.可以考虑利用gitee钩子处理自己项目的升级、部署之类
。。。
评论区