干货 | Nginx实现Elasticsearch后台服务的负载均衡

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 1、题记Elasticsearch后台程序开发完毕后,相关的ES配置、部署、ES DSL查询、聚合语句也做了优化,但实际客户仍然要求提高QPS,要求保障性能的前提下的很高的并发用户数。这时候,你能想到的方案是什么呢?实际调研发现,优选方案是Nginx负载均衡方案。

image.png

链接

2、为什么是Nginx?

Nginx是俄罗斯软件工程师Igor Sysoev开发的免费开源web服务器软件。nginx于2004年发布,c语言开发,聚焦于高性能,高并发和低内存消耗问题。并且具有多种web服务器功能特性:负载均衡,缓存,访问控制,带宽控制,以及高效整合各种应用的能力,这些特性使nginx很适合于现代网站架构。

在国内,已经有淘宝、新浪博客、新浪播客、网易新闻、六间房、56.com、Discuz!、水木社区、豆瓣、YUPOO、海内、迅雷在线等多家网站使用 Nginx 作为Web服务器或反向代理服务器。


3、Nginx通过反向代理实现负载均衡

NginX,是一款高性能的反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;也是一个Http服务器。也就是说Nginx本身就可以托管网站,进行Http服务处理,也可以作为反向代理服务器使用。

反向代理:代理服务器服务的对象不是用户,而是其他内容服务器。用户访问反向代理服务器(nginx服务器),由反向代理服务器决定转发给哪台服务器处理请求。

注意:不是反向代理提高了性能,反向代理到后端服务器(N台),通过轮询多台后端服务器来提高逻辑处理能力,达到提高系统性能的效果。image.png

显然,Nginx起到的核心作用如下:

1、分流请求

2、负载均衡


4、Linux下nginx的安装

4.1.正则表达式库安装

1)确保进行了安装了linux常用必备支持库。

用命令rpm -qa | grep gcc 检查是否安装了g++、gcc。

若未安装请使用命令:

# yum install gcc-c++

进行安装。

2) 下载pcre-8.12.tar.gz, nginx-1.5.0.tar.gz

到 /usr/local/src/nginx目录下。

3)解压pcre-8.12.tar.gz

   # cd /usr/local/src/nginx

   # tar zxvf pcre-8.12.tar.gz

4)进入解压后的目录

   # cd pcre-8.12

5)配置

   #  ./configure

6) 编译

   #  make

7) 安装

   #  make install

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

4.2 Nginx安装

1) 创建用户nginx使用的www用户。

   #添加www组

   # groupadd  www

   #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统

   # useradd -g  www www -s /bin/false

2)创建安装目录与日志目录

   创建安装目录

   # mkdir /usr/local/nginx

   创建日志目录

   # mkdir /data0/logs/nginx

   # chown www:www /data0/logs/nginx -R

3) 判断系统是否安装了zlib-devel。

如果没有安装。使用如下命令进行安装:

   # yum install -y zlib-devel

4)Nginx下载解压

切换目录到/usr/local/src/nginx目录下

# cd /usr/local/src/nginx

下载nginx到该目录

将下载的文件解压

   # tar zxvf nginx-1.5.0.tar.gz

5) 进入Nginx路径

   # cd nginx-1.5.0

6) 配置

通常将软件安装在/usr/local/目录下。

# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

注意:openssl的安装

yum install -y openssl-devel

7)编译

   # make

8)  安装

   #  make install

9)  检查是否安装成功

   # cd  /usr/local/nginx/sbin

   # ./nginx -t

结果显示:

   nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

   nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

则表示安装成功。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

4.3 Linux做负载均衡的配置

修改/usr/local/nginx/conf/nginx.conf


#user  www;

worker_processes  8;#修改为和服务器CPU核数一样


#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;


#pid        logs/nginx.pid;



events {

   worker_connections  1024;

}



http {

   include       mime.types;

   default_type  application/octet-stream;


   #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

   #                  '$status $body_bytes_sent "$http_referer" '

   #                  '"$http_user_agent" "$http_x_forwarded_for"';


   #access_log  logs/access.log  main;


   sendfile        on;

   #tcp_nopush     on;


   #keepalive_timeout  0;

   keepalive_timeout  65;


   #gzip  on;


#将进行负载均衡的服务器及端口号配置在这里

   upstream backend {

       #ip_hash

       server 192.168.12.15:19001;

       }


   server {

       listen       80;

       server_name  localhost;


       #charset koi8-r;


       #access_log  logs/host.access.log  main;



       location / {

            #设置主机头和客户端真实地址,以便服务器获取客户端真实IP

#             proxy_set_header Host $host;

#             proxy_set_header X-Real-IP $remote_addr;

#             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            #禁用缓存

#             proxy_buffering off;

            #设置反向代理的地址,将负载均衡的服务器变量backend设为反向代理地址

            proxy_pass http://backend;

#            root   html;

#            index  index.html index.htm;

       }


       #error_page  404              /404.html;

       # redirect server error pages to the static page /50x.html

       #

       error_page   500 502 503 504  /50x.html;

       location = /50x.html {

           root   html;

       }

   }


}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

4.4 Nginx启停

1)检查配置文件是否正确


/usr/local/nginx-1.6/sbin/nginx -t

./sbin/nginx -V # 可以看到编译选项

1

2

2)启动 Nginx


./sbin/nginx # 默认配置文件 conf/nginx.conf,-c 指定

1

3)停止Nginx


./sbin/nginx -s stop

或pkill nginx

1

2

4)重启 Nginx


# ./sbin/nginx -s reload

或 kill -HUP `cat /usr/local/nginx-1.6/logs/nginx.pid`

1

2

推荐阅读

[1] Nginx压缩高效配置: https://www.insp.top/article/open-nginx-gzip-module

[2] Nginx简介:https://blog.csdn.net/wang379275614/article/details/47777985

[3] Nginx介绍:https://blog.csdn.net/hanhuili/article/details/9389571

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
12天前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
41 5
|
10天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
61 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
8天前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
30 7
|
5天前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
8天前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
17 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
15天前
|
开发框架 负载均衡 前端开发
Nginx负载均衡
Nginx负载均衡
|
12天前
|
负载均衡 算法 Java
java中nginx负载均衡配置
java中nginx负载均衡配置
29 0
|
14天前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
43 0
|
10天前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
50 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo