lvs:根據(jù)請求報(bào)文的目標(biāo) 地址端口協(xié)議,調(diào)度轉(zhuǎn)發(fā)到后端主機(jī)real server ,根據(jù)調(diào)度算法挑選rs。
ipvs是用戶空間命令行工具,用于管理集群服務(wù),及real server,? ? ? 在調(diào)度器上安裝ipvs? ? ?yum install? ?ipvs
vip:接收客戶端的請求。? ? ? ? ? ? ? ? ?dip:與rip通信的私網(wǎng)地址。? ? ? ? ? ? rip:后端真實(shí)的server。。
cip:客戶ip。。? ? ? ? ? ??
lvs集群類型:1.lvs-nat:修改請求報(bào)文的的目標(biāo)ip多目標(biāo)ip,的dnat。
? ?2,? lvs-dr:操作封裝請求新的mac地址。
3,lvs-tun:在請求ip報(bào)文之外新加一個(gè)新的IP首部,
4,lvsfullnat:修改請求源和目標(biāo)ip。。
lvs-nat:多目標(biāo)的DNAT,通過將請求的報(bào)文目標(biāo)地址和目標(biāo)端口修改為某天選的rip和port實(shí)現(xiàn)轉(zhuǎn)發(fā)。
rip和dip必須在同一網(wǎng)絡(luò),且應(yīng)該使用私網(wǎng)地址,rs網(wǎng)關(guān)指向dip
請求和響應(yīng)報(bào)文經(jīng)由directory轉(zhuǎn)發(fā),directory義形成系統(tǒng)瓶頸,
支持端口映射可修改請求報(bào)文的目標(biāo)port,vs是linux系統(tǒng),rs可是任意系統(tǒng)。。。
lvs-dr: 通過請求報(bào)文重新封裝mac首部,進(jìn)行轉(zhuǎn)發(fā),源mac是dip所在的接口mac,目標(biāo)mac是某挑選的rs的rip所在mac地址,? ? ? ? 源ip端口和目標(biāo)端口均保持不變,,
directory和各rs都得配置vip:
在內(nèi)核修改參數(shù)以限制arp通告和應(yīng)答,,arp_announce限制通報(bào)為2,,,aip_ignore限制應(yīng)答為1,,,
rip可使用公網(wǎng)地址和私網(wǎng)地址,單rip和dip要在同一網(wǎng)絡(luò),rip網(wǎng)關(guān)不能指向dip,以確保響應(yīng)報(bào)文不經(jīng)由directory。 請求報(bào)文經(jīng)由directory,? 不支持端口映射,,
lvs-tun:轉(zhuǎn)發(fā)方式;不修改請求報(bào)文的ip首部,而在ip報(bào)文之外在封裝一個(gè)ip首部,(源ip為dip,目標(biāo)ip為rip)
將報(bào)文發(fā)往挑選出的rs,? ? ? rs直接響應(yīng)給客戶端,,,
dip,vip,rip 都應(yīng)該是公網(wǎng)地址,,,
rs網(wǎng)關(guān)不能指向dip,? ? ? ? ? ?請求報(bào)文經(jīng)由directory,但響應(yīng)報(bào)文不能經(jīng)由directory
不支持端口映射,,,rs的os得支持隧道功能,,
lvs-fullnat:通過同時(shí)修改請求報(bào)文的源ip地址和目標(biāo)ip地址進(jìn)行轉(zhuǎn)發(fā),
vip是公網(wǎng)地址rip和dip是私網(wǎng)地址,且通常不在同一ip網(wǎng)絡(luò),rip網(wǎng)關(guān)通常不會指向dip
rs收到的請求報(bào)文源地址是dip,只響應(yīng)給dip但directory還就將其轉(zhuǎn)發(fā)給client,
請求報(bào)文和響應(yīng)報(bào)文都經(jīng)由directory
總結(jié):lvs-nat和lvs-fullnat請求報(bào)文和響應(yīng)報(bào)文都經(jīng)由directory,
lvs-nat網(wǎng)關(guān)要指向directory,
lvs-fullnat:rip和dip未必能在同一網(wǎng)絡(luò),但要能通信,
lvs-dr,lvs-tun;請求報(bào)文要經(jīng)由directory但響應(yīng)報(bào)文由rs直接發(fā)往client,
lvs-dr:通過封裝通過封裝新的mac首部實(shí)現(xiàn),通往mac網(wǎng)絡(luò)轉(zhuǎn)發(fā),
lvs-tun:通過源ip報(bào)文之外封裝新的ip首部實(shí)現(xiàn)轉(zhuǎn)發(fā)支持遠(yuǎn)距離通信,
lvs的調(diào)度算法:
靜態(tài)調(diào)度算法:rr輪詢:? wrr加權(quán)輪詢,,
sh:來自同一ip地址的請求,將其轉(zhuǎn)發(fā)調(diào)度第一次匹配到的rs
dh:發(fā)往同一地址的請求,將其調(diào)度轉(zhuǎn)發(fā)至第一次匹配的rs,
動態(tài)方法:
lc:最少鏈接;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?wlc:加權(quán)最少鏈接。
sed:最短期望延遲,,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lblc:動態(tài)dh算法。? ? ? lblcr:帶復(fù)制功能的lblc算法。。
集群的定義:? ipvsadm? ? ? ? ? ? ? ? ? ? ?在directory安裝ipvsadm
ipvsadm? -A? ? ?-E? |? -t? ? -f? ?-s? ?-p? ? ? ? ? ? ? ? ? ? (定義集群類型)
-A 添加;;;? ? ? ? ? ? ? ?-E:編輯修改集群,,? ? ?-t;指定類型 t是tcp協(xié)議類型? ? ? -u:指定udp協(xié)議類型。
-s:指定調(diào)度算法? 默認(rèn)wlc 加權(quán)最少鏈接。? ? ? ? ?-p:啟動持久鏈接功能 默認(rèn)為65秒,,,
-f:指定防火墻標(biāo)記。。。
示列: ipvsadm -A? -t 192.168.0.99:80 -s rr
管理集群的rs:;;
ipvsadm? -a? ?|-e? ? -t? ? ?|-u? ?-f? ? -r? server-address? ? ?-g(dr類型)? ? ? -m(nat類型)? ? ?-i(tun類型)? ?-w(權(quán)重)
示列:? ?ipvsadm -a -t 192.168.0.99:80 -r 192.168.0.6 -m
查看:ipvsadm? ? ?-Ln
-n:地址和端口輸出? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--exact:展示數(shù)字顯示精確值。。。
-c:顯示鏈接狀態(tài)。。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--stats:統(tǒng)計(jì)數(shù)據(jù)
--rate:速率數(shù)據(jù)。。。
ipvsadm? -ln --stats:? ?查看統(tǒng)計(jì)數(shù)據(jù)? ? ? ? ? ? ? ? ? ?conns:鏈接數(shù)。? ? ? ? ? ? ? ? ? ? ? ? inpkts:入站報(bào)文數(shù)
outpkts:出站報(bào)文數(shù),? ? ? ? ? ? ? ? ? ? ?inbytes:入站字節(jié)數(shù),,,? ? ? ? ? outbytes:出站字節(jié)數(shù)。。
ipvsadm? ?-ln? ?-c :查看誰請求鏈接過。
ipvsadm -ln? ?--rate:查看速率:? ? ? ? ? ?cps是每秒建立的連接數(shù),? ? ? ? ? ? ? ? ?inpps:每秒入站的報(bào)文數(shù)
inbps:每秒入站的字節(jié)數(shù),,,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?outbps:每秒出站的字節(jié)數(shù)。。。
ipvsadm -S -n? >? /etc/sysconfig/ipvsadm? ? ? ?保存規(guī)則;
ipvsadm? -R? ?<? ?/etc/sysconfig/ipvsadm? ? ? ? 還原
lvs- nat類型:配置? ? ? ? ? ? ? ? sysctl? -w? ? net.ipv4.ip_forward=1? ? ?打開核心轉(zhuǎn)發(fā)。。。
rip和dip在同一網(wǎng)絡(luò)。 rs網(wǎng)關(guān)指向dip,vs主機(jī)打開核心轉(zhuǎn)發(fā)。。()
vs主機(jī)可來自外網(wǎng)的客戶端訪問,-t? tcp協(xié)議地址指向vs的外網(wǎng)地址。
ipvsadm -A -t 192.168.1.5:80? -s rr? ? ? 指定調(diào)度類型為輪詢。 -s? ?wrr 加權(quán)輪詢。。。。-t指定外網(wǎng)地址tcp協(xié)議。。
ipvsadm -a? -t? 192.168.1.5:80? -r 192.168.237.6 -m? ? ? 指定后端主機(jī)? -m 類型為nat類型。。
ipvsadm -a? -t? 192.168.0.5:80? -r? 192.168.237.9? -m? ? ? ??
如果rs都宕了指定本機(jī)接收請求:ipvsadm -a -t 192.168.0.5:80 -r 127.0.0.1 -g
dr類型配置:? ?dr模型每個(gè)主機(jī)需要配置vip, ,在各rs限制arp廣播通告,出站和入站經(jīng)過lo:0。。在lvs調(diào)度器上配置虛擬網(wǎng)卡接口為? ens33:0。(arp_ignore忽略應(yīng)答為1,, arp_announce忽略通告為2,)。各rs請求經(jīng)過vs主機(jī)。。。應(yīng)答不需要經(jīng)過vs主機(jī)。。? ?rs的rip可使用私網(wǎng)地址,也可使用公網(wǎng)地址。rip與dip在同一網(wǎng)絡(luò)。rip網(wǎng)關(guān)不能指向dip。
rs主機(jī)IP為:192.168.0.5? ? ? ? ? ? ? ? ? ?虛擬ip為:192.168.0.99
rs主機(jī)為:192.168.0.6 和 192.168.0.9
1.先在個(gè)主機(jī)配置虛擬ip,,
lvs主機(jī):;? ? ?ifconfig ens33:0 192.168.0.99 netmask 255.255.255.255 broadcast 192.168.0.99 up
rs主機(jī):ifconfig lo:0 192.168.0.99 netmask 255.255.255.255 broadcast 192.168.0.99 up
2. 在每個(gè)real server上配置禁止應(yīng)答和禁止通告。。/proc/sys/net/ipv4/conf/all/(arp_announce為1和arp_ignore為2)
3.? 在lvs主機(jī)配置集群調(diào)度:
ipvsadm -A? -t? 192.168.0.99:80? -s? rr? ? 配置-t指定tcp協(xié)議虛擬ip。 -s 指定調(diào)度算法輪詢。。
ipvsadm -a -t 192.168.0.99:80? -g? ? ?指定虛擬ip? ? -g類型為dr類型。
ipvsadm -a? ?-t? ?192.168.0.99:80? ?-g? ? ? ??
配置80和443端口綁定:
ipvs代理指定80端口和443一塊代理請求?;诜阑饓angle表打標(biāo)功能.。。
配制ssl加密,沒有ssl.conf 配置文件安裝mod_ssl模塊。。
在ca上配置創(chuàng)建公鑰,切換到1 、/etc/pki/CA目錄。。(umask 077; openssl genrsa -out? private/cakey.pem? 2048)
?openssl req -new? -x509? ?-key? private/cskey.pem -out? cacert.pem -days 365? ? ?配置公鑰
創(chuàng)建文件:touch? index.txt? ? ? ? ? ? ? ? ? echo 01 >? serial
2.在rs上配置私鑰,(umask 077; openssl genrsa -out httpd.key 2048)
openssl req -new -key httpd.key -out httpd.csr? ?
把配置的私鑰httpd.csr? 傳給 ca讓簽署:scp? ?httpd.csr? ?192.168.0.5:/tmp? ?
3,CA簽署:openssl ca -in htpd.csr? -out httpd.crt? -days? 365
配置完成后把ca的簽署的證書httpd.crt 發(fā)給rs:? ? ? ? 后端服務(wù)器httpd.crt和自己的httpd.key放置自己的網(wǎng)頁目錄,然后配置/etc/httpd/conf.d/ssl.conf 文件。。
配置ssl.conf文件。。

指定簽署的證書和私鑰位置。。

在vs配置防火墻標(biāo)記。
iptables -t mangle -A PREROUTING -d 192.168.0.99 -p tcp -m multiport --dport 80,443 -j MARK --set-mark 3
然后配置集群類型:? ?ipvsadm -A? -f? 3? ?-s? ?rr? ? 防火墻標(biāo)記指定三。調(diào)度類型為輪詢。。
ipvsadm -a? -f? 3? -r? 192.168.0.6? -g? ? ?添加真實(shí)的server,指定類型為dr? ? -g
ipvsadm -a? -f? 3? -r? 192.168.0.9? ?-g? ?
lvs? persistence:? 持久鏈接。。? 實(shí)現(xiàn)無論使用任何調(diào)度算法,在一段時(shí)間內(nèi)能夠?qū)崿F(xiàn)將,來自同一ip的主機(jī),始終發(fā)往同一個(gè)rs。。? ?-p? ? 就是啟用持久鏈接功能。。
ipvsadm -A |E? -t? |u? | -f? ?server-address | [-s? scheduler]? [-p? ]
基于防火墻的持久鏈接:? ?ipvsadm -A? -f? ?3? -s? ?rr? -p? ? ? ?持久鏈接默認(rèn)為360秒。
每個(gè)客戶端持久鏈接,0端口定義集群服務(wù),客戶端對所有的請求統(tǒng)統(tǒng)調(diào)度后端主機(jī),,
ipvsadm -A? -t? ?192.168.0.99:0? -s rr? -p? ? ?