實驗環境:操做系統linux7html 所需軟件:ipvsadm,keepalived,httpd,bind,bind-ustil,curl,routenode 實驗要求:代理服務器安裝ipvsadm和keepalivd實現負載均衡和冗餘備份(防止代理服務器崩潰而致使服務的中斷keepalived根據優先級從新選舉誰的優先級高選誰),後端服務器部署apache實施管理。linux 代理服務器給後端服務器作代理服務並進行負載均衡,客戶機只能訪問的是代理服務器IP,但真正是經過代理服務器訪問後端的服務器。於是在代理服務器配置DNS域名解析服務使用戶能夠經過域名訪問服務。web 經過lvs和keepalived實現高可用和災備(HA/DR)算法 IP規劃: 客戶機CIP 192.168.10.1數據庫 代理服務器DIP 192.168.11.11 apache 代理服務器VIP 192.168.10.11vim 後端服務器RIP 192.168.11.12~14 (後端服務器和代理服務器DIP必須在同一網段)後端 實驗原理圖實驗架構圖
實驗部署先配置後端服務器Real server給每臺後臺服務器配置apache(若是服務器過多可能要用到ansible)bash yum install -y httpd curl systemctl restart httpd 啓動apache服務 echo www.zo12.com > /var/www/html/index.html 配置主頁信息(其餘後端服務器可改成 www.zo@.com等) curl 127.0.0.1 內測 yum install -y net-tools route -n 查看路由表信息 route del default gw 192.168.11.2 臨時關閉默認網關 route add default gw 192.168.11.11 設置臨時默認網關 vim /etc/sysconfig/network-scripts/ifcfg-ens33 永久修改網關 GATEWAY=192.168.11.11 (設置爲代理服務器IP) 代理服務器配置給代理服務器加一塊虛擬網卡並配置ip 設置中添加一塊nat 模式的網卡 ip a cd /etc/systemctl/network-scripts cp -av ifcfg-ens33 ifcfg-ens37 vim ifcfg-內容以下(紅字爲要修改的內容)
安裝lvs yum install -y ipvsadm systemctl restart ipvsadm
route -n 查看路由表信息 route del default gw 192.168.11.2 臨時關閉默認網關 route del default gw 192.168.10.2 配置LVS負載均衡集羣服務列表 ipvsadm -h ipvsadm -Ln ipvsadm -C 清空ipvs集羣配置信息 ipvsadm -A -t 192.168.10.11:80 -s rr ipvsadm -a -t 192.168.10.11:80 -r 192.168.11.12:80 -m ipvsadm -a -t 192.168.10.11:80 -r 192.168.11.13:80 -m ipvsadm -Ln ipvsadm -Ln --stats watch -n.5 ‘ipvsadm -Lnc’ watch -n.5 ‘ipvsadm -Ln --rate’ 查看並臨時開啓路由轉發功能 cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward [root@localhost ~]# vim lo.sh 腳本內容以下 #!/bin/bash ifconfig lo:1 192.168.11.100 netmask 255.255.255.255 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce ip a 運行腳本(在192.168.11.12上作以下操做):
運行腳本(在192.168.11.12上作以下操做): chmod -v +x lo.sh . lo.sh scp lo.sh root@192.168.11.13:/root/ ssh root@192.168.11.13 '. /root/lo.sh' 遠程給192.168.11.13運行lo.sh腳本 給代理服務器配置keepalived yum install -y keepaived ipvsadm -C 清除以前的ipvs配置(並在keepalived配置中從新配置) 其實以前的ipvs配置只是練練手感/呲牙/呲牙/呲牙 vim /ect/keepalived/keepalived.conf 進入keepalived配置文件進行配置
! Configuration File for keepalived global_defs { 全局定義,說明:在實驗測試環境中,如下內容能夠隨便寫,可是master和backup的router_id必須相同 notification_email { 設置通知郵箱 root@localhost 管理員的郵箱地址 } notification_email_from keepalived@localhost 通知郵件的發件人郵箱 smtp_server 127.0.0.1 郵箱服務器IP地址 smtp_connect_timeout 30 郵件服務器鏈接超時時間爲30秒 router_id dr1 路由器ID名稱,同一個keepalived高可用集羣中master和backup的ID名稱必須相同 }
vrrp_instance VI_1 { vrrp虛擬路由冗餘協議的實例設置 ,實例名稱爲VI_1 state MASTER //狀態,主爲MASTER,備爲BACKUP狀態 interface eth0 //心跳檢測網卡接口,要根據實際狀況寫網卡接口名,用ip a查網卡接口名 virtual_router_id 51 //master主和backup備兩邊必須同樣,此處是集羣的羣號 priority 100 //優先級,MASTER的值必須高於BACKUP的值,相似於現實生活中的競選的票數 advert_int 1 //檢查間隔,單位秒。vrrp的組播地址是224.0.0.18 authentication { 身份認證配置 auth_type PASS //認證類型爲密碼方式,主備要一致 auth_pass 1111 //認證密碼爲1111,主備要一致 } virtual_ipaddress { 192.168.10.100 //VIP,可多個IP,每行一個IP地址 } }
virtual_server 192.168.11.100 80 { //LVS 配置 delay_loop 3 //服務論詢的時間間隔 lb_algo rr //LVS 調度算法 lb_kind DR // LVS 集羣模式 protocol TCP real_server 192.168.11.13 80 { //RS的IP及端口號 weight 1 TCP_CHECK { //RS健康檢查 connect_timeout 3 } } real_server 192.168.11.14 80 { weight 1 TCP_CHECK { connect_timeout 3 } } }
# cd /etc/keepalived # scp keepalived.conf 192.168.11.12:/etc/keepalived/ 將配置文件發送給node12的主機 拷貝後,修改配置文件 state BACKUP priority 90
兩個Director上啓動服務: # systemctl restart keepalived 重啓keepalived服務
curl 192.168.11.100 如出現以下內容則再執行一遍lo.sh腳本 給代理服務器配置DNS yum install -y bind bind-ustil systemctl restart named systemctl enable named
cp -v /etc/named.conf{,.bak} cp -v /etc/named.rfc1912.zones{,.bak} sed -i 's/127.0.0.1/any/' /etc/named.conf sed -i 's/localhost/any/' /etc/named.conf systemctl reload named echo ' zone "zo.com" IN { type master; file "zo.com.zone"; allow-update { none; }; allow-transfer { none; }; }; ' >> /etc/named.rfc1912.zones named-checkconf
cd /var/named cp -av named.localhost zo.com.zone echo '$TTL 1D @ IN SOA dns1.zo.com. 1223915635.qq.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS dns1.zo.com. A 192.168.10.11 AAAA ::1 dns1 A 192.168.10.11 www A 192.168.11.100 ftp A 192.168.11.13 mail A 192.168.11.14 web CNAME www.zo.com.
' > zo.com.zone named-checkzone dns1.zo.com /var/named/zo.com.zone systemctl reload named nslookup www.zo.com 127.0.0.1 nslookup web.zo.com 127.0.0.1 systemctl reload named 在客戶機上作測試 nslookup www.zo.com 192.168.11.11 將客戶機的C:\Windows\System32\drivers\etc\hosts文件末尾添加域名解析 最後測試結果以下: 由於作了負載均衡爲測試實驗效果給不一樣的後端服務器建立了不一樣的主頁因此多是node14.com也多是node13.com 若是將多個物理服務器(能夠是wed服務器,文件服務器,郵件服務器,數據庫服務器,FTP服務器等)虛擬成一臺虛擬服務器則能夠實現同時訪問一個虛擬服務器的信息,同時也只需配置一臺虛擬服務器就能夠完成。 |