1、lvs集群:
-
lvs:linux virtual server----章文嵩發起的開源項目,阿里。linux的內核層面實現負載均衡的軟件。
-
主要作用:將多個后端服務器組成一個高可用,高性能的服務器集群,通過負載均衡的算法將客戶端的請求分發到后端的服務器上,來實現高可用和負載均衡。
-
阿里的SLB:server load balance----lvm+keepalive實現的。
2、集群和分布式:
2.1、系統的拓展方式:
-
垂直擴展:向上擴展,增強,性能更強的計算機。瓶頸,計算機本身設備的限制,硬件本身的性能瓶頸。
-
水平擴展向外擴展,增加設備。并行的運行多個服務,依靠網絡解決內部通信問題,cluster 集群。
-
集群:為了解決某個特定的問題將計算機組合起來形成的單個系統。
2.2、集群的類型,三種類型:
1、LB:load balance負載均衡,多個主機組成,每個主機只承擔一部分的訪問請求。
2、HA:high availiablity高可用,在設計系統時,采取一定的措施,確保系統當中某一組件或者部分出現故障,整個系統依然能夠正常運行。為了維護系統的可用性,可靠性,容錯性。
3、HPC:high-performance computing 高性能 對響應時間,處理能力要求更高。
2.3、系統可靠性指標:
MTBF:Mean time Between Failure
平均無故障時間
MTTR:Mean time Resotration repair
平均故障恢復時間
A=MTBF/(MTBF+MTTR)
0-1
A指標0-1之間,A指標就是系統可用性的度量,0表示系統越不可用,1表示系統越可以用。
A指標要無線接近于1.
99.99%
都是以小時為單位
1年365天=8760小時
90(1-90%)*365=36.5天99 8760**1%=87.6小時
99.9999=31秒
99.99%=======52.6分鐘
停機時間:計劃內時間,計劃內的時間開以忽略不計。但是現在也算在內。
計劃外時間,故障時間,從故障發生到故障解決的總時間,尤其是運維,計劃外時間是我們必須關注的一個指標。
某某-----當天事必須當天解決----沒有解決之間,人是不可用離開的-------解決完之后必須生成報告,備案。
日報,周報,月報,年報。
運維精神:7*24小時待命(及時響應,及時處理,及時總結。)
2.4、lvs適用場景:
-
小集群不需要使用lvs,大集群使用lvs。
-
lvs集群中的術語
-
VS: virtual server:lvs服務的邏輯名稱,也就是我們外部訪問lvs集群時使用的ip地址和端口。
-
DS: Director Server :lvs集群中的主服務器,也就是調度器(nginx的代理服務器)是集群的核心
-
調度服務器就是用來接收客戶端的請求轉發到后端的服務器。
-
RS: Real Server:lvs集群中的真實服務器,后端服務器,用來接收DS轉發來的請求,并響應結果。
-
CIP:Client ip :客戶端的地址,發起請求的客戶端地址。
-
VIP:virtual Ip :lvs集群使用的ip地址,對外提供集群訪問的虛擬ip地址。
-
DIP:Director ip :調度器在集群中的地址,用于和RS通信。
-
RIP:Real ip :后端服務器在集群當中的ip地址。
2.5、lvs的工作模式:
-
NAT
模式:由調度器響應給客戶端 -
DR
模式:直接路由模式,真實服務器直接響應給客戶端 -
TUN
:隧道模式----電信公司DNS提供 -
常用的模式:
NAT
和DR
模式
2.5.1、NAT模式
nat模式是常用的lvs的模式之一。
在nat模式下,lvs會將來自客戶端的請求報文中的目標ip地址和端口,修改為lvs內部的ip地址和端口,然后把請求轉發到后端服務器。
響應結果返回客戶端的過程中,響應報文經過lvs的處理,把目標ip和端口修改成客戶端的ip地址和端口。
好處
:在于,對于客戶端來說,請求的目標地址始終不變,客戶端的配置不需要做特殊的修改,只需調度器再對ip和端口進行轉換,后端的服務端也不需要更改任何配置。
缺點
:性能損失,請求和響應都需要調度器做地址轉換,影響性能,nat模式只要有一個調度器,調度器故障,整個集群就不能正常工作。
地址轉換:
內網----外網 轉換的源ip地址 snat
外網----內網 轉換的目的ip地址 nat
1、客戶端發起請求,訪問vip地址,到達調度器
2、調度器接收到請求之后,根據負載均衡算法選一個后端服務器。
3、請求的地址,轉成可以直接和內部RS通信的IP地址。
4、后端服務器處理請求。
5、目的的地址轉換,轉換vip地址
6、調度器的vip地址響應給客戶端
外網到內網–12.0.0.10-----12.0.0.1------192.168.168.10
內網到外網–192.168.168.0/24-----12.0.0.1-----12.0.0.10----需要地址轉換
iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1
2.6、lvs的工具
2.6.1、ipvsadm 工具,用來配置和管理lvs集群的工具。
-
-A 添加虛擬服務器 vip
-
-D 刪除虛擬服務器地址
-
-s指定負載均衡的調度算法
-
-a 添加真實服務器
-
-d 刪除真實服務器
-
-t 指定vip的地址和端口
-
-r 指定rip的地址和端口
-
-m使用nat模式
-
-g 使用DR模式
-
-i 使用隧道模式
-
-w 設置權重
-
-p 60:連接保持60設置保持時間
-
-l:列表查看
-
-n:數字化展示
-
-m指定模式為nat模式
2.6.2、算法
-
rr默認,輪詢
-
加權輪詢:wrr
-
最小連接:lr
-
加權最小連接:wlc
2.6.3、操作
ipvsadm -C—#清空原有的策略
ipvsadm -A -t 12.0.0.1:80 -s rr------#指定好的vip的地址和端口
ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m—#先添加vip,虛擬服務器的ip和端口,然后再添加真實服務器
ipvsadm -D -t 192.168.168.50:80----#刪除策略
ipvsadm -D -t 192.168.168.50:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80----###刪除節點服務器
ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 rr-> 192.168.168.10:80 Masq 1 0 0
開啟路由轉發:
vim /etc/sysctl.conf net.ipv4.ip_forward=1[root@test5 opt]# sysctl -p
net.ipv4.ip_forward = 1
3、NAT集群實驗
3.1、rr配置
nginx1 :192.168.168.10
nginx2:192.168.168.20
test5:調度器 ens33:192.168.168.50 ens36 :12.0.0.1
test6 客戶端12.0.0.10
test5:
安裝ipvsadm工具
yum -y install ipvsadm* -y
添加網卡
[root@test5 network-scripts]# cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens33TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.50
NETMASK=255.255.255.0
#GATEWAY=192.168.168.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69
vim ifcfg-ens36TYPE=Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.1
NETMASK=255.255.255.0
#GATEWAY=192.168.168.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69
systemctl restart network
nginx1修改網卡中的網關指向調度器的ip(即網關)
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.10
NETMASK=255.255.255.0
GATEWAY=192.168.168.50
DNS1=218.2.135.1
DNS2=221.131.143.69
vim /usr/local/nginx/html/index.htmlthis is nginx1
nginx2修改網卡中的網關指向調度器的ip(即網關)
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.168.20
NETMASK=255.255.255.0
GATEWAY=192.168.168.50
DNS1=218.2.135.1
DNS2=221.131.143.69
vim /usr/local/nginx/html/index.htmlthis is nginx2
test5配置:
內網到外網—出去做地址轉換
iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1
ipvsadm -C
—#清空原有的策略
ipvsadm -A -t 12.0.0.1:80 -s rr
-----指定好的vip的地址和端口
先添加vip,虛擬服務器的ip和端口,然后再添加真實服務器:
ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m
-a 添加真實服務器
-t 指定vip地址
-r 指定真實服務器的地址和端口
-m指定模式為nat模式
ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m
[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 rr-> 192.168.168.10:80 Masq 1 0 0 -> 192.168.168.20:80 Masq 1 0 0 [root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# systemctl restart ipvsadm
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.168.50:80 rr-> 192.168.168.10:80 Masq 1 0 0 -> 192.168.168.20:80 Masq 1 0 0
刪除策略
ipvsadm -D -t 192.168.168.50:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
重新保存
[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 rr-> 192.168.168.10:80 Masq 1 0 0 -> 192.168.168.20:80 Masq 1 0 0
[root@test5 opt]# systemctl restart ipvsadm
[root@test5 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 rr-> 192.168.168.10:80 Masq 1 0 0 -> 192.168.168.20:80 Masq 1 0 0
刪除節點服務器
ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 rr-> 192.168.168.10:80 Masq 1 0 0
開啟路由轉發:
vim /etc/sysctl.conf net.ipv4.ip_forward=1[root@test5 opt]# sysctl -p
net.ipv4.ip_forward = 1
簡單的全部完成。
test6:
需要改網關和ip地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33 ##更改網關指向路由TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.10
NETMASK=255.255.255.0
GATEWAY=12.0.0.1
DNS1=218.2.135.1
DNS2=221.131.143.69
外網到內網–12.0.0.10-----12.0.0.1------192.168.168.10
net.ipv4.ip_forward=1,可以進行轉發
內網到外網192.168.168.10-----12.0.0.1-------12.0.0.10
做地址轉換進行訪問
3.2、wrr加權算法
第二個,刪除rr算法,
ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 rr-> 192.168.168.10:80 Masq 1 0 0 -> 192.168.168.20:80 Masq 1 0 0
[root@test5 opt]# ipvsadm -D -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
添加wrr權重算法
[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s wrr
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 wrr
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m -w 2
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 2
[root@test5 opt]# ipvsadm -d -r 192.168.168.20:80 -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 wrr-> 192.168.168.10:80 Masq 2 0 0
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 1
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 wrr-> 192.168.168.10:80 Masq 2 0 0 -> 192.168.168.20:80 Masq 1 0 0
測試結果
3.3、設置wlc最小連接數加權算法
[root@test5 opt]# ipvsadm -D -t 12.0.0.1:80
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@test5 opt]# ipvsadm -A -t 12.0.0.1:80 -s wlc
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 wlc
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.10:80 -m -w 2
[root@test5 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.168.20:80 -m -w 1
[root@test5 opt]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 12.0.0.1:80 wlc-> 192.168.168.10:80 Masq 2 0 0 -> 192.168.168.20:80 Masq 1 0 0
創建vip地址的時候才能指定負載均衡算法,不是在真實服務器上添加算法。
test5做地址轉換:
iptables -t nat -vnL
----查看nat地址轉換策略表
iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o ens36 -j SNAT --to 12.0.0.1
ipvsadm -a-t 12.0.0.1:80-r192.168.233.61:80 -m
-a
添加真實服務器
-t
指定vip地址
3.4、增加理解
在探討外網訪問內網與內網訪問外網時,是否需要開啟轉發功能或地址轉換,我們首先要明確幾個基本概念和它們在網絡通信中的作用。### 外網訪問內網,開啟轉發功能,不需要地址轉換當外網需要訪問內網時,通常涉及到的是網絡訪問控制和路由策略。在某些情況下,如使用VPN(虛擬私人網絡)或端口轉發等技術,可以實現外網直接訪問內網資源,而無需進行地址轉換。這是因為VPN等技術可以在不暴露內網實際IP地址的情況下,為外網用戶提供一條安全的通道來訪問內網資源。同樣,端口轉發可以將外網對特定端口的訪問請求轉發到內網中的特定設備或服務上,而無需改變IP地址。### 內網訪問外網,為什么需要地址轉換1. 內網與公網的隔離:- 內網通常是指被NAT(網絡地址轉換)隔離起來的私有地址空間,這些地址在Internet上是不可見的,也無法被直接路由。- 公網則是指全球互聯網上分配的全局IP地址空間,任何設備只要具有公網IP地址,就可以被Internet上的其他設備訪問。
2. IP地址的稀缺性:- 由于IPv4地址的稀缺性,不可能為每個內網設備分配一個獨立的公網IP地址。因此,需要通過NAT技術將內網設備的私有IP地址轉換為公網IP地址,以實現與外部網絡的通信。
3. 安全性和隱私性:- NAT技術還可以在一定程度上提供安全性和隱私保護。通過隱藏內網設備的真實IP地址,可以防止外部網絡對內網設備的直接攻擊和掃描。
4. 通信的必要性:- 內網中的設備,如企業內部的服務器或終端用戶,有時需要訪問外部網絡或互聯網上的資源。為了實現這種訪問,必須進行地址轉換,以便將內網設備的私有IP地址轉換為公網IP地址,從而通過Internet進行通信。綜上所述,內網訪問外網需要地址轉換的原因主要是由于內網與公網的隔離、IP地址的稀缺性、安全性需求以及通信的必要性。NAT技術通過在內網出口設備上部署,實現了內網設備私有IP地址到公網IP地址的轉換,從而解決了內網設備訪問外部網絡的問題。