0
点赞
收藏
分享

微信扫一扫

9. Nginx负载均衡



目录

  • ​​Nginx负载均衡​​
  • ​​1.Nginx负载均衡按层划分​​
  • ​​1.2负载均衡按层划分应用场景:​​
  • ​​1.2.1.四层负载均衡​​
  • ​​1.2.2.七层负载均衡​​
  • ​​2.Nginx负载均衡配置场景​​
  • ​​3.Nginx upstream配置语法​​
  • ​​4.环境规划实验7层​​
  • ​​4.1.web1配置​​
  • ​​4.2.web02配置​​
  • ​​4.3.LB01 配置​​
  • ​​4.4.验证​​
  • ​​5.Nginx负载均衡后端服务器状态​​
  • ​​测试案例:​​
  • ​​6.Nginx负载均衡调度算法​​
  • ​​7.配置四层负载均衡​​


Nginx负载均衡

web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用WEB服务器集群,前端使用Nginx负载均衡,将请求分散到打到我们后端服务器集群中,实现负载均衡的分发。那么会大大提升系统的吞吐率,请求性能、高容灾。

9. Nginx负载均衡_nginx负载均衡

LB load balance

SLB server lb

9. Nginx负载均衡_nginx_02

1.Nginx负载均衡按层划分

1.2负载均衡按层划分应用场景:

1.2.1.四层负载均衡

IP地址

TCP/UDP

端口号

1.2.2.七层负载均衡

HTTP

HTTPS

FTP

SMTP

2.Nginx负载均衡配置场景

Nginx实现负载均衡需要用到proxy_pass代理模块配置。

Nginx负载均衡是将客户端请求代理发至一组upstream虚拟服务池

3.Nginx upstream配置语法

Syntax:upstream name {…}

Default:–

Context:http

//upstream 例子

upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backend1.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}

4.环境规划实验7层

角色

外网

内网

主机名

LB1

ens33:192.168.154.41

ens32:172.168.20.12

bl01

web1

192.168.154.132

172.168.20.6

web01

web2

192.168.154.133

172.168.20.7

web02

4.1.web1配置

[root@web01 www1]# echo "hellow 172.168.20.6" > index.html

[root@web01 www1]# cat /etc/nginx/conf.d/www1.conf
server {
listen 80;
server_name yan.www.com;
access_log /html/www1/log/access.log;
error_log /html/www1/log/error.log;
location / {
root /html/www1/;
index index.html;
}
}

[root@web01 www1]# systemctl reload nginx

4.2.web02配置

[root@web02 www1]# echo "hellow 172.168.20.7" > index.html

[root@web01 www1]# cat /etc/nginx/conf.d/www1.conf
server {
listen 80;
server_name yan.www.com;
access_log /html/www1/log/access.log;
error_log /html/www1/log/error.log;
location / {
root /html/www1/;
index index.html;
}
}

[root@web02 www1]# systemctl reload nginx

4.3.LB01 配置

[root@bl01 nginx]# cat proxy_params 
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;

[root@bl01 conf.d]# cat upstream.conf
upstream web { #创建及群组
server 172.168.20.6;
server 172.168.20.7;
}
server {
listen 80;
server_name yan.www.com;
location / {
proxy_pass http://web;
include proxy_params; #调用及群组
}
}

[root@bl01 conf.d]# systemctl restart nginx

4.4.验证

使用浏览器访问yan.www.com,然后不断刷新测试

5.Nginx负载均衡后端服务器状态

后端web服务器在前端Nginx负载调度器中的状态

状态

概述

down

当前的server展示不参与负载均衡

backup

预留的备份服务器

max_fails

允许请求失败的次数

fail_timeout

经过max_fails失败后,服务服务暂停时间

max_conns

限制最大接受连接数

测试案例:

1.测试down状态,测试该server不参与负载均衡的调度

upstream load_pass {

server 172.168.20.6 down;

}

2.测试backup及down状态
upstream load_pass {
server 172.168.20.6 down;
server 172.168.20.7 backup;
server 172.168.20.6 max_fails=1 fail_timeout=2s;
}
location / {
proxy_pass http://load_pass;
include proxy_params;
}

3.测试max_fail失败次数和fail_timeout多少次则标记down

upstream load_pass {
server 172.168.20.6;
server 172.168.20.7 max_fail=2 fail_timeout=10s;
}

4.测试max_conns最大TCP连接数

upstream load_pass {
server 172.168.20.6;
server 172.168.20.7 max_conns=1;
}

6.Nginx负载均衡调度算法

调度算法

概述

轮询

按时间寻内需逐一分配后端服务器默认(rr)

weight

加权轮询,weight值越大,分配道德访问几率越高(wrr)

ip_hash

每个请求按访问ip的hash结果分配,这样来自同一个ip地址固定访问后端服务器

url_hash

按照访问url的hash结果来分配请求,每个URL定向到同一个后端服务器

least_conn

最少连接数,那个机器连接数最少就分发(lc)

wlc

加权最少连接

1.Nginx负载均衡【rr】轮询具体配置

upstream load_pass {
server 172.168.20.6;
server 172.168.20.7;
}

2.均衡【weight】权重轮询具体配置

upstream load_pass {
server 172.168.20.6 weight=5;
server 172.168.20.7;
}

3.Nginx股灾均衡ip_hash具体配置,不能和weight一起使用。

//如果客户端走相同代理,会导致某一台服务器连接过多

upstream load_pass {
ip_hash;
server 172.168.20.6;
server 172.168.20.7;
}

7.配置四层负载均衡

7.1修改主配置文件/etc/nginx/nginx.conf

[root@bl01 ~]# cat /etc/nginx/nginx.conf 
user nginx;
worker_processes 1;

error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}
#四层代理
include /etc/nginx/conf.c/*.conf; //添加代理目录
[root@bl01 ~]# mkdir /etc/nginx/conf.c   //创建负载配置文件目录
[root@bl01 ~]# vim /etc/nginx/conf.c/lb.conf //配置四层负载文件
stream {
upstream ssh_web01 {
server 192.168.154.132:22;
}
upstream ssh_web02 {
server 192.168.154.133:22;
}
upstream mysql_01 {
server 192.168.154.135:3306;
}
server {
listen 5555;
proxy_pass ssh_web01;
proxy_connect_timeout 1s;
proxy_timeout 300s;
}
server {
listen 6666;
proxy_pass ssh_web01;
}
server {
listen 33061;
proxy_pass mysql_01;
}
}



举报

相关推荐

0 条评论