馬哥教育網絡班21期+第17周課程練習

1、結合圖形描述LVS的工作原理;

nat.jpg

lvs是基于內核的虛擬主機用來做四層的負載均衡,工作在netfilter框架的INPUT鏈上,有四種模式,上圖為lvs-nat

lvs-nat:有DNAT功能,支持端口映射,請求報文和響應報文都需要經過Director

請求過程:cip–>vip,Director,cip–>rip

響應過程:rip–>cip,gw dip Director,vip–>cip

條件和不足:vip公網ip,dir,rip都為私網地址且在相同網段的物理網絡中,Director可能會成為系統瓶頸

dr.jpg

lvs-dr:Director在接收到目的為vip的請求后,按算法挑一臺Realserver來處理相應請求,Director先獲得Realserver的mac之后增加到請求報文的數據幀首部,Realserver的響應報文一定不能經過Director

請求過程:cip–>vip,Director cip–>vip,cip–>vip RealServer 此過程數據幀首部在變化

響應過程:vip–>cip–>gw–>cip internet 或 當rip為公網ip時vip–>cip internet 

條件和不足:vip公網ip,dir,rip可以是公網和私網也可以在不同網段,但必須在同一物理二層交換網絡中

疑問:
如何保證Realserver的vip不響應訪問請求報文在交換機arp廣播和在Realserver使用vip響應給客戶端;
arp_ignore:定義linux主機在收到ARP請求數據包后,發送ARP響應數據包的條件級別 
0 - (默認值): 回應任何網絡接口上對任何本地IP地址的arp查詢請求
1 - 只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求
2 -只回答目標IP地址是來訪網絡接口本地地址的ARP查詢請求,且來訪IP必須在該網絡接口的子網段內
3 - 不回應該網絡界面的arp請求,而只對設置的唯一和連接地址做出回應
做lvs-dr模型時 每個Realseverarp_ignore=1  
arp_announce:定義linux主機發送ARP請求數據包時如何選擇數據包中使用的發送方IP地址(怎樣宣告自己arp)
0(默認值)- 允許使用任一網絡接口配置的IP地址(即任一本地地址),
通常就是待發送的IP數據包的源IP地址。(通告所有網段)
1 - 盡量避免使用不屬于該網絡接口(即發送數據包的網絡接口)子網的本地地址作為發送方IP地址,
就是說如果主機包含多個子網,而IP數據包的源IP地址屬于其中一個子網,
雖然該IP地址不屬于本網口的子網,但是也可以作為ARP請求數據包的發送方IP地址,
否則就會按照取值為2的方式選擇發送方IP地址。(通告相同網段)
2 - 忽略IP數據包的源IP地址,總是選擇網口所配置的最合適的IP地址作為ARP
請求數據包的發送方IP地址(一個網口可能會配置多個IP地址)(一定通告相同的網段)
做lvs-dr模型時,每個Realsever需要設置arp_annonuce=2
各個Realsever上的route add -host $VIP dev lo:0 ,讓Realserver從本地物理網卡收到Director
轉發的報文交給lo:0,響應客戶端時,會以Realserver lo:0 vip作為源地址響應,然后經過本地網卡

tun.jpg

lvs-tun:Director在接收到目的為vip的請求后,按算法挑一臺Realserver來處理相應請求,會在原來ip包頭上

再封裝一個源為dip目的為rip的ip包頭,之后Realserver收到請求,處理后通過互聯網響應客戶端.

請求過程:cv–>Director,cvdr–>cvdr ip包頭的變化

響應過程:Realserver vip–>cip

條件和不足:vip,dip,rip必須全部為公網地址,可以跨地域部署,但是要考慮mtu問題,而且Realserver必須支持特定的隧道協議

fullnat.jpg

lvs-fullnat:Director在接收到目的為vip的請求后,按算法挑一臺Realserver來處理相應請求,Director和個Realserver可以在不同網段,Director會同時修改源和目的ip,改成dip和rip,Realserver處理完成后,經過各個路由,響應給Director,Director會響應給客戶端

請求過程:cip–>vip Director–>dip–>rip Realserver

響應過程:rip–>dip Director–>vip–>cip

這幾題想省事簡單化下,用lvs-dr做apache的負載均衡,nginx和php分離可以參考上篇博文的Lnmp.sh腳本

2、搭建一套LVS-DR模型的高性能集群,并實現以下功能:

   (1)、wordpress程序通過nfs共享給各個realserver;

   (2)、后端realserver中的nginx和php分離

實驗環境
Director:vip 192.168.40.200,dip 192.168.40.120
RS1:vip 192.168.40.200,rip1 192.168.40.130,gw 192.168.40.2 apache
RS2:vip 192.168.40.200,rip2 192.168.40.140,gw 192.168.40.2 apache
實際生產環境則可以根據ip規劃情況來部署

 在RS上操作
vim /etc/sysctl.conf
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
或者
[root@centos ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@centos ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@centos ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@centos ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@centos ~]# ifconfig lo:0 192.168.40.200 broadcast 192.168.40.200 netmask 255.255.255.255 up
[root@centos ~]# route add default gw 192.168.40.2
[root@centos ~]# route add -host 192.168.40.200 dev lo:0
[root@centos ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.40.200  0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.40.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         192.168.40.2    0.0.0.0         UG    0      0        0 eth2
[root@centos ~]# echo "RS1---RS1" > /var/www/html/test.html
[root@centos ~]# service httpd start
[root@centos ~]# curl http://192.168.40.130/test.html
RS1---RS1
以上關于RS1的操作,在RS2上操作一邊,確保RS2的測試頁為RS2--RS2
在DR上操作
[root@centos ~]# modprobe -l | grep "ip_vs"
kernel/net/netfilter/ipvs/ip_vs.ko
,,,,,
[root@centos ~]# uname -r
2.6.32-504.el6.x86_64
[root@centos ~]# yum install ipvsadm -y
[root@centos ~]# ifconfig eth1:0 192.168.40.200 broadcast 192.168.40.200 netmask 255.255.255.255 up
[root@centos ~]# ipvsadm --version
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@centos ~]# iptables -F
[root@centos ~]# ipvsadm -A -t 192.168.40.200:80 -s rr
[root@centos ~]# ipvsadm -a -t 192.168.40.200:80 -r 192.168.40.130 -g 
[root@centos ~]# ipvsadm -a -t 192.168.40.200:80 -r 192.168.40.140 -g 
[root@centos ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.40.200:http rr
  -> 192.168.40.130:http          Route   1      0          0         
  -> 192.168.40.140:http          Route   1      0          0  
使用筆記本本地瀏覽器訪問幾次后的輪訓結果
[root@centos ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.40.200:http rr
  -> 192.168.40.130:http          Route   1      1          13        
  -> 192.168.40.140:http          Route   1      1          14

3、基于heartbeat v2 crm實現HA LAMP組合;要求,部署wordpress,用于編輯的文章中的任何數據在節點切換后都能正常訪問;

heartbeat或corosync(集群信息層),pacemaker(crm),crmshell或pscd(資源配置cli);
建議使用centos7系列安裝測試,或centos6系列升級python為2.7.X 
floating ip ,nfs,httpd為需要高可用的資源

原創文章,作者:Snoo,如若轉載,請注明出處:http://www.www58058.com/61698

(0)
SnooSnoo
上一篇 2016-12-26 10:11
下一篇 2016-12-26 10:11

相關推薦

  • 2017-10-4Linux基礎知識(3)

    在上一章中講到了操作系統的歷史的發展以及Linux的如何誕生,在1991年的8月份,創始人Linus宣布成立Linux的,Larry Wall開發diff和patch打補丁的命令程序使得Linux可以在安全性方面有很大的提升。

    Linux干貨 2017-10-05
  • 0805課堂練習與作業

    練習1 1、找出ifconfig命令結果中本機的所有IPv4地址 2、查出分區空間使用率的最大百分比值 3、查出用戶UID最大值的用戶名、UID及shell類型 4、查出/tmp的權限,以數字方式顯示 5、統計當前連接本機的每個遠程主機IP的連接數,并按從大 到小排序 練習2 1、顯示/proc/meminfo文件中以大小s開頭的行;(要求:使 用兩種方式)…

    Linux干貨 2016-08-07
  • 硬鏈接和軟鏈接的說明

    1、硬鏈接和軟鏈接的區別    (1)、原理上:                   【1】 硬鏈接(hard link):                 &…

    2017-07-21
  • 第一篇博客

    我的第一篇博客以及接下來的每一篇都要獻給linux運維了。第一次接觸linux是在大三的時候,當時并沒有想到以后還會和linux邂逅并以此謀生。 首先就從最基礎的linux分區與掛載點開始了解介紹,我們熟悉的Windows系統下的分區都分配有盤符,像c盤,d盤之類的,用來存放各種軟件和文件。而linux也有自己的分區,并將分區掛載到不同的掛載點上,掛載是指將…

    2017-07-16
  • 馬哥教育21期網絡班—第11周課程+練習—-成長進行時–不退步–上

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 對稱加密: 加密和解密使用同一個密鑰; 缺點:如何通信方多的話,需要保存多組密鑰 公鑰加密:密鑰是成對兒出現 公鑰:公開給所有人;pubkey 私鑰:自己留存,必須保證其私密性;secret key 特點:用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然; 數字簽名:主要在于讓接收方確認發送方…

    Linux干貨 2016-09-19
  • Linux基礎命令 -管道密切配合使用 tee

    基礎命令和管道密切配合使用  tee     基礎命令:tee   tee命令 功能: 把命令1的STDOUT保存在文件名中,然后管道輸入給命令2; 補充說明:tee指令會從標準輸入設備讀取數據,將其內容輸出到標準輸出設備,同時保存成文件。 使用場景: 1.保存不同階段的輸出 2.復雜管道的故障排除 3.同時查看和記錄…

    Linux干貨 2016-08-03
欧美性久久久久