柚子快報邀請碼778899分享:lvs集群
柚子快報邀請碼778899分享:lvs集群
lvs集群:
linux virtual server
章文嵩發(fā)起的開源項目,阿里。Linux的內(nèi)核層面實現(xiàn)負載均衡的軟件。
主要作用:將多個后端服務器組成一個高可用,高性能的服務器集群,通過負載均衡的算法將客戶端的請求,分發(fā)到后端服務器上。
來實現(xiàn)高可用和負載均衡。
阿里的SLB
server loab balance lvs+keepalive 實現(xiàn)的。
集群和分布式:
系統(tǒng)的拓展方式:
垂直擴展:向上擴展,增強,性能更強的計算機。計算機本身設(shè)備的限制,硬件本身的性能瓶頸。
水平擴展:向外擴展,增加設(shè)備。并行的運行多個服務,依靠網(wǎng)絡解決內(nèi)部通信的問題,cluster 集群。
集群:為了解決某個特定的問題將多臺計算機組合起來形成的單個系統(tǒng)。
集群的類型,三種類型:
LB:load balance 負載均衡集群,多個主機組成,每個主機只承擔一部分的訪問請求。
HA:high availiablity 高可用,在設(shè)計系統(tǒng)時,采取一定的措施,確保系統(tǒng)當中某一組件或者部分出現(xiàn)故障,整個系統(tǒng)依然能夠正常的運行。為了維護系統(tǒng)的可用性,可靠性,容錯性。
HPC:high-performance computing 高性能 對響應時間,處理能力要求更高。
系統(tǒng)可靠性指標:
MTBF:Mean Time Between Failure 平均無故障時間
MTTR:Mean Time Resotration Reoair 平均故障恢復時間
A=MTBF/(MTBF+MTTR) 范圍在0~1之間,A指標就是系統(tǒng)可用性的度量,0表示系統(tǒng)越不可用,1表示系統(tǒng)越可用。
A指標要無線接近于1。
99.99%
都是以小時為單位:
365天=8760小時
停機時間:
計劃內(nèi)時間,計劃內(nèi)的時間可以不計。但是現(xiàn)在也算在內(nèi)
計劃外時間,故障時間,從故障方式到故障解決的總時間,尤其是運維,計劃外時間是我們必須關(guān)注的一個指標。(當天事必須當天解決,沒有解決之前,人是不可以離開的,解決完之后必須生成報告,備案。)
運維精神:7*24小時待命(出了問題,及時響應,及時處理,及時總結(jié)。)
lvs適用場景:
小集群不需要使用lvs,大集群使用lvs。
lvs集群中的術(shù)語:
VS Vittual Server lvs服務的邏輯名稱,也就是我們外部訪問lvs集群時使用的IP地址和端口
DS Driector Server lvs集群中的主服務器,也就是調(diào)度器(nginx的代理服務器),是集群的核心
調(diào)度器就是用來接收客戶端的請求轉(zhuǎn)發(fā)到后端的服務器。
RS Real Server lvs集群中的真實fwq,后端服務器,用來接收DS轉(zhuǎn)發(fā)來的請求,并且響應結(jié)果。
CIP Client IP 客戶端的地址,發(fā)起請求的客戶端地址。
VIP Virtual IP lvs集群使用的ip地址,對外提供集群訪問的虛擬ip地址。
DIP Director IP 調(diào)度器在集群當中的地址,用于和RS進行通信
RIP Real IP 后端服務器在集群當中的IP地址。
lvs的工作方式:
NAT模式 由調(diào)度器響應給客戶端
DR模式(直接路由模式) 真實服務器直接響應給客戶端
TUN 隧道模式
常用的模式:NAT和DR模式
NAT模式:
nat模式是常用的lvs的模式之一。在nat模式下,lvs會將來自客戶端的請求報文中的目標IP地址和端口,修改為lvs內(nèi)部的IP地址和端口。然后把請求轉(zhuǎn)發(fā)到后端服務器。
響應結(jié)果返回客戶端的過程中,響應報文經(jīng)過lvs的處理,把目標ip和端口修改成客戶端的IP地址和端口。
好處在于,對于客戶端來說,請求的目標地址始終不變,客戶端的配置不需要做特殊修改,只是調(diào)度器再對IP地址和端口進行轉(zhuǎn)換,后端的服務器也不需要更改任何配置。
缺點在于,性能損失,請求和響應都需要調(diào)度器做地址轉(zhuǎn)換,影響性能,nat模式只能有一個調(diào)度器,調(diào)度器故障,整個集群就不能正常工作。
地址轉(zhuǎn)換:
內(nèi)網(wǎng)--------外網(wǎng) 轉(zhuǎn)換的源IP地址
外網(wǎng)--------內(nèi)網(wǎng) 轉(zhuǎn)換的目的地址
1、客戶端發(fā)起請求,訪問vip地址達到調(diào)度器
2、調(diào)度器接收到請求之后,根據(jù)負載均衡算法選一個后端服務器
3、請求的地址,轉(zhuǎn)成可以直接和內(nèi)部RS通信的IP地址
4、后端服務器處理請求
5、目的地址轉(zhuǎn)換,轉(zhuǎn)換成vip地址
6、調(diào)度器的vip響應給客戶端。
lvs的工具
ipvsadm工具,用來配置和管理lvs集群的工具
-A 添加虛擬服務器 vip
-D 刪除虛擬服務器地址
-s 指定負載均衡的調(diào)度算法
算法:
rr 默認輪詢
加權(quán)輪詢 wrr
最小連接 lc
加權(quán)最小連接 wlc
-a 添加真實服務器
-t 指定vip的地址和端口
-r 指定rip(真實)的地址和端口
-m 使用nat模式
-g 使用DR模式
-i 使用隧道模式
-w 設(shè)置權(quán)重
-p 設(shè)置連接保持時間 -p 60
-l 列表查看
-n 數(shù)字化展示
nat集群實驗:
操作:
1、在test7中安裝ipvsadm配置文件
[root@test7 ~]# yum -y install ipvsadm
2、配置網(wǎng)卡
[root@test7 ~]# cd /etc/sysconfig/network-scripts/
[root@test7 network-scripts]# cp ifcfg-ens33 ifcfg-ens36
ens33
[root@test7 network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.60.70
NETMASK=255.255.255.0
#GATEWAY=192.168.60.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69
ens36
[root@test7 network-scripts]# vim ifcfg-ens36
TYPE=Ethernet
DEVICE=ens36
ONBOOT=yes
BOOTPROTO=static
IPADDR=12.0.0.1
NETMASK=255.255.255.0
#GATEWAY=192.168.60.2
#DNS1=218.2.135.1
#DNS2=221.131.143.69
3、配置nginx1和nginx2的網(wǎng)卡
nginx1:
[root@test3 network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.60.30
NETMASK=255.255.255.0
GATEWAY=192.168.60.70
DNS1=218.2.135.1
DNS2=221.131.143.69
nginx2
[root@test4 network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.60.40
NETMASK=255.255.255.0
GATEWAY=192.168.60.70
DNS1=218.2.135.1
DNS2=221.131.143.69
4、更改nginx1和nginx2的靜態(tài)網(wǎng)頁頁面
nginx1
[root@test3 network-scripts]# vim /usr/local/nginx/html/index.html
this is test3
nginx2
[root@test4 network-scripts]# vim /usr/local/nginx/html/index.html
this is test4
5、在test7中指定表名創(chuàng)建策略
[root@test7 network-scripts]# iptables -t nat -A POSTROUTING -s 192.168.60.0/24 -o -ens36 -j SNAT --to 12.0.0.1
[root@test7 network-scripts]# iptables -t nat -vnL
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target ? ? prot opt in ? ? out ? ? source ? ? ? ? ? ? ? destination ? ? ? ?
? 0 ? ? 0 SNAT ? ? ? all -- * ? ? -ens36 192.168.60.0/24 ? ? 0.0.0.0/0 ? ? ? ? ? to:12.0.0.1
6、指定好vip的地址和端口
[root@test7 opt]# ipvsadm -A -t 12.0.0.1:80 -s rr
7、添加真實服務器
[root@test7 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.60.30:80 -m
[root@test7 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.60.40:80 -m
[root@test7 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.60.30:80 ? ? ? ? ? ? Masq ? 1 ? ? 0 ? ? ? ? 0 ? ? ? ?
-> 192.168.60.40:80 ? ? ? ? ? ? Masq ? 1 ? ? 0 ? ? ? ? 0 ?
8、保存并重啟策略
[root@test7 opt]# systemctl restart ipvsadm
[root@test7 opt]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@test7 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.60.30:80 ? ? ? ? ? ? Masq ? 1 ? ? 0 ? ? ? ? 0 ? ? ? ?
-> 192.168.60.40:80 ? ? ? ? ? ? Masq ? 1 ? ? 0 ? ? ? ? 0
9、開啟路由轉(zhuǎn)發(fā)的功能
[root@test7 opt]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
10、更改客戶端test8的網(wǎng)關(guān)配置
[root@test8 network-scripts]# vim 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
11、結(jié)果
設(shè)置權(quán)重:
1、創(chuàng)建權(quán)重策略
[root@test7 opt]# ipvsadm -A -t 12.0.0.1:80 -s wrr
[root@test7 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.60.30:80 -m -w 2
[root@test7 opt]# ipvsadm -a -t 12.0.0.1:80 -r 192.168.60.40:80 -m -w 1
[root@test7 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.60.30:80 ? ? ? ? ? ? Masq ? 2 ? ? 0 ? ? ? ? 0 ? ? ? ?
-> 192.168.60.40:80 ? ? ? ? ? ? Masq ? 1 ? ? 0 ? ? ? ? 0
2、結(jié)果
柚子快報邀請碼778899分享:lvs集群
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。