
文章目录Elasticsearch 部署手册1. 登录虚拟机2. 检查基础环境3. 调整系统参数4. 下载 Elasticsearch5. 解压安装6. 创建数据和日志目录7. 修改 Elasticsearch 配置8. 设置 JVM 内存9. 启动 Elasticsearch10. 验证启动状态11. 从宿主机访问12. 写入和查询测试数据13. 停止 Elasticsearch14. 重启 Elasticsearch15. 常见问题不能用 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 免密登录。sshubuntu192.168.93.128如果没有免密也可以用密码登录sshubuntu192.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_count262144持久化配置grep-q^vm.max_map_count/etc/sysctl.conf\sudosed-is/^vm.max_map_count.*/vm.max_map_count262144//etc/sysctl.conf\||echovm.max_map_count262144|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_VERSION7.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_VERSION7.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写入单节点开发环境配置catconfig/elasticsearch.ymlYAML 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.dcatconfig/jvm.options.d/heap.optionsEOF -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-aforg.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放行 9200sudoufw allow9200/tcp12. 写入和查询测试数据写入一条文档wget-qO-\--headerContent-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---methodDELETE http://127.0.0.1:9200/codex_test13. 停止 Elasticsearch优先使用 pid 文件停止kill$(cat/home/ubuntu/elasticsearch/es.pid)等待几秒sleep5pgrep-aforg.elasticsearch.bootstrap.Elasticsearch||echoElasticsearch stopped如果没停掉可以强制一点pkill-forg.elasticsearch.bootstrap.Elasticsearch14. 重启 Elasticsearchcd/home/ubuntu/elasticsearchif[-f/home/ubuntu/elasticsearch/es.pid];thenkill$(cat/home/ubuntu/elasticsearch/es.pid)2/dev/null||truesleep5fipgrep-aforg.elasticsearch.bootstrap.Elasticsearchpkill-forg.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_count262144grep-q^vm.max_map_count/etc/sysctl.conf\sudosed-is/^vm.max_map_count.*/vm.max_map_count262144//etc/sysctl.conf\||echovm.max_map_count262144|sudotee-a/etc/sysctl.conf9200 端口被占用查看占用ss-ltnp|grep:9200换成 9201cd/home/ubuntu/elasticsearchsed-is/^http.port:.*/http.port: 9201/config/elasticsearch.yml然后重启。内存不足查看内存free-h降低堆内存cat/home/ubuntu/elasticsearch/config/jvm.options.d/heap.optionsEOF -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_VERSION7.17.29ES_HOME/home/ubuntu/elasticsearch-${ES_VERSION}ES_LINK/home/ubuntu/elasticsearchsudosysctl-wvm.max_map_count262144grep-q^vm.max_map_count/etc/sysctl.conf\sudosed-is/^vm.max_map_count.*/vm.max_map_count262144//etc/sysctl.conf\||echovm.max_map_count262144|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}catconfig/elasticsearch.ymlYAML 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.dcatconfig/jvm.options.d/heap.optionsEOF -Xms512m -Xmx512m EOFif[-f/home/ubuntu/elasticsearch/es.pid];thenkill$(cat/home/ubuntu/elasticsearch/es.pid)2/dev/null||truesleep5fipgrep-aforg.elasticsearch.bootstrap.Elasticsearchpkill-forg.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?pretty17. 部署结果记录模板部署完成后可以按下面记录主机: 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 能返回状态 测试文档可写入和查询