部署搜索引擎和分析引擎通常让人头疼——配置复杂、安全证书折腾半天、节点通信调不通。现在用Docker Compose加Traefik,整个过程压缩到10分钟以内,连HTTPS证书都是自动申请的。
这套方案面向的是Ubuntu 24.04环境,底层用Apache Lucene构建的分布式搜索引擎Elasticsearch,开箱就支持全文检索、结构化查询和日志分析。部署出来的是单节点实例,通过集群健康检查和索引接口验证是否正常运行,最终能在你自己的域名上通过HTTPS提供索引数据服务。
建立项目目录结构是第一步。操作很简单,执行mkdir命令创建elasticsearch-logging文件夹,里面再套两个子目录:elasticsearch-data存数据,elasticsearch-config放配置。接着用cd命令切进项目根目录。第二步要修改数据目录的所有权,sudo chown命令把UID和GID都设成1000,这是Elasticsearch容器内部运行用户的标准值。
第三步创建环境变量文件。用nano编辑器打开.env文件,写入两个变量:DOMAIN变量填你的域名,比如elasticsearch.example.com;LETSENCRYPT_EMAIL填管理员邮箱,admin@example.com这种格式就行,Let's Encrypt会往这个邮箱发证书到期提醒。
第四步配置Elasticsearch本身。在elasticsearch-config目录下创建elasticsearch.yml文件,nano打开后写入五条关键配置:cluster.name设为logging-cluster作为集群标识;node.name设为node-1;network.host绑定0.0.0.0让容器内部可访问;http.port保持默认9200端口;discovery.type指定为single-node,因为我们是单节点部署;xpack.security.enabled直接关掉,省去认证环节。
接下来是Docker Compose的主菜。创建docker-compose.yaml文件,里面定义了两个服务。第一个是Traefik反向代理,用的v3.6版本镜像,容器名叫traefik。command部分传了一堆参数:启用Docker provider但不暴露默认规则;定义web和websecure两个入口点分别对应80和443端口;HTTP请求全部重定向到HTTPS;证书解析器letsencrypt启用HTTP质询,质询入口走web端口,邮箱和存储路径都用变量和固定路径指定。端口映射把主机的80和443都引到容器里。volumes挂载了两个东西,一个是letsencrypt卷存证书,另一个是docker.sock文件只读挂载让Traefik能监听Docker事件。重启策略设成unless-stopped。
第二个服务就是Elasticsearch本体。镜像用docker.elastic.co官方源的最新版,容器名和主机名都叫elasticsearch。expose只开放9200端口给内部网络,不直接暴露到宿主机。volumes把本地的elasticsearch-data目录映射到容器内的数据路径,把刚才写的elasticsearch.yml配置文件精确映射到容器配置目录。environment设置堆内存,ES_JAVA_OPTS指定最小和最大都1GB,根据你机器内存调。labels是Traefik的配置语法:启用Traefik、路由规则用Host匹配你的域名、入口走websecure、TLS证书用letsencrypt解析器、负载均衡指向9200端口。最后声明letsencrypt外部卷。
一切就绪,docker compose up -d启动所有服务。等容器拉取镜像并启动完成后,用docker compose ps确认进程都在运行,用docker compose logs查看日志有没有报错。访问测试环节:curl命令请求你域名的_cluster/health接口,后面带pretty参数让JSON格式化输出,应该能看到集群名、状态、节点数等健康信息。再发一个PUT请求创建test-index测试索引,请求体里指定settings,number_of_shards设为1——实际创建命令在原文里被截断了,但核心流程已经走通。
热门跟贴