LVS負載均衡羣集

羣集應用概述

羣集的含義

1.Cluster,集羣、羣集
2.由多臺主機構成,但對外只表現爲一個整體

在互聯網應用中,隨着站點對硬件性能、響應速度、服務穩定性、數據可靠性等要求越來越高,單臺服務器力不從心
解決方法:

1.使用價格昂貴的小型機、大型機
2.使用普通服務器構建服務羣集

企業羣集分類

根據羣集所針對的目標差異,可分爲三種類型

1.負載均衡羣集(輪詢,最小連接的加權重)
2.高可用羣集(訪問的速度,可靠性)
3.高性能運算羣集(併發處理任務)

負載均衡羣集(Load Balance Cluster)

1.以提高應用系統的響應能力、儘可能處理更多的訪問請求、減少延遲爲目標,獲得高併發、負載(LB) 的整體性能
2.LB的負載分配依賴於主節點的分流算法

高可用羣集(High Availability Cluster)

1.以提高應用系統的可靠性、儘可能地減少中斷時間爲目標,確保服務的連續性,達到高可用(HA) 的容錯效果
2.HA的工作方式包括雙工和主從兩種模式

高性能運算羣集(High Performance Computer Cluster)

1.以提高應用系統的CPU運算速度、擴展硬件資源和分析能力爲目標,獲得相當於大型、超級計算機的高性能運算(HPC)能力
2.高性能運算羣集的高性能依賴於"分佈式運算”、“並行計算” ,通過專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起,實現只有大型、超級計算機才具備的計算能力

負載均衡羣集工作模式分析

負載均衡羣集是目前企業用得最多的羣集類型

羣集的負載調度技術有三種工作模式:

1.地址轉換
2.IP隧道
3.直接路由(DR)

NAT模式

地址轉換(Network Address Translation):

1.簡稱NAT模式,類似於防火牆的私有網絡結構,負載調度器作爲所有服務器節點的網關,即作爲客戶機的訪問入口,也是各節點回應客戶機的訪問出口
2.服務器節點使用私有IP地址,與負載調度器位於同一個物理網絡,安全性要優於其他兩種方式

TUN模式

IP隧道(IP Tunnel):

1.簡稱TUN模式,採用開放式的網絡結構,負載調度器僅作爲客戶機的訪問入口,各節點通過各自的Internet連接直接回應客戶機,而不再經過負載調度器
2.服務器節點分散在互聯網中的不同位置,具有獨立的公網IP地址,通過專用IP隧道與負載調度器相互通信

DR模式

直接路由(Direct Routing)

1.簡稱DR模式,採用半開放式的網絡結構,與TUN模式的結構類似,但各節點並不是分散在各地,而是與調度器位於同一個物理網絡
2.負載調度器與各節點服務器通過本地網絡連接,不需要建立專用的IP隧道

負載均衡羣集架構

負載均衡的結構

1.第一層,負載調度器(Load Balancer或Director)
2.第二層,服務器池(Server Pool)
3.第三層,共享存儲(Share Storage)

LVS的負載調度算法

1.輪詢(Round Robin):

1.將收到的訪問請求按照順序輪流分配給羣集中的各節點(真實服務器)
2.均等地對待每一臺服務器, 而不管服務器實際的連接數和系統負載

2.加權輪詢(Weighted Round Robin):

1.根據真實服務器的處理能力輪流分配收到的訪問請求,調度器可以自動查詢各節點的負載情況,並動態調整其權重
2.保證處理能力強的服務器承擔更多的訪問流量**

3.最少連接(Least Connections)

根據真實服務器已建立的連接數進行分配,將收到的訪問請求優先分配給連接數最少的節點

4.加權最少連接(Weighted Least Connections)

1.在服務器節點的性能差異較大的情況下,可以爲真實服務器自動調整權重
2.權重較高的節點將承擔更大比例的活動連接負載

NFS共享存儲服務

Network File System,網絡文件系統

1.依賴於RPC (遠端過程調用)
2.需安裝nfs-utils、rpcbind軟件包
3.系統服務: nfs、 rpcbind
4.共享配置文件: /etc/exports

在客戶機中訪問NFS共享資源

1.安裝rpcbind軟件包,並啓動rpcbind服務
2.手動掛載NFS共享目錄
3.fstab自動掛載設置

實驗環境部署

CentOS 7-1:調度器及網關(兩塊網卡)         外網(ens36):12.0.0.1      內網(ens33):192.168.200.1

CentOS 7-2:網站服務器(Apache)                192.168.200.110

CentOS 7-3:網站服務器(Apache)                192.168.200.120

CentOS 7-4:共享存儲服務器                  192.168.200.130

Windows 7 : 客戶端                             12.0.0.12

第一步:在每臺服務器上安裝服務軟件包

1.在調度器服務器上安裝ipvsadm管理工具

#要先添加一個網絡適配器,成爲兩個網卡
#安裝ipvsadm管理工具
[root@localhost ~]# yum install ipvsadm -y

2.在兩臺web節點服務器上的操作

#安裝httpd服務
[root@localhost ~]# yum install httpd -y

3.在共享存儲服務器上的操作

#使用rpm查詢是否有nfs-utils和rpcbind軟件包
[root@localhost ~]# rpm -q nfs-utils
nfs-utils-1.3.0-0.48.el7.x86_64
[root@localhost ~]# rpm -q rpcbind
rpcbind-0.2.0-42.el7.x86_64

第二步:配置共享存儲服務器

#修改ens33網卡配置
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" #將dhcp改爲static
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.200.130 #在末行下追加:IP地址,子網掩碼和網關
NETMASK=255.255.255.0
GATEWAY=192.168.200.1

#重啓網絡服務
[root@localhost ~]# systemctl network restart

#關閉防火牆和安全功能
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0

#開啓nfs共享服務
[root@localhost ~]# systemctl start nfs.service
[root@localhost ~]# systemctl start rpcbind.service

#編輯共享目錄配置文件
[root@localhost ~]# vim /etc/exports

#寫入共享目錄條目,並授予讀寫權限
/usr/share *(ro,sync)
/opt/accp 192.168.200.0/24(rw,sync)
/opt/kgc 192.168.200.0/24(rw,sync)

[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir kgc accp
[root@localhost opt]# chmod 777 kgc/ accp/ #提升目錄權限

[root@localhost opt]# exportfs -rv #進行發佈共享目錄
exporting 192.168.200.0/24:/opt/kgc
exporting 192.168.200.0/24:/opt/accp
exporting *:/usr/share

第三步:配置Web1節點服務器

#修改ens33網卡配置
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" #將dhcp改爲static
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.200.110 #追加IP地址,子網掩碼以及網關
NETMASK=255.255.255.0
GATEWAY=192.168.200.1

#重啓服務
[root@localhost ~]# systemctl network restart

#關閉防火牆和安全功能
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# netstat -ntap | grep 80
tcp6 0 0 :::80 ::: LISTEN 7315/httpd
[root@localhost ~]# ping 192.168.200.130
PING 192.168.200.130 (192.168.200.130) 56(84) bytes of data.
64 bytes from 192.168.200.130: icmp_seq=1 ttl=64 time=0.754 ms
64 bytes from 192.168.200.130: icmp_seq=2 ttl=64 time=0.372 ms
64 bytes from 192.168.200.130: icmp_seq=3 ttl=64 time=0.372 ms
64 bytes from 192.168.200.130: icmp_seq=3 ttl=64 time=0.372 ms
[root@localhost ~]# showmount -e 192.168.200.130
Export list for 192.168.200.130:
/usr/share

/opt/kgc 192.168.200.0/24
/opt/accp 192.168.200.0/24

#掛載網站
[root@localhost ~]# mount.nfs 192.168.200.130:/opt/kgc /var/www/html/

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo "this is kgc web" > index.html
[root@localhost html]# ls
index.html

第四步:確認存儲服務器上查看有無站點文件

[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
kgc accp rh

[root@localhost opt]# cd kgc/
[root@localhost accp]# cat index.html
this is kgc web

第五步:驗證Web1節點服務器提供的網頁

LVS負載均衡羣集

第六步:配置Web2節點服務器上

#修改ens33網卡配置
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" #將dhcp改爲static
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.200.120 #追加IP地址,子網掩碼以及網關
NETMASK=255.255.255.0
GATEWAY=192.168.200.1

[root@localhost ~]# systemctl network restart
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# netstat -ntap | grep 80
tcp6 0 0 :::80 ::: LISTEN 7315/httpd
[root@localhost ~]# ping 192.168.200.130
PING 192.168.200.130 (192.168.200.130) 56(84) bytes of data.
64 bytes from 192.168.200.130: icmp_seq=1 ttl=64 time=0.853 ms
64 bytes from 192.168.200.130: icmp_seq=2 ttl=64 time=0.853 ms
64 bytes from 192.168.200.130: icmp_seq=3 ttl=64 time=0.624 ms
64 bytes from 192.168.200.130: icmp_seq=3 ttl=64 time=0.624 ms
[root@localhost ~]# showmount -e 192.168.200.130
Export list for 192.168.200.130:
/usr/share

/opt/kgc 192.168.200.0/24
/opt/accp 192.168.200.0/24
[root@localhost ~]# mount.nfs 192.168.200.130:/opt/accp /var/www/html/

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# echo "this is accp web" > index.html
[root@localhost html]# cat index.html
this is accp web

第七步: 確認存儲服務器上查看有無站點文件

[root@localhost ~]# ls /opt/
kgc accp rh
[root@localhost opt]# cd accp/
[root@localhost accp]# cat index.html
this is accp web

第八步:驗證Web2節點服務器提供的網頁

LVS負載均衡羣集

第九步:配置調度服務器

#修改ens33網卡配置
[root@localhost network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" #將dhcp改爲static
DEVICE="ens33"
ONBOOT="yes" #追加IP地址,子網掩碼以及網關
IPADDR=192.168.200.1
NETMASK=255.255.255.0

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-ppp ifup-ib ifup-Team
ifcfg-lo ifdown-routes ifup-ippp ifup-TeamPort
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36

#修改ens36網卡
[root@localhost network-scripts]# vim ifcfg-ens36
BOOTPROTO="static" #將dhcp改爲static
NAME="ens36" #改名稱爲ens36
UUID號刪除
DEVICE="ens36" #改名稱改爲ens36
ONBOOT="yes"
IPADDR=12.0.0.1 #追加IP地址,子網掩碼以及網關
NETMASK=255.255.255.0

[root@localhost network-scripts]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" #將dhcp改爲static
DEVICE="ens33"
ONBOOT="yes" #追加IP地址,子網掩碼以及網關
IPADDR=192.168.200.1
NETMASK=255.255.255.0

[root@localhost network-scripts]# systemctl network restart
[root@localhost network-scripts]# vim /etc/sysctl.conf
#在尾行行追加一下條目
net.ipv4.ip_forward=1

#加載路由轉發
[root@localhost network-scripts]# sysctl -p
net.ipv4.ip_forward = 1

[root@localhost network-scripts]# iptables -t nat -F
[root@localhost network-scripts]# iptables -F

#配置SNAT轉發規則
[root@localhost network-scripts]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.200.0/24 -j SNAT --to-source 12.0.0.1

第十步:加載LVS內核模塊

[root@localhost network-scripts]# modprobe ip_vs
[root@localhost network-scripts]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn

第十一步:保存配置項並啓動服務

#將設置進行保存
[root@localhost network-scripts]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@localhost network-scripts]# systemctl start ipvsadm.service

#配置負載分配策略
[root@localhost network-scripts]# cd /opt/
[root@localhost opt]# vim nat.sh
#!/bin/bash
#清除內核虛擬服務器表中的所有記錄
ipvsadm -C

#添加新的虛擬服務器
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.110:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.200.120:80 -m

#生效負載分配策略
[root@localhost opt]# source nat.sh
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost.localdomain:http rr
-> 129.168.200.110:http Masq 1 0 0
-> 129.168.200.120:http Masq 1 0 0

第十二步:使用Windows 7 客戶終端訪問網頁

1.首次訪問到由Web1訪問器提供的網頁
LVS負載均衡羣集

2.刷新網頁後,出現由Web2服務器提供的網頁
LVS負載均衡羣集

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