Nginx是如何实现七层的负载均衡的
admin
2023-03-24 05:20:02
0

下文给大家带来Nginx是如何实现七层的负载均衡的,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。

 Nginx是如何实现七层的负载均衡的

Nginx实现七层的负载均衡

调度到不同组后端云服务器
1. 动静分离
2. 网站进行分区
=================================================================================

拓扑结构

                [vip: 20.20.20.20]

            [LB1 Nginx]      [LB2 Nginx]
            192.168.1.2       192.168.1.3

[index]      [milis]     [videos]     [p_w_picpaths]      [news]
1.11         1.21         1.31         1.41         1.51
1.12          1.22         1.32         1.42         1.52
1.13          1.23         1.33         1.43         1.53
...            ...          ...          ...          ...
/web       /web/milis    /web/videos   /web/p_w_picpaths   /web/news
index.html   index.html   index.html                 index.html


一、实施过程
方案一 根据站点分区进行调度
http {
   upstream index {
       server 192.168.1.11:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.12:80 weight=2 max_fails=2 fail_timeout=2;
       server 192.168.1.13:80 weight=2 max_fails=2 fail_timeout=2;
      }
     
   upstream milis {
       server 192.168.1.21:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.22:80 weight=2 max_fails=2 fail_timeout=2;
       server 192.168.1.23:80 weight=2 max_fails=2 fail_timeout=2;
      }
     
    upstream videos {
       server 192.168.1.31:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.32:80 weight=2 max_fails=2 fail_timeout=2;
       server 192.168.1.33:80 weight=2 max_fails=2 fail_timeout=2;
      }
     
    upstream p_w_picpaths {
       server 192.168.1.41:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.42:80 weight=2 max_fails=2 fail_timeout=2;
       server 192.168.1.43:80 weight=2 max_fails=2 fail_timeout=2;
      }
     
     upstream news {
       server 192.168.1.51:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.52:80 weight=2 max_fails=2 fail_timeout=2;
       server 192.168.1.53:80 weight=2 max_fails=2 fail_timeout=2;
      }
     
    server {
          location / {
      proxy_pass http://index;
      }
     
      location  /news {
      proxy_pass http://news;
      }
     
      location /milis {
      proxy_pass http://milis;
      }
     
      location ~* \.(wmv|mp4|rmvb)$ {
      proxy_pass http://videos;
      }
     
      location ~* \.(png|gif|jpg)$ {
      proxy_pass http://p_w_picpaths;
      }
}


方案二 根据动静分离进行调度
http {
    upstream htmlservers {
       server 192.168.1.1:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.2:80 weight=2 max_fails=2 fail_timeout=2;
        }
       
upstream phpservers {
       server 192.168.1.3:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.4:80 weight=2 max_fails=2 fail_timeout=2;
        }
       
     server {
      location ~* \.html$ {
      proxy_pass http://htmlservers;
      }
     
      location ~* \.php$ {
      proxy_pass http://phpservers;
      }
     }
}


二、Keepalived实现调度器HA
注:主/备调度器均能够实现正常调度
1. 主/备调度器安装软件
[root@master ~]# yum -y install keepalived
[root@backup ~]# yum -y install keepalived

2. Keepalived
BACKUP1
[root@uplook ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
  router_id director1 //辅助改为director2
}

vrrp_instance VI_1 {
   state BACKUP
   nopreempt    
   interface eth0 //心跳接口,尽量单独连接心跳
   virtual_router_id 80//整个集群的调度器一致
   priority 100 //辅助改为50
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       20.20.20.20
   }
}

BACKUP2


3. 启动KeepAlived(主备均启动)
[root@uplook ~]# chkconfig keepalived on
[root@uplook ~]# service keepalived start
[root@uplook ~]# ip addr

到此:
可以解决心跳故障keepalived
不能解决Nginx服务故障



4. 扩展对调度器Nginx健康检查(可选)
思路:
让Keepalived以一定时间间隔执行一个外部脚本,脚本的功能是当Nginx失败,则关闭本机的Keepalived

a. script
[root@master ~]# cat /etc/keepalived/check_nginx_status.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &>/dev/null
if [ $? -ne 0 ];then
/etc/init.d/keepalived stop
fi

[root@master ~]# chmod a+x /etc/keepalived/check_nginx_status.sh

b. keepalived使用script
! Configuration File for keepalived

global_defs {
  router_id director1
}

vrrp_script check_nginx {
  script "/etc/keepalived/check_nginx_status.sh"
  interval 5
}


vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   nopreempt
   virtual_router_id 90
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass uplook
   }
   
   virtual_ipaddress {
       192.168.1.80
   }

   track_script {
       
check_nginx
   }

}

注:必须先启动nginx,再启动keepalived




     调度到同一组后端服务器
网站没按业务/版块拆分,所有后端服务器提供整站代码。
=================================================================================

拓扑结构

              [LB Nginx]
              20.20.20.20
              192.168.1.2

[httpd]         [httpd]      [httpd]
192.168.1.3    192.168.1.4    192.168.1.5


实施过程
1. nginx
http {
   upstream httpservers {
       server 192.168.1.3:80 weight=1 max_fails=2 fail_timeout=2;
       server 192.168.1.4:80 weight=2 max_fails=2 fail_timeout=2;
       server 192.168.1.5:80 weight=2 max_fails=2 fail_timeout=2;
       server 192.168.1.100:80 backup;         等3、4、5 挂掉100上线
   }

   server {
      location  / {
               proxy_pass  http://httpservers;
               proxy_set_header X-Real-IP $remote_addr;
      }
    }    
}

2. Apache LogFormat 可选
LogFormat "%{X-Real-IP}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

3. Nginx LogFormat

=================================================================================

看了以上关于Nginx是如何实现七层的负载均衡的,如果大家还有什么地方需要了解的可以在行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,技术工程师在行业内拥有十几年的经验了。官网链接www.yisu.com

相关内容

热门资讯

【第一消息】“沈阳老友麻将开挂... 网上科普关于“沈阳老友麻将有没有挂”话题很是火热,小编也是针对沈阳老友麻将作*弊开挂的方法以及开挂对...
【第一财经】“八闽状元郎真的有... 家人们!今天小编来为大家解答八闽状元郎透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...
玩家最新攻略“娱网皮球是不是有... 有 亲,根据资深记者爆料娱网皮球是可以开挂的,确实有挂(咨询软件无需打开...
美国体面人的“斩杀线”,美人类... 最近,一个源自游戏术语的词汇——“斩杀线”,在关于美国社会现状的讨论中迅速升温。“斩杀线”在游戏中,...
今日重磅消息“蒙乐呼伦贝尔麻将... 有 亲,根据资深记者爆料蒙乐呼伦贝尔麻将是可以开挂的,确实有挂(咨询软件...
女子回应推着高位截瘫男友环球旅... 12月底,阿秋(化名)在挪威看到了极光,在一片绿紫色的光带下,她拉着何生(化名),静静地欣赏,这是她...
今日重磅消息“乾坤互娱有挂吗?... 您好:乾坤互娱这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...
终于了解“乾坤互娱到底是不是挂... 网上科普关于“乾坤互娱有没有挂”话题很是火热,小编也是针对乾坤互娱作*弊开挂的方法以及开挂对应的知识...
玩家攻略科普“天天福建十三张是... 家人们!今天小编来为大家解答天天福建十三张透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪...
玩家最新攻略“掌中乐游戏中心到... 您好:掌中乐游戏中心这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这...