nginx负载均衡部署

nginx服务部署负载均衡服务

web集群方面

(1) 配置后端web服务集群

(2) 编写站点目录,测试文件

(3) 进行访问测试

nginx服务部署负载均衡

(1) 负载均衡服务器更新yum源 并下载安装nginx服务

(2) 利用nginx服务的upstream模块进行负载均衡的搭建 利用proxy模块进行反向代理分发请求

主配置文件中编写

 # upstream 创建一个池塘
upstream old{           # upstream 设置负载均衡主机表 old=主机表的名字

  server 10.0.0.7:80;     

  server 10.0.0.8:80;    # server 指定主机ip :80 端口 server 10.0.0.9:80;

}

# upstream 模块只能写在http模块下
server{

listen 80;               #  指定传输端口

server_name localhost;   #  默认指定域名  后面值可随意写

location /{               #  匹配模块  符号匹配条件执行xx命令

proxy_pass http://old;    #  将http请求发送给old主机表内的主机  默认为rr (轮询)

include fastcgi_params;    #  页面居左显示  加载fastcgi_params文件变回正常

}

}

proxy 不能写入server模块中所以使用location进行默认匹配

(3) 重启nginx服务进行测试 查看是否轮询访问

第3章 upstream模块扩展应用

upstream 模块官方应用解释

Syntax:  upstream name { ... } --- 指定可以分配用户请求web节点信息

Default:  — --- 无默认值

Context:  http --- 可在什么模块使用

扩展应用

根据节点能力进行分配用户访问请求

upstream old{

server 10.0.0.7:80 weight=3; #  设置权重值为3

server 10.0.0.8:80 weight=2; #  设置权重值为2

server 10.0.0.9:80 weight=1; #  设置权重值为1

} 

分配访问请求时会根据权重值进行分配 权重值越高 分配任务越多

根据后端节点健康状态进行分配

web集群中万一有主机突然硬件损坏 / 网络延时等状况 造成应答不及时或无法应答

这时用户访问的时候会出现 错误代码 造成无法访问网页 为了防止发生这种情况 就要将无法返回正常信息的主机暂时停止传输请求 只对能过够返回正常页面的进行传输请求

设置方法

upstream old{

  server 10.0.0.7:80;

  server 10.0.0.8:80 max_fails=3 fail_timeout=5s;

# c主机给与n次机会  全部失败5s后在发送一次请求查看是否恢复健康

}

根据后端节点状态进行热备节点的使用

upstream old{

  server 10.0.0.6:80;

  server 10.0.0.7:80;

  server 10.0.0.9:80 backup; # 将指定主机设为备用主机

}

当集群主机都无法响应请求 启用热备主机 平时热备主机不会参与集群

根据后端节点连接数进行分配

负载均衡会根据每一台主机的请求连接数进行分配请求 (连接多的少分配 少的多分配)

least_conn 根据连接数进行分配请求指令

upstream old{

least_conn;           #  指定开启连接数分配模式

 server 10.0.0.8:80;

 server 10.0.0.9:80;

}

根据用户源IP地址hash (哈希值) 分配请求

每一台后端主机 负载均衡服务器都会分配一个哈希值区域 当用户请求访问进来 负载均衡会记录主机信息 并赋予哈希值 这样以后这台主机在次访问会被负载均衡服务器直接分配 第一次访问时分配的web主机

缺点 容易造成负载不均衡 导致web压力过大

upstream old{

ip_hash; #  指定开启根据哈希值分配模式

  server 10.0.0.6:80;

  server 10.0.0.7:80;

}

第4章 proxy扩展功能应用

proxy模块官方应用解释

Syntax:   proxy_pass URL; 传输请求到指定主机表

Default:  — 无默认值

Context:  location, if in location, limit_except 可在什么模块内使用

经过负载均衡服务器 访问网站看到不同页面

根据前缀来访问不同的页面 默认传输的数据时 请求头是没有数据的会进行默认首选项的匹配

使用模块 proxy_set_header修改请求头信息 使访问不同网站显示不同的页面

使用方法: proxy_set_header Host $host;

upstream old {

 server 10.0.0.7:80;

 server 10.0.0.8:80;

 server 10.0.0.9:80;

}      

# 设置主机表

server {

 listen 80;

 server_name localhost;

 location / {

 proxy_pass http://old;

 proxy_set_header Host $host;   #  c指定请求头信息为$host (原始请求头信息)

 }

}

让web节点日志显示真是用户IP地址

proxy_set_header在请求头中添加内容

upstream old{

  server 10.0.0.7:80;

  server 10.0.0.8:80;

  server 10.0.0.9:80;

}

server{

listen      80;

server_name    localhost;

location / {

  proxy_pass    http://old;

  proxy_set_header  Host $host;

proxy_set_header   X-Forwarded-For $remote_addr; # c指定请求行添加源ip地址

}

}

根据页面显示信息进行健康检查

server {

 listen 80;

 server_name localhost;

 location / {

 proxy_pass http://oldboy;

 proxy_set_header Host $host;

 proxy_set_header X-Forwarded-For $remote_addr;

 proxy_next_upstream error timeout invalid_header http_404; #c  指定出现什么状态不进行显示  显示健康状态主页

 }

}

说明: 这样给用户显示的页面一定是正常的页面信息

你可能感兴趣的:(nginx负载均衡部署)