Nginx 负载均衡

Posted 项思凯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 负载均衡相关的知识,希望对你有一定的参考价值。

nginx 负载均衡

说明

  • Nginx 基于OSI七层(应用层)
  • 使用Nginx 反向代理 实现负载均衡
  • Nginx负载均衡 如果某台server down机 Nginx不会去访问,自动跳转到正常的机器上去。

实验环境

  • 三台主机:Linux Centos 6.4 32位
  • 调度器Director:192.168.1.160(公网IP)、192.168.1.100(VIP)
  • HTTP真实服务器Real server1:192.168.1.115(公网IP)
  • HTTP真实服务器Real server2:192.168.1.111(公网IP)

实验操作

注:代理 upsteam 名称不要用下划线"_"

1、配置Nginx主配置文件、http{}内加入

vim /usr/local/nginx/conf/nginx.conf

http{
# upstream反向代理 xsk 自定义名字
upstream xsk{
  # server代理的IP:端口 可加入多个 端口默认为80
  # weight权重值 权重范围 0 ~ 100
  server 192.168.1.111 weight=2;
  server 192.168.1.115 weight=1;
}
server {
     # 代理端监听端口
     listen 80;
     # 代理端访问的域名
     server_name www.dir.com;
     location / {
          # 指定http://name/ 要与upstream name 对应一致
          proxy_pass    http://xsk/;
          proxy_set_header Host    $host;
          proxy_set_header X-real-IP   $remote_addr;
          proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
 }}}
主配置文件

2、检测配置文件

命令:/usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
测试配置文件

3、重启Nginx服务

/etc/init.d/nginx restart
4、测试Nginx负载均衡
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 2
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 2
测试 加权轮询
测试 其中一个web故障,就不访问

[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
[root@nginx conf]# curl -xlocalhost:80 www.dir.com
LVS 1
测试 单点故障

负载均衡模式

< 轮询分发请求 > = 平均分发连接请求
--------------------------------

upstream xyo{
server x.x.x.x ;
server x.x.x.x ;
}

--------------------------------


< 加权轮询请求 > = 加入权重指定分发数
--------------------------------

upstream xyo{
server x.x.x.x weight=1;
server x.x.x.x weight=2;
}

--------------------------------



< 最少连接请求 > = 请求自动分发处理连接少的端
--------------------------------

upstream xyo{
least_conn; 
server x.x.x.x;
server x.x.x.x;
}

--------------------------------



< 哈希绑定连接请求 > = 请求通过hash绑定到访问客户端
--------------------------------

upstream xyo{
ip_hash; 
server x.x.x.x;
server x.x.x.x;
}

--------------------------------

 负载均衡模块参数

模板
upstream xyo{
server x.x.x.x 参数;
server x.x.x.x 参数;
}


<max_fails> = 指定Server允许请求失败次数,默认为1,设置为0将永久无效状态。
<fail_timeout> = 指定server请求失败后,再fail_timeout时间内,心情求不会分配给这台机器。
<max_conns> = 指定server接收的最大请求数,
<backup> = 备份机,所有服务挂掉后生效。
<down> = 标识某一台server不可用。
-------------------------------------------------
    upstream xyo{
 server 192.168.1.166 max_fails=1 fail_timeout=10;
 server 192.168.1.109 max_fails=1 fail_timeout=10;
 server 192.168.1.103 max_conns=1000;
 server 192.168.1.102 backup;
 server 192.168.1.103 down;
}
-------------------------------------------------


<resolver> = 指定DNS域名解析服务器地址
<resolve> = 选择指定resolver域名地址解析
-------------------------------------------------
http {

resolver 8.8.8.8

    upstream xyo{
 server www.zkjiashijie.com resolve;
 server admin.zkjiashijie.comresolve;

  }

}
-------------------------------------------------

 

以上是关于Nginx 负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Nginx负载均衡

Nginx反向代理实现负载均衡配置图解

OpenResty 动态负载均衡

nginx反向代理访问很慢,我做了负载均衡,现在几乎无法访问,有谁能帮我解决一下,万分感谢。

nginx--❤️图解及代码实现正向代理反向代理及负载均衡(非常实用,建议收藏❤️)

分布式部署与NGINX负载均衡