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

一、Nginx简介

Nginx是一个http服务器。是一个使用c语言开发的高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,中国大陆使用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就应运而生了。

二、nginx能做什么?

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

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

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

三、Nginx部署

主机环境:
rhel6.5 selinux and iptable disabled
实验环境:

主机名IP服务
server1172.25.5.1nginx
server2172.25.5.2apache
server3172.25.5.3apache
foudation5172.25.5.250测试

1.Nginx的编译安装

1.解压nginx的安装包

[root@server1 ~]# tar zxf nginx-1.14.2.tar.gz  ##解压资源包

在这里插入图片描述
2.去掉nginx的版本号,关闭debug日至

[root@server1 ~]# cd nginx-1.14.2
[root@server1 nginx-1.14.2]# vim src/core/nginx.h
14 #define NGINX_VER          "nginx/"   ##隐藏版本号,防止黑客攻击

[root@server1 cc]# vim gcc
#####关闭debug日至(因为debug的日志非常多,企业中一般不需要开启)
171 # debug
172 #CFLAGS="$CFLAGS -g"	#日志级别,不开启debug的话,编译出来的nginx会很小

3.进入解压目录,进行编译安装

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

注意:
在对nginx源码编译安装之前,要下载三个相关软件

yum install gcc -y  ##因为源码是C,所以安装gcc
yum install pcre-devel -y  ##PCRE,因为nginx的重写
yum install openssl-devel -y  ##会出现SSL加密算法(四握手五挥手)

在这里插入图片描述

[root@server1 sbin]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
#####给nginx添加链接,方便管理

4.编辑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  ##可以看到有一个master进程,4个worker进程
因为刚才的配置文件中worker_processes 参数设置为4

5.server2和server3上安装httpd服务,开启服务,然后编写默认测试页面内容

[root@server2 bin]# yum install httpd -y
[root@server2 bin]# /etc/init.d/httpd start
[root@server2 ~]# cd /var/www/html
[root@server2 html]# vim index.html
server2
[root@server3 bin]# yum install httpd -y
[root@server3 bin]# /etc/init.d/httpd start
[root@server3 ~]# cd /var/www/html/
[root@server3 html]# vim index.html
server3

6.在物理机中添加解析

vim /etc/hosts
172.25.5.1 www.westos.org

7 .(1)测试: curl www.westos.org ##物理机
显示server2,server3轮询被访问到

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

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

curl www.westos.org,只显示server3

2.配置文件解析

1.添加ip_hash

[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

curl www.westos.com ##此时IP被绑定到server2或server3上

2.server 127.0.0.1:80 backup; 后端服务器全坏时则访问本机

[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
[root@server1 ~]# yum install -y httpd
[root@server1 ~]# /etc/init.d/httpd start
[root@server1 ~]# cd /usr/local/nginx/html/
[root@server1 html]# ls
50x.html  index.html
[root@server1 html]# mv index.html index.html.back          ##可以将默认发布文件备份

[root@server1 html]# vim index.html
网页正在维护中...

测试:
将后端的httpd关闭

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

curl www.westos.org 显示网页正在维护中,访问的是server1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值