文章目录
- Elasticsearch 部署手册
- 1. 登录虚拟机
- 2. 检查基础环境
- 3. 调整系统参数
- 4. 下载 Elasticsearch
- 5. 解压安装
- 6. 创建数据和日志目录
- 7. 修改 Elasticsearch 配置
- 8. 设置 JVM 内存
- 9. 启动 Elasticsearch
- 10. 验证启动状态
- 11. 从宿主机访问
- 12. 写入和查询测试数据
- 13. 停止 Elasticsearch
- 14. 重启 Elasticsearch
- 15. 常见问题
- 不能用 root 启动
- vm.max_map_count 太小
- 9200 端口被占用
- 内存不足
- 启动后访问不了
- 16. 一键部署脚本
- 17. 部署结果记录模板
Elasticsearch 部署手册
本文记录在 Ubuntu 虚拟机192.168.93.128上部署 Elasticsearch 的完整过程。命令按顺序复制执行即可。
本手册使用Elasticsearch 7.17.29的 Linux tar 包方式部署,适合当前这台 Ubuntu 16 虚拟机。tar 包自带 JDK,不依赖系统 Java。
说明:Elastic 当前主线已经到 9.x,但很多 Java 项目仍会使用 7.17.x 或 8.x。当前虚拟机系统较老,为了部署简单、兼容性好、默认安全配置不复杂,这里使用 7.17.29 做单节点开发环境。
1. 登录虚拟机
前提:本机已经配置过 SSH 免密登录。
sshubuntu@192.168.93.128如果没有免密,也可以用密码登录:
sshubuntu@192.168.93.128账号密码:
ubuntu / 1234562. 检查基础环境
Elasticsearch tar 包自带 JDK,但需要系统有wget、tar等基础工具。
whoamiuname-adf-h/home/ubuntufree-hcommand-vwgetcommand-vtar如果缺少工具,执行:
sudoapt-getupdatesudoapt-getinstall-ywgettar如果 sudo 要密码,输入:
1234563. 调整系统参数
Elasticsearch 需要较大的vm.max_map_count,否则启动或运行时容易报错。
临时生效:
sudosysctl-wvm.max_map_count=262144持久化配置:
grep-q'^vm.max_map_count='/etc/sysctl.conf\&&sudosed-i's/^vm.max_map_count=.*/vm.max_map_count=262144/'/etc/sysctl.conf\||echo'vm.max_map_count=262144'|sudotee-a/etc/sysctl.confsudosysctl-p确认:
sysctlvm.max_map_count期望结果:
vm.max_map_count = 2621444. 下载 Elasticsearch
部署目录统一放在/home/ubuntu/elasticsearch。
cd/home/ubuntumkdir-p/home/ubuntu/elasticsearch-downloadcd/home/ubuntu/elasticsearch-downloadES_VERSION=7.17.29wget-Oelasticsearch-${ES_VERSION}-linux-x86_64.tar.gz\https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz可选:下载校验文件并校验包完整性。
wget-Oelasticsearch-${ES_VERSION}-linux-x86_64.tar.gz.sha512\https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz.sha512 sha512sum-celasticsearch-${ES_VERSION}-linux-x86_64.tar.gz.sha512如果校验通过,会看到类似:
elasticsearch-7.17.29-linux-x86_64.tar.gz: OK5. 解压安装
cd/home/ubuntuES_VERSION=7.17.29rm-rf/home/ubuntu/elasticsearch-${ES_VERSION}tar-xzf/home/ubuntu/elasticsearch-download/elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz-C/home/ubuntuln-sfn/home/ubuntu/elasticsearch-${ES_VERSION}/home/ubuntu/elasticsearch确认目录:
ls-lah/home/ubuntu/elasticsearchls-lah/home/ubuntu/elasticsearch/bin/elasticsearchls-lah/home/ubuntu/elasticsearch/jdk/bin/java查看版本:
/home/ubuntu/elasticsearch/bin/elasticsearch--version6. 创建数据和日志目录
mkdir-p/home/ubuntu/elasticsearch-datamkdir-p/home/ubuntu/elasticsearch-logs7. 修改 Elasticsearch 配置
备份原配置:
cd/home/ubuntu/elasticsearchcpconfig/elasticsearch.yml config/elasticsearch.yml.bak写入单节点开发环境配置:
cat>config/elasticsearch.yml<<'YAML' cluster.name: local-es-cluster node.name: node-1 path.data: /home/ubuntu/elasticsearch-data path.logs: /home/ubuntu/elasticsearch-logs network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node xpack.security.enabled: false YAML说明:
network.host: 0.0.0.0 允许从宿主机访问 http://192.168.93.128:9200 discovery.type: single-node 单机开发环境必备,避免集群发现相关配置。 xpack.security.enabled: false 关闭 7.17 的安全认证,方便开发环境直接访问。确认配置:
grep-Ev'^\s*(#|$)'/home/ubuntu/elasticsearch/config/elasticsearch.yml8. 设置 JVM 内存
当前虚拟机已经运行 RocketMQ、Redis、XXL-JOB、Hippo4j 等服务,不建议给 ES 太大内存。这里设置为 512m。
cd/home/ubuntu/elasticsearchmkdir-pconfig/jvm.options.dcat>config/jvm.options.d/heap.options<<'EOF' -Xms512m -Xmx512m EOF确认:
cat/home/ubuntu/elasticsearch/config/jvm.options.d/heap.options9. 启动 Elasticsearch
注意:Elasticsearch 不能用 root 用户启动。当前应该使用ubuntu用户。
whoami期望:
ubuntu后台启动:
cd/home/ubuntu/elasticsearch ./bin/elasticsearch-d-p/home/ubuntu/elasticsearch/es.pid等待启动:
sleep3010. 验证启动状态
查看进程:
cat/home/ubuntu/elasticsearch/es.pid pgrep-af'org.elasticsearch.bootstrap.Elasticsearch'查看端口:
ss-ltnp|grep':9200'如果系统没有ss,用:
netstat-ltnp|grep':9200'访问 ES 根接口:
wget-qO- http://127.0.0.1:9200/正常会返回类似 JSON:
{"name":"node-1","cluster_name":"local-es-cluster","version":{"number":"7.17.29"},"tagline":"You Know, for Search"}查看集群健康状态:
wget-qO-'http://127.0.0.1:9200/_cluster/health?pretty'单节点正常结果通常是green或yellow。刚启动时短暂yellow也常见。
11. 从宿主机访问
浏览器打开:
http://192.168.93.128:9200/或者在 Windows PowerShell 里执行:
curl http://192.168.93.128:9200/如果虚拟机内部能访问,宿主机访问不了,检查防火墙:
sudoufw status放行 9200:
sudoufw allow9200/tcp12. 写入和查询测试数据
写入一条文档:
wget-qO-\--header='Content-Type: application/json'\--post-data='{"name":"codex","type":"deploy-check","message":"elasticsearch ok"}'\http://127.0.0.1:9200/codex_test/_doc/1查询:
wget-qO- http://127.0.0.1:9200/codex_test/_doc/1?pretty删除测试索引:
wget-qO---method=DELETE http://127.0.0.1:9200/codex_test13. 停止 Elasticsearch
优先使用 pid 文件停止:
kill"$(cat/home/ubuntu/elasticsearch/es.pid)"等待几秒:
sleep5pgrep-af'org.elasticsearch.bootstrap.Elasticsearch'||echo'Elasticsearch stopped'如果没停掉,可以强制一点:
pkill-f'org.elasticsearch.bootstrap.Elasticsearch'14. 重启 Elasticsearch
cd/home/ubuntu/elasticsearchif[-f/home/ubuntu/elasticsearch/es.pid];thenkill"$(cat/home/ubuntu/elasticsearch/es.pid)"2>/dev/null||truesleep5fipgrep-af'org.elasticsearch.bootstrap.Elasticsearch'&&pkill-f'org.elasticsearch.bootstrap.Elasticsearch'||true./bin/elasticsearch-d-p/home/ubuntu/elasticsearch/es.pidsleep30wget-qO- http://127.0.0.1:9200/15. 常见问题
不能用 root 启动
错误类似:
can not run elasticsearch as root解决:切回普通用户:
su- ubuntucd/home/ubuntu/elasticsearch ./bin/elasticsearch-d-p/home/ubuntu/elasticsearch/es.pidvm.max_map_count 太小
错误类似:
max virtual memory areas vm.max_map_count [65530] is too low解决:
sudosysctl-wvm.max_map_count=262144grep-q'^vm.max_map_count='/etc/sysctl.conf\&&sudosed-i's/^vm.max_map_count=.*/vm.max_map_count=262144/'/etc/sysctl.conf\||echo'vm.max_map_count=262144'|sudotee-a/etc/sysctl.conf9200 端口被占用
查看占用:
ss-ltnp|grep':9200'换成 9201:
cd/home/ubuntu/elasticsearchsed-i's/^http.port:.*/http.port: 9201/'config/elasticsearch.yml然后重启。
内存不足
查看内存:
free-h降低堆内存:
cat>/home/ubuntu/elasticsearch/config/jvm.options.d/heap.options<<'EOF' -Xms256m -Xmx256m EOF然后重启。
启动后访问不了
看日志:
tail-200/home/ubuntu/elasticsearch-logs/local-es-cluster.log看端口:
ss-ltnp|grep':9200'虚拟机内部访问:
wget-qO- http://127.0.0.1:9200/宿主机访问:
http://192.168.93.128:9200/16. 一键部署脚本
如果想从零快速部署,可以复制下面整段执行:
set-eES_VERSION=7.17.29ES_HOME=/home/ubuntu/elasticsearch-${ES_VERSION}ES_LINK=/home/ubuntu/elasticsearchsudosysctl-wvm.max_map_count=262144grep-q'^vm.max_map_count='/etc/sysctl.conf\&&sudosed-i's/^vm.max_map_count=.*/vm.max_map_count=262144/'/etc/sysctl.conf\||echo'vm.max_map_count=262144'|sudotee-a/etc/sysctl.confmkdir-p/home/ubuntu/elasticsearch-downloadcd/home/ubuntu/elasticsearch-downloadif[!-selasticsearch-${ES_VERSION}-linux-x86_64.tar.gz];thenwget-Oelasticsearch-${ES_VERSION}-linux-x86_64.tar.gz\https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ES_VERSION}-linux-x86_64.tar.gzficd/home/ubunturm-rf"${ES_HOME}"tar-xzf/home/ubuntu/elasticsearch-download/elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz-C/home/ubuntuln-sfn"${ES_HOME}""${ES_LINK}"mkdir-p/home/ubuntu/elasticsearch-datamkdir-p/home/ubuntu/elasticsearch-logscd"${ES_LINK}"cat>config/elasticsearch.yml<<'YAML' cluster.name: local-es-cluster node.name: node-1 path.data: /home/ubuntu/elasticsearch-data path.logs: /home/ubuntu/elasticsearch-logs network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node xpack.security.enabled: false YAMLmkdir-pconfig/jvm.options.dcat>config/jvm.options.d/heap.options<<'EOF' -Xms512m -Xmx512m EOFif[-f/home/ubuntu/elasticsearch/es.pid];thenkill"$(cat/home/ubuntu/elasticsearch/es.pid)"2>/dev/null||truesleep5fipgrep-af'org.elasticsearch.bootstrap.Elasticsearch'&&pkill-f'org.elasticsearch.bootstrap.Elasticsearch'||true./bin/elasticsearch-d-p/home/ubuntu/elasticsearch/es.pidsleep30wget-qO- http://127.0.0.1:9200/wget-qO-'http://127.0.0.1:9200/_cluster/health?pretty'17. 部署结果记录模板
部署完成后,可以按下面记录:
主机: 192.168.93.128 安装目录: /home/ubuntu/elasticsearch 版本: Elasticsearch 7.17.29 端口: 9200 集群名: local-es-cluster 节点名: node-1 数据目录: /home/ubuntu/elasticsearch-data 日志目录: /home/ubuntu/elasticsearch-logs 访问地址: http://192.168.93.128:9200/验证项:
9200 正在监听 根接口 / 返回 Elasticsearch JSON _cluster/health 能返回状态 测试文档可写入和查询