nginx与Elasticsearch结合使用
Elasticsearch是一种先进的,高性能的,可扩展的开源搜索引擎,提供全文搜索和实时分析的结构化和非结构化的数据。
它的特定是可以通过HTTP使用 RESTful API,很容易的融入现有的web架构。因此在高并发的情况下,采用nginx反向代理负载均衡到多台Elasticsearch 服务器上。
架构图:

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

当使用NGINX Plus高可用性主动或被动配置负载均衡的Elasticsearch 服务器集群时,Elasticsearch 客户端通过nginx plus请求,而不是直接连接到Elasticsearch服务器,可以根据实际情况任意的扩展Elasticsearch服务器不用更新客户端。
部署NGINX Plus + Elasticsearch
proxy_cache_path /var/cache/nginx/cache keys_zone=elasticsearch:10m inactive=60m;
upstream elasticsearch_servers {
zone elasticsearch_servers 64K;
server 192.168.187.132:9200;
server 192.168.187.133:9200;
}
match statusok {
status 200;
header Content-Type ~ "application/json";
body ~ '"status" : 200';
}
server {
listen 9200;
status_zone elasticsearch;
location / {
proxy_pass http://elasticsearch_servers;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_cache elasticsearch;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_connect_timeout 5s;
proxy_read_timeout 10s;
health_check interval=5s fails=1 passes=1 uri=/ match=statusok;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
access_log logs/es_access.log combined;
}
server {
listen 8080;
root /usr/share/nginx/html;
location / {
index status.html;
}
location =/status {
status;
}
}
负载均衡、对有效的请求缓存10分钟、主动的健康监测、状态收集。
Elasticsearch是一个强大而灵活的搜索引擎,与nginx完美构建成一个可扩展高性能高可用性架构。
参考:https://www.elastic.co/blog/playing-http-tricks-nginx
nginx与Elasticsearch结合使用的更多相关文章
- ElasticSearch 通过nginx做HTTP验证
在ElasticSearch 的设置文件中如果设置了 network.host: 0.0.0.0 则表示ElasticSearch 服务是公开的任何ip都可以访问ElasticSearch 服务.这样 ...
- Logstash使用grok插件解析Nginx日志
grok表达式的打印复制格式的完整语法是下面这样的: %{PATTERN_NAME:capture_name:data_type}data_type 目前只支持两个值:int 和 float. 在线g ...
- ELK5.6.4+Redis+Filebeat+Nginx(CentOS7.4)
下载地址: Elasticsearhc: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.tar.gz ...
- web服务构架
以我的理解大流量电商网站,一般构架如下: CDN 负载均衡集群 < === > 缓存服务器集群 反向代理服务器集群 web服务器集群(日志采集) < === > 缓存系统集群 ...
- shell 实例
转载自:https://github.com/liquanzhou/ops_doc 这里只作为笔记使用,不做他用 shell实例手册 0 说明{ 手册制作: 雪松 更新日期: 2018-09-1 ...
- 亿级 ELK 日志平台构建部署实践
本篇主要讲工作中的真实经历,我们怎么打造亿级日志平台,同时手把手教大家建立起这样一套亿级 ELK 系统.日志平台具体发展历程可以参考上篇 「从 ELK 到 EFK 演进」 废话不多说,老司机们座好了, ...
- ELK初探
ELK.nginx安装方式:rpm https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html 其他的类似 ngi ...
- logstash运输器以及kibana的更多操作
为了达到不会因为ELK中的某一项组件因为故障而导致整个ELK工作出问题,于是 将logstash收集到的数据存入到消息队列中如redis,rabbitMQ,activeMQ或者kafka,这里以red ...
- [elk]elasticsearch5.0及head插件安装
ElasticSearch2.3/2.4升级到ElasticSearch5.0 参考文档(排名不分先后)https://www.elastic.co/guide/en/elasticsearch/re ...
随机推荐
- Python-网站页面代码获取
Python3.6 库:urllib3, bs4 主程序是抓取亚马逊图书销售排名数据,但是亚马逊应该是加了反爬虫,拒绝疑似机器人的请求,这部分暂时以百度代替. 其实简单的页面抓取,常用的urllib. ...
- Mac Launchpad出现两个相同快捷方式的解决办法
进入以下目录 ~/Library/Application Support/Dock 把里面的.db文件删掉,然后注销重新登录即可.
- Scala编程入门---函数式编程
高阶函数 Scala中,由于函数时一等公民,因此可以直接将某个函数传入其他函数,作为参数.这个功能是极其强大的,也是Java这种面向对象的编程语言所不具备的. 接收其他函数作为函数参数的函数,也被称作 ...
- Python2和Python3的差异
之前做Spark大数据分析的时候,考虑要做Python的版本升级,对于Python2和Python3的差异做了一个调研,主要对于语法和第三方工具包支持程度进行了比较. 基本语法差异 核心类差异 Pyt ...
- js实用技巧
IIFE(立即调用函数表达式)最广泛的用途是避免污染全局作用域. 已经有很多JavaScript库和JavaScript高手正在使用这种技巧, 尤其是在最流行jQuery插件的开发者中. 你也应该把这 ...
- springboot~为Money类型添加最大值和最小值的注解校验
在spring框架里,为我们集成了很多校验注解,直接在字段上添加对应的注解即可,这些注解基本都是简单保留类型的,即int,long,float,double,String等,而如果你自己封装了新的类, ...
- Django入门二之模板语法
一. 模板变量 Context传入的可以是一个str,dict,list,甚至是一个实例对象 在html中如何调用这些对象进行取值呢 1. 变量名 {{ variable }} 返回字符串,无论是st ...
- Linux 下 Redis 安装与配置
1.Redis 的安装 在 Ubuntu 系统安装 redis 可以使用以下命令: $ sudo apt-get update $ sudo apt-get install redis-server ...
- 由ping所引发的思考~
今天看了掘金一片关于ping原理的文章,https://juejin.im/entry/5af8d5e651882565bd25581c?utm_source=gold_browser_extensi ...
- pycharm linux版快捷方式创建
****************************pycharm_linux安装and快捷方式创建******************1.下载好安装包之后解压: tar -xfz 压缩包名 ...