Nginx简单实现负载均衡

nginx

nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强
常用功能:
1.HTTP代理和反向代理
请求稳定,后端转发与业务配合分离,配置灵活,支持判断表达式,可以进行自定义配置,支持通过缓存加速访问,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等
2.负载均衡
1)将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总给用户提高网络系统的处理能力
2)将大量的前端并发访问或者数据流量分担到多个后端网络节点上分别处理
- nginx的负载均衡策略
- 内置策略:轮询 加权轮询 IP HASH
- 扩展策略 主要通过第三方模块实现,常见有url hash
3.WEB缓存
主要由Proxy_Cache(提供代理服务时,对后端服务器返回内容进行URL缓存) 和FastCGI_Cache(对FastCGI程序缓存)指令集构成

nginx编译安装

server1

tar zxf nginx-1.14.0.tar.gz
cd nginx-1.14.0
yum install -y gcc openssl-devel pcre-devel  # 解决软件包依赖

在这里插入图片描述
vim src/core/nginx.h #删除nginx版本信息,为了安全,这样编译后外界无法获取程序的版本号
在这里插入图片描述
vim auto/cc/gcc #注释掉debug,这样编译以后程序只有几百 k
在这里插入图片描述

./configure --help        #查看帮助
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio 

在这里插入图片描述
make && make install
在这里插入图片描述

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/   #为了方便调用,建立软链接

在这里插入图片描述

nginx                        #开启nginx
netstat -antlp | grep nginx  #查看端口信息
curl -I localhost

在这里插入图片描述

Nginx反向代理加负载均衡

server1

lscpu #查看cpu信息
在这里插入图片描述

vim /usr/local/nginx/conf/nginx.conf
	user  nginx nginx;              #用户
	worker_processes  1;            #cpu worker
	#worker_cpu_affinity 01 10;     #当worker_processes 为1时不需要此行,当为2时,worker_cpu_affinity 01 10;为4时,worker_cpu_affinity 0001 0010 0100 1000;以此类推
	
	events {
	    worker_connections  65535;     #进程最大连接数
	}
	
	http {
		添加论叫配置
	        upstream westos {
	 	# ip_hash;   #若不填写默认rr,
	        server 172.25.254.2:80;  
	        server 172.25.254.3:80;  
	        }

       server {
                listen 80;           #端口为80
                server_name www.westos.org;
                location / {
                        proxy_pass http://westos;
                }
        }

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

vim /etc/security/limits.conf
最后一行添加
nginx           -       nofile          65535

在这里插入图片描述

useradd -M -d /usr/local/nginx/ -u 800 nginx    #建立nginx用户,-M 不建立用户的家目录
nginx -t                                        #检查语法是否有错
nginx -s reload                                 #加载配置

在这里插入图片描述
server2与server3
配置apache
在这里插入图片描述
在这里插入图片描述
测试
curl www.westos.org 实现访问轮询
在这里插入图片描述
nginx 自带健康检查
关闭server2httpd,则会一直访问server3
在这里插入图片描述
在这里插入图片描述
在server1中编辑nginx默认发布页面
在这里插入图片描述
修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf
http {
        upstream westos {
 	# ip_hash; 
        server 172.25.254.2:80 down;    #停掉后端服务器
        server 172.25.254.3:80 down;    #停掉后端服务器
        server 172.25.254.1:80 backup;  #本机作备机
        }

在这里插入图片描述

nginx -s reload

测试:
curl www.westos.org
在这里插入图片描述

nginx基于cookie粘滞实现负载均衡

nginx-sticky-module 是 Nginx 的一个扩展模块,实现了通过 Cookie 的会话粘贴效果。
nginx以前对session 保持支持不太好,主要采用ip_hash把同一来源的客户(同一C段的IP)固定指向后端的同一台机器,ip_hash有个缺点是不能实现很好的负载均衡;直到nginx的扩展模块nginx-sticky-module的出现,解决了session sticky的问题。
基本原理:
首先根据轮询RR随机到某台后端,然后在响应的Set-Cookie上加上route字段,第二次请求再处理的时候,发现有route字段,直接导向原来的那个节点
重新编译安装nginx

nginx -s stop       #关闭nginx
cd nginx-1.14.0
make clean
unzip nginx-goodies-nginx-sticky-module-ng-08a395c66e42.zip

在这里插入图片描述
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio --add-module=/root/nginx-goodies-nginx-sticky-module-ng-08a395c66e42
在这里插入图片描述
make && make install
在这里插入图片描述

vim /usr/local/nginx/conf/nginx.conf
http {
        upstream westos {
        sticky;
        server 172.25.24.2:80;
        server 172.25.24.3:80;
        }
nginx
nginx -s reload

在这里插入图片描述
测试:
需用浏览器测试,curl命令不支持cookies
使用火狐浏览器按F12在storage中查看详细信息
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq657886445/article/details/82998396
今日推荐