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 指定出现什么状态不进行显示 显示健康状态主页
}
}
说明: 这样给用户显示的页面一定是正常的页面信息