收藏!LVS+Keepalived+Nginx高可用負載均衡

LVS負載均衡

  • Linux Virtual Server
  • 章文崇博士主導的開源負載均衡項目(原阿里架構)
  • LVS(ipvs)已經集成到Linux內核
  • 負載均衡調度器
  • LVS基於四層,工作效率更高

網絡拓撲圖

這是Nginx的拓撲圖
在這裏插入圖片描述
這是LVS拓撲圖
在這裏插入圖片描述
主要是使用IPVS去實現

LVS三種模式

LVS-NAT

在這裏插入圖片描述
這是普通的模式,不適合併發特別大的情況
請求通過LVS服務器,導向不同的REAL Server去,響應結束還需要LVS服務器返回響應報文,是不高可用的一種方案

LVS-TUN

在這裏插入圖片描述
上行請求,通過LVS,但是響應各自返回給瀏覽器端

但是這樣的方案是通過隧道去實現的,這樣的每個節點都需要一個公網IP,也就是說你的真是服務器被暴露在公網

LVS-DR

在這裏插入圖片描述
通過這種DR模式,可以限制出口、入口,都走統一的路由出口,這樣我們的服務器可以不用暴露在公網

配置虛擬IP

cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-ens33 ifcfg-ens33:1
vim  ifcfg-ens33:1
#配置虛擬ip
ipaddr=xxx

service network restart
重新啓動網絡服務

下來安裝ipvsadm

yum install ipvsadm
ipvsadm -Ln

使用lo構建虛擬ip
還在當前目錄下,拷貝

cp ifcfg-lo ifcfg-lo:1
vim  ifcfg-lo:1

進去修改一下
在這裏插入圖片描述

虛擬網絡IP已經構建好,再找一臺備機同樣操作,兩臺機器都使用150做虛擬IP

APR通告行爲

在這裏插入圖片描述

如何配置apr通告行爲

vim /etc/sysctl.conf

在這裏插入圖片描述
刷新生效

sysctl -p

添加報文路由,返回的報文都給150

route add -host 192.168.1.150 dev lo:1
route -n

這樣是重啓會失效的,需要配置到/etc/rc.local

開啓DR模式

[root@iZkpcpzbqiupj6Z ~]# ipvsadm -h
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
Usage:
  ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine]
  ipvsadm -D -t|u|f service-address
  ipvsadm -C
  ipvsadm -R
  ipvsadm -S [-n]
  ipvsadm -a|e -t|u|f service-address -r server-address [options]
  ipvsadm -d -t|u|f service-address -r server-address
  ipvsadm -L|l [options]
  ipvsadm -Z [-t|u|f service-address]
  ipvsadm --set tcp tcpfin udp
  ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
  ipvsadm --stop-daemon state
  ipvsadm -h

Commands:
Either long or short options are allowed.
  --add-service     -A        add virtual service with options
  --edit-service    -E        edit virtual service with options
  --delete-service  -D        delete virtual service
  --clear           -C        clear the whole table
  --restore         -R        restore rules from stdin
  --save            -S        save rules to stdout
  --add-server      -a        add real server with options
  --edit-server     -e        edit real server with options
  --delete-server   -d        delete real server
  --list            -L|-l     list the table
  --zero            -Z        zero counters in a service or all services
  --set tcp tcpfin udp        set connection timeout values
  --start-daemon              start connection sync daemon
  --stop-daemon               stop connection sync daemon
  --help            -h        display this help message

先看看他的幫助文檔
重點用-A -t

首先創建一個集羣
ipvsadm -A -t 192.168.1.150:80 -s rr
添加集羣節點

在這裏插入圖片描述
如上圖中我們就可以看到已經創建好兩個節點了

持久化機制

LVS持久化會默認保存請求300s,300秒超過後纔會開啓一個輪訓,不然你一直訪問都是同一臺機子

有兩個地方可以設置
在這裏插入圖片描述
一般不要改懂這兩個值,官方默認的還是非常合理的一個配置

使用Keepalived+LVS高可用

在這裏插入圖片描述
可以使用keepalived配合LVS去實現LVS高可用方案
首先修改keepalived配置文件中VS配置,再添加響應的Nginx服務器

在這裏插入圖片描述
設置健康檢查
在這裏插入圖片描述
以上就是主節點的創建
下來整個從節點
在這裏插入圖片描述
修改router id與權重還有狀態爲備機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章