大併發架構-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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章