Nginx 负载均衡的实现以及常见配置

一、基础概念

1.什么是Nginx?

Nginx是一款用C语言开发的自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP(电子邮件)代理服务器,nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

Nginx同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务。
apache被设计为一个重量级的。它不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。

这些都决定了Apache不可能成为高性能WEB服务器,轻量级高并发服务器Nginx就应运而生了。

2.为什么使用Nginx?
  • 负载均衡是Nginx常用的一个功能,当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。

  • 我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。

  • 如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。

主机环境:rhel6.5 selinux and iptables disabled

主机名 ip 服务
server1 172.25.254.1 Nginx
server2 172.25.254.2 apache
server3 172.25.254.3 apache

搭建步骤:

1.Nginx 的编译安装

01.获得资源包,解压,进行简单设置
在这里插入图片描述

[root@server1 ~]# tar zxf nginx-1.14.2.tar.gz

在这里插入图片描述

[root@server1 cc]# vim gcc
171 # debug
172 #CFLAGS="$CFLAGS -g"	#日志级别,不开启debug的话,编译出来的nginx会很小

02.对nginx进行源码编译

[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

在这里插入图片描述

注意:会出现报错,因为源码是C,所以安装gcc

[root@server1 nginx-1.14.2]# yum install gcc -y
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

在这里插入图片描述

注意:会出现PCRE,因为nginx的重写

[root@server1 nginx-1.14.2]# yum install pcre-devel -y
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

在这里插入图片描述
注意:会出现SSL加密算法(四握手五挥手)

[root@server1 nginx-1.14.2]# yum install openssl-devel -y
[root@server1 nginx-1.14.2]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module

在这里插入图片描述

注意:此时编译成功

03.进行安装,查看

[root@server1 nginx-1.14.2]# make && make install

在这里插入图片描述

2.给nginx添加链接,方便管理

[root@server1 sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin

3.设置nginx的配置文件

[root@server1 ~]# cd /usr/local/nginx/
[root@server1 nginx]# ls
client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp
conf              html          proxy_temp  scgi_temp
[root@server1 nginx]# cd conf/
[root@server1 conf]# vim nginx.conf
2 user  nginx nginx;	#使用户为nginx用户和nginx用户组进行管理
3 worker_processes  4;	#nginx的工作进程数,一般设置为cpu核数  ,auto为自动识别cpu核数,但是一般不推荐使用
4 worker_cpu_affinity 0001 0010 0100 1000;
12 events {
13     worker_connections  65535;	#worker可以开启的线程数
18 http {
19     include       mime.types;
20     default_type  application/octet-stream;
21         upstream westos{
22         server 172.25.254.2:80;	#后端服务器
23         server 172.25.254.3:80;
24         }
120 server {
121         listen 80;	#nginx监听80端口
122         server_name www.westos.org;
123         location / {	#访问上边的虚拟主机
124                 proxy_pass http://westos;
125 }
126 }
127 }
[root@server1 conf]# id nginx
id: nginx: No such user
[root@server1 conf]# id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)
[root@server1 conf]# useradd nginx
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx
[root@server1 conf]# ps aux

在这里插入图片描述

4.在server2和server3上安装httpd服务,编写默认发布页
在这里插入图片描述
在这里插入图片描述

测试:

[root@foundation73 ~]# vim /etc/hosts

在这里插入图片描述
在这里插入图片描述

测试nginx是否提供健康状况检查

[root@server2 html]# /etc/init.d/httpd stop

在这里插入图片描述

  • 配置文件解析
[root@server1 conf]# vim nginx.conf
21         upstream westos{
22         ip_hash;	#同一个IP的请求会指定到同一个后端主机
23         server 172.25.254.2:80;
24         server 172.25.254.3:80;
25         }
[root@server1 conf]# nginx -t
[root@server1 conf]# nginx -s reload

在这里插入图片描述

注意:此时IP被绑定到server2上

  • 设置当后端服务器全部换掉时,备用主机
[root@server1 conf]# vim nginx.conf
 21         upstream westos{
 22         #ip_hash;
 23         server 172.25.254.2:80;
 24         server 172.25.254.3:80;
 25         server 127.0.0.1:80 backup;
 26         }
 [root@server1 conf]# nginx -t
 [root@server1 conf]# nginx -s reload

测试:

将后端的httpd关闭

[root@server2 html]# /etc/init.d/httpd stop
[root@server3 html]# /etc/init.d/httpd stop

浏览器输入www.westos.org可以看到
在这里插入图片描述

将欢迎页面更改:
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44209804/article/details/89389465