天天看点

nginx---负载均衡---upstream标签

了解upstream标签

1.upstream 支持4种负载均衡调度算法:

A、轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;

B、ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。

C、url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。

D、fair:这是比上面两个更加智能的负载均衡算法。按后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。

2、配置实例

1)、热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。

2)、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB…(weight=?)

3)、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB…

4)、ip_hash:nginx会让相同的客户端ip请求相同的服务器。

upstream myweb {

server 172.17.14.2:8080;

server 172.17.14.3:8080;

ip_hash;

}

5)、nginx负载均衡配置状态参数

• down,表示当前的server暂时不参与负载均衡。

• backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。

• max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

• fail_timeout,在经历了max_fails次失败后,暂停服务的时间单位秒。max_fails可以和fail_timeout一起使用。

安装Nginx

如果你未安装nginx,请点击:nginx安装链接

配置

本实验的架构图为

nginx---负载均衡---upstream标签
  • 关闭每一台服务器的防火墙
systemctl stop firewalld && setenforce 0
           
配置nginx-1
  • 创建网站发布目录及信息
/usr/share/nginx/html/index.html   //默认网站发布目录
echo "this is nginx-1 " >/usr/share/nginx/html/index.html
           
  • 检测
    nginx---负载均衡---upstream标签
配置nginx-1
  • 创建网站发布目录及信息
/usr/share/nginx/html/index.html   //默认网站发布目录
echo "this is nginx-2 " >/usr/share/nginx/html/index.html
           
  • 检测
    nginx---负载均衡---upstream标签
配置proxy
  • 修改主配置文件
vim /etc/nginx/nginx.conf
           

注意:在HTTP标签内添加upstream标签,其格式如下:

upstream

name

{

server ip:端口;

server ip:端口;

server ip:端口;

}

nginx---负载均衡---upstream标签
  • 修改子配置文件
vim /etc/nginx/conf.d/default.conf
           

其修改内容为:

server {
        listen      80;      
        server_name     www.hualaotouvip.com;  //域名自定义
        charset utf-8;
        #access_log  logs/host.access.log  main;
        location / {
            proxy_pass http://testweb;     //跟upstream对应的`name`一致
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

                }
        }

           
  • 检测是否有语法错误
nginx -t
nginx -s reload
           
nginx---负载均衡---upstream标签
  • 在客户端添加域名解析:
vim  /etc/hosts
           
nginx---负载均衡---upstream标签
  • 检测
    nginx---负载均衡---upstream标签
    注意:默认调度算法为轮询

继续阅读