Web笔记菜鸟运维

一种将Nginx与Elasticsearch连用的方案

Elasticsearch是一种先进的,高性能的,可扩展的开源搜索引擎,提供全文搜索和实时分析的结构化和非结构化的数据。

它的特定是可以通过HTTP使用 RESTful API,很容易的融入现有的web架构。因此在高并发的情况下,采用nginx反向代理负载均衡到多台Elasticsearch 服务器上。

架构图:

一种将Nginx与Elasticsearch连用的方案插图

 

这种架构的优点是:

  1. 记录每个API请求的日志
  2. 支持大量的客户端连接,不管有没有启用keepalives,比长连接(使用keepalives)到elasticsearch服务器小的多
  3. 负载均衡的请求Elasticsearch服务器
  4. 缓存数据,减少同一内容再次请求Elasticsearch服务器。NGINX Plus 还提供HTTP API 对缓存数据的清除接口
  5. 提供主动健康检测(仅nginx plus),不断检测后端Elasticsearch服务器是否正常,并主动的进行切换。
  6. 报告丰富的监控指标(仅nginx plus),提供监控和管理。
  7. 支持通过HTTP API动态的配置上游服务器组(仅nginx plus),可以从上游服务器组中添加和删除,上线或下线,改变权重。

一种将Nginx与Elasticsearch连用的方案插图1

下表比较Elasticsearch 、Elasticsearch + nginx F/OSS、Elasticsearch + NGINX Plus 的功能:

Elasticsearch clientnginx F/OSSNGINX Plus
Horizontal scalabilityYYY
Keepalive optimizationYY
Centralized HTTP access logsYY
Queuing and concurrency controlY
Response cachingYY
Failover of failed connectionsYYY
Active monitoring of Elasticsearch nodesY (some clients)Y
Advanced load balancing methodsYY
Weighted load balancingYY
Dynamic reconfigurationY
Status monitoringY
General-purpose HTTP load balancingYY

当使用NGINX Plus高可用性主动或被动配置负载均衡的Elasticsearch 服务器集群时,Elasticsearch 客户端通过nginx plus请求,而不是直接连接到Elasticsearch服务器,可以根据实际情况任意的扩展Elasticsearch服务器不用更新客户端。

 

在nginx.conf配置文件中部署NGINX Plus + Elasticsearch

负载均衡、对有效的请求缓存10分钟、主动的健康监测、状态收集。

Elasticsearch是一个强大而灵活的搜索引擎,与nginx完美构建成一个可扩展高性能高可用性架构。

更多关于安全性的问题可以参见:

Securing Elasticsearch with Nginx

nginx与Elasticsearch结合使用