LVS(linux vritual service,虛擬服務器)也叫作調度器。它能夠作至少三種的集羣方式:負載均衡集羣LB(load balance cluster),高可用集羣HA(high Availability cluster),高性能運算集羣HPC(high Performance Computer Cluster)。html
LVS負載均衡分爲三層:調度器、服務器池、nfs存儲設備。在調度器上有兩個網卡,一個是外網的網卡,一個是內網的網卡。外網卡通常叫作vip(virtual IP虛擬IP)跟外網鏈接的。內網卡叫dip(destination IP)服務器池的網卡叫rip(real ip真實IP) 。linux
LVS一共有三種實現方式:NAT轉換(Network Address translation)、IP隧道(IP Tunnel)、直接路由(direct Routing),在這裏面。NAT轉換的方式更加安全。不足是併發量不大。還容易卡,易損壞機器。由於用戶訪問是經過調度器的外網進行訪問,而後由內網卡進行算法指定轉發。最後獲得的結果再由調度器進行迴應。web
算法:算法
算法一共由四種:在這裏咱們就介紹四種;其餘的具體請上百度查看。vim
rr 輪詢算法 就是服務器池裏面的服務器,每個都輪一次。centos
wrr 加權算法: 這個是按照不平等的硬件設備來算的。每臺設備性能不同,算法就不同,好比:性能好的可讓他處理兩次。性能差的能夠處理一次,這樣也不會卡。瀏覽器
Lc 最小鏈接數:根據真實服務器已創建的鏈接數進行分配,將收到的訪問請求優先分配給鏈接數最少的節點。安全
Wlc 加權最小鏈接數:在服務器節點性能差別較大的狀況下。能夠以真實服務器自動調整權重。服務器
NAT負載均衡集羣搭建網絡
在內網(rip vmne4) 一臺 192.168.253.8 網關:192.168.253.6
網卡配置,給第二塊網卡添加IP地址,先ip addr查看第二塊網卡的名稱,而後再將ens33複製一份爲第二塊網卡的配置文件。記得要改網卡名稱,刪除uuid號。
調度器:
modprobe ip_vs
注:加載ipvs模塊
cat /proc/net/ip_vs
注:查看ip_vs版本信息
Yum -y install ipvsadm
注:安裝ipvsadm
ipvsadm –A –t 152.52.25.1:80 –s rr
注:-A添加虛擬服務器 –t 指定vip地址以及端口 –s 指定算法
ipvsadm –a –t 152.52.25.1:80 –r 192.158.253.7:80 –m –w 1
ipvsadm –a –t 152.52.25.1:80 –r 192.168.253.8:80 –m –w 1
注:-a指定真實服務器 –r指定rip地址及端口 –m指定算法爲輪詢(若是這裏是 –g指定DR模式和-i TUN模式),-w 用來設置權重的,1表示每一個web服務器輪一次。
關閉防火牆、selinux:
Systemctl stop firewalld
Iptables –F
Set enforce 0
開啓nat路由轉發功能:
Sed –i ‘$anet.ipv4.ip_forward = 1’ /etc/sysctl.conf
注:若是這個文件裏由這個,建議進去本身修改
Ipvsadm-save 保存。也能夠保存在一個文件裏。
Ipvsadm-save > /etc/sysconfig/ipvsadm
可使用命令查看:ipvsadm –ln 後面加一個c能夠查看訪問的狀況。
NFS共享文件系統:
NFS是一種基於TCP/IP傳輸的網絡文件系統,經過使用NFS協議,客戶機能夠像訪問本地目錄同樣訪問遠程服務器中的共享資源,對於大多數負載均衡服務器來書,使用NFS協議來共享數據存儲是比較常見的作法。
使用NFS發佈共享資源:
NFS服務的實現依賴於RPC(Remote Process Call,遠程過程調用)機制,以完成遠程到本地的映射過程,在centos 7系統中,須要安裝nfs-utils、rpcbind軟件包來提供NFS共享服務,前者用於NFS共享發佈和訪問,後者用於rpc支持。Rpcbind能夠在client上用,它就是爲client準備的。nfs只能在服務器上用,可是也須要在client端安裝軟件包。
注:只能先啓動rpcbind,再啓動nfs。
NFS的安全性很是弱,全部它不能在公網中使用。
1.安裝rpcbind、nfs-utils。而後設置開機自啓。
Yum –y install nfs-utils rpcbind
Systemctl enable rpcbind
Systemctl enable nfs
2.建立一個用於共享文件的目錄
mkdir –p /opt/wwwroot
注:客戶機的IP地址也能夠是單個,也能夠是一個網段(如192.168.253.0/24),也能夠是單獨的兩個地址(如「192.168.253.1(權限選項)192.168.253.2(權限選項)」)
內容:/opt/wwwroot 192.168.253.0/24(rw,sync,no_root_squash)
權限內容:rw 可讀可寫、sync表示同步寫入、no_root_squash 表示當客戶機以root身份訪問時,賦予本地root的權限。這裏默認時root_squash,將做爲nfsnobody用戶降權對待。
Systemctl start rpcbind
Systemctl start nfs
Netstat –anpt |grep rpcbind
Showmount –e
內容爲:Export list for localhost.localdomain:
/opt/wwwroot 192.168.253.0/24
Yum –y install rpcbind nfs-utils
Systemctl enable rpcbind
Systemctl start rpcbind
兩臺web服務器上配置
Web1地址爲:192.158.253.7 網關爲192.168.253.6
Web2地址爲:192.168.253.8 網關爲192.168.253.6
用yum安裝httpd服務,而後在首頁寫一點內容用於測試。
記得關防火牆、selinux
測試機:
模擬外網:152.52.25.2
不須要網關,而後用網頁進行訪問。輸入的地址是vip的地址。訪問的內容是兩臺web服務器的內容,並且是來回輪着顯示內容。它這個默認的網頁保持時間爲60秒,在60秒以內,切換的都仍是這個地址。
NFS共享存儲服務
NFS共享存儲服務就像是一個容器同樣。裏面用來存儲東西。而後服務器在經過掛載這個容器,實現服務內容的一致性。好比:咱們在裏面存放了html的文件。這個文件是須要給別人訪問的,因此咱們能夠給web服務器掛載,而後經過訪問web服務器就能看到它的內容。
基於NET負載均衡集羣搭載NFS共享存儲服務。使全部的web服務器的內容都保存一致
開一臺centos做爲NFS共享存儲服務。
咱們實現NFS共享存儲服務,須要依賴RPC(Remote Procaess Call,遠端過程調用)機制,已完成遠程到本地的映射過程。在centos裏面,咱們須要安裝兩個插件,nsf-utils、rpcbind;
前面的用於NFS共享發佈和訪問 ,後者用於RPC支持。
注意:NFS只能用在內網,由於它沒有一個安全的機制,放在外網垂手可得就被別人給破了。
Yum –y install nfs-utils rpcbind
Systemctl enable nfs-utils
Systemctl enable rpcbind
Mkdir –p /opt/wwwroot
Vim /etc/exports
在裏面編輯:
/opt/wwwroot 192.168.253.0/24(rw,sync,no_root_squash)
注:/opt/wwwroot 是須要發佈訪問的目錄 IP地址是容許訪問的地址,括號裏面的rw表示可讀可寫,sync表示同步寫入,no_root_squash表示當用戶用本身的root用戶訪問時,在這裏也一樣是已NFS的root權限(默認是root_squash,將做爲nfsnobody用戶降權對待)
當須要將同一個目錄共享給不一樣的客戶機,且分配不一樣的權限時,只要以空格分隔指定多個「客戶機(權限選項)」便可。例如,如下操做將/var/ftp/public 目錄共享給兩個客戶機。並分別給只讀和讀寫權限。
vim /etc/exports
/var/ftp/public 192.168.253.10(ro) 192.168.253.11(rw)
======++++++++++++++++++++++++++++++++================
Systemctl start rpcbind
Systemctl start nfs
注意:開啓的順序不能亂,必須先開啓rpcbind,才能開啓nfs,否則會出錯。
Netstat –anpt |grep rpcbind
查看本機發布的nfs共享目錄:
Showmount –e
客戶機配置:
yum –y install rpcbind nfs-tuils
systemctl enable rpcbind
systemctl start rpcbind
開啓rpcbind,由於須要它支持RPC,至於nfs就不須要了,由於他是nfs共享存儲服務器,這是客戶機配置,可是必需要有它能夠,因此咱們只安裝行。
showmount –e nfs地址(192.168.253.9)
經過上面的這條命令,咱們能夠查看到nfs的一些共享信息,若是看不到,就是出錯了,請看看網絡是否是在同一個網段以內。
接下來就是最後一步了,掛載:
Mount 192.168.253.9(nfs地址)/opt/wwwroot /var/www/html
將它掛載到web服務器的網頁存放目錄裏面,
最後就是往裏面添加網頁信息了,在web服務器上添加也能夠,在nfs服務器上添加均可以,由於剛纔給的是讀寫權限,因此,均可以寫入,也能夠讀。
基於DR作負載均衡集羣
環境:
LVS調度器——DR模式
調度服務器一臺:Linux—CentOS7.4
IP地址:192.168.238.6
Web服務器兩臺:Linux—CentOS7.4
IP地址:192.168.253.7(SERVER AA)
IP地址:192.168.253.8(SERVER BB)
客戶端一臺:以win7爲例,用於測試驗證
IP地址:192.168.238.222
192.168.238.6虛擬機
systemctl stop firewalld //關閉防火牆
setenforce 0 //關閉監控
modprobe ip_vs
yum install ipvsadm -y
ipvsadm -v
將ifcfg-ens33的網卡cp一份,若是ens32就cp ens32.
cp ifcfg-ens33 ifcfg-ens33:0
在ens33:0中,咱們設置的是vip的地址,192.168.238.5
掩碼:255.255.255.0
192.168.238.7虛擬機
systemctl stop firewalld//關閉防火牆
setenforce 0 //關閉監控
yum –y install httpd
將ifcfg-lo的網卡cp一份。
[root@localhost ~]#cp ifcfg-lo ifcfg-lo:0
ifcfg-lo:0裏面編寫vip地址
[root@localhost ~]#vim /etc/rc.local
........
/sbin/route add –host 192.168.238.5 dev lo:0
[root@localhost ~]# route add –host 192.168.238.5 dev lo:0
[root@localhost ~]#vim /etc/sysctl.conf
...........忽略
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ifnore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]#sysctl –p
[root@localhost ~]#echo 「<h1>www.test1.com</h1>」 > \ /var/www/html/index.html
[root@localhost ~]#systemctl enable httpd
[root@localhost ~]#systemctl start httpd
其餘的web服務器都這樣配。
測試機訪問:
在win 7上用瀏覽器進行訪問。