大并发架构-Keepalived

大并发架构

负载均衡

  • 简单理解:负载均衡是反向代理的衍生品,当真实服务器有多台时,可以合理分配负载。

  • 也可认为:反向代理是负载均衡的一种,当真实的服务器只有一台时就是反向代理。

  • 负载均衡解决方案:

    • 硬件方案:F5、A10、Radware、NetScaler,性能强进,价格偏高
    • 软件方案:LVS、Nginx、HAProxy,性能不错,开源免费
  • 搭建步骤:

    1. 简单约定(硬件配置表),都需要安装nginx
名称 IP 作用
LB01 10.36.137.86 负载均衡服务器(主)
LB02 负载均衡服务器(备)
W01 10.30.137.9 提供服务的真实服务器
W02 10.30.137.4 提供服务的真实服务器

2. 负载均衡主服务器配置(LB01)

  upstream lb01 {       #默认轮询
          server 10.36.137.9;     
          server 10.36.137.4 down;    
          server 10.36.137.6;           
          server 10.36.137.15 backup;      作为备用负载,其它服务器都忙碌时      
  }

  upstream lb02 {       #加权轮询
          server 10.36.137.9 weight=10;          
          server 10.36.137.4 weight=1;          
          server 10.36.137.6 weight=5;            
          server 10.36.137.15 weight=4;           
  }

  upstream lb03 {       #IP哈希
        ip_hash;    #对ip采用hash算法,保证每次访问的都是同一服务器
        #优点:能够保证用户的身份信息,解决session共享问题
        #缺点:若来自某个IP的请求特别多,服务器压力会比较大,容易造成负载不均的情况
          server 10.36.137.9;          
          server 10.36.137.4;            
          server 10.36.137.6;           
          server 10.36.137.15;           
  }

  upstream lb_image {
          server 10.36.137.19;           
          server 10.36.137.14;           
          server 10.36.137.16;           
          server 10.36.137.115;           
  }

  #也可使用第三方的负载均衡算法,如:fire、url_hash

  server {
          listen 80;
          server_name www.fuzai.com fuzai.com;

          location / {
                  proxy_pass http://lb01;           #指定连接池
                  proxy_set_header Host $host; #传递主机信息
                  proxy_set_header X-Real-IP $remote_addr; #传递用户IP
          }

          location ~*\.(jpg|jpeg|png|gif)$ {
                    proxy_pass http://lb_image;         #指定连接池
                  proxy_set_header Host $host;         #传递主机信息
                  proxy_set_header X-Real-IP $remote_addr;  #传递用户IP
          }
  }

在所有的真实服务上搭建一模一样的项目(测试时可以显示不一样的内容以作区分)

双活技术(keepalived)

  • 作用:主要用来保证负载均衡服务器的高可用,进行节点健康检查。

  • 配置:

    1. 配置两台一模一样的负载均衡服务器,一主一备

    2. 两台负载均衡服务器同时安装keepalived:yum install -y keepalived

    3. 备份keepalived配置文件:/etc/keepalived/keepalived.

    4. 主服务器配置

      ! Configuration File for keepalived
      
      
      #全局定义
      
      global_defs {
      notification_email {
           12345678@qq.com        #出现异常时,发送邮件给哪些邮箱
      }
      notification_email_from admin@mxspider.com  #使用哪个邮箱发送邮件
      smtp_server smtp.qq.com     #邮箱服务器
      smtp_connect_timeout 30     #连接超时
      router_id LB01           #路由IP,要保证主和备不同
      }
      
      vrrp_instance VI_1 {
       state MASTER           #主负载均衡服务器
       interface eth0         #网卡名称
       virtual_router_id 51   #虚拟路由ID,在本配置文件中唯一即可
       priority 150           #权重,主应该大于备
       advert_int 1           #心跳同步间隔时间
       authentication {       #认证
           auth_type PASS     #认证方式:密码
           auth_pass 1111     #密码内容:1111
       }
       virtual_ipaddress {        #虚拟的IP地址
           10.36.137.222      
       }
      }
    5. 备用负载均衡服务器配置

      ! Configuration File for keepalived
      
      
      #全局定义
      
      global_defs {
      notification_email {
           12345678@qq.com        #出现异常时,发送邮件给哪些邮箱
      }
      notification_email_from admin@mxspider.com  #使用哪个邮箱发送邮件
      smtp_server smtp.qq.com     #邮箱服务器
      smtp_connect_timeout 30     #连接超时
      router_id LB02           #路由IP,要保证主和备不同
      }
      
      vrrp_instance VI_1 {
       state BACKUP           #备负载均衡服务器
       interface eth0         #网卡名称
       virtual_router_id 51   #虚拟路由ID,在本配置文件中唯一即可
       priority 100           #权重,主应该大于备
       advert_int 1           #心跳同步间隔时间
       authentication {       #认证
           auth_type PASS     #认证方式:密码
           auth_pass 1111     #密码内容:1111
       }
       virtual_ipaddress {        #虚拟的IP地址
           10.36.137.222      
       }
      }
    6. 两台(主和备)负载均衡服务器都要启动keepalived服务:service keepalived start

  • 测试步骤

    1. 需要域名解析到虚拟的IP地址
    2. 直接访问虚拟的IP地址或者域名即可
    3. 可以将主负载均衡服务器的keepalived关闭,看看备用的是否立即提供服务
    4. 再次将主负载均衡服务器的keepalived启动,看看备用的是否立即停止服务
    5. 可以使用命令查看:ip addr
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章