高可用性負載均衡集羣網站搭建




實驗環境:

操做系統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-內容以下(紅字爲要修改的內容)
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
DEVICE=ens37 網卡設備名稱
ONBOOT=yes
IPADDR=192.168.10.11
PREFIX=24
GATEWAY=192.168.10.2
DNS1=114.114.114.114
DNS2=8.8.8.8

 

安裝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上作以下操做):
chmod -v +x lo.sh
. lo.sh
scp lo.sh root@192.168.11.13:/root/    將腳本上傳到192.168.11.13的root目錄中
ssh root@192.168.11.13 '. /root/lo.sh' 遠程給192.168.11.13運行lo.sh腳本

 

運行腳本(在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服務器等)虛擬成一臺虛擬服務器則能夠實現同時訪問一個虛擬服務器的信息,同時也只需配置一臺虛擬服務器就能夠完成。

相關文章
相關標籤/搜索