1. 程式人生 > 其它 >|NO.Z.00002|——————————|Applications|——|LBC&HAC&HPC叢集.V2|-----------------------------|LVS&LVS_DR&LVS_NAT&LVS_TUN&Keepalived+LVS&HartBeat+Nginx|

|NO.Z.00002|——————————|Applications|——|LBC&HAC&HPC叢集.V2|-----------------------------|LVS&LVS_DR&LVS_NAT&LVS_TUN&Keepalived+LVS&HartBeat+Nginx|



[Applications:LBC&HAC&HPC叢集.V2]                                                           [Applications.LBC&HAC$HPC] [LVS&LVS_DR&LVS_NAT&LVS_TUN&Keepalived+LVS&HartBeat+Nginx]








一、LVS-NAT模式叢集構建
1、實驗架構圖 2、構建流程:
### --- 負載排程器

vi /etc/sysctl.conf                                             // 開啟路由轉發功能
    net.ipv4.ip_forward=1
sysctl -p
### --- 新增防火牆記錄,當源地址是內網網段並且出口網絡卡為eth0 的時候進行SNAT轉換,轉換源地址為外網絡卡地址

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT -j SNAT --to-source 20.20.20.11

iptables -t nat  -L                                             // 檢視記錄是否儲存成功
ipvsadm  -A -t 20.20.20.11:80 -s rr                             // 新增ipvsadm TCP叢集
ipvsadm  -a  20.20.20.11:80  -r  10.10.10.12:80 -m              // 新增ipvsadm節點
ipvsadm -Ln
service ipvsadm save                                            // 儲存ipvs叢集設定到檔案進行持久化
chkconfig ipvsadm on  
### --- 真實伺服器

route add default gw IP地址                                     // 指定閘道器至負載排程器
service httpd start                                             // 開啟Apache伺服器
chkconfig httpd on
二、LVS-DR模式叢集構建
1、實驗架構圖: 2、構建流程
### --- 負載排程器

### --- 關閉網絡卡守護程序
service NetworkManager  stop                                
cd /etc/sysconfig/network-scrpits/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
    DEVICE=eth0:0
    IPADDR=虛擬IP
    NETMASK=255.255.255.0
ifup eth0:0
### --- 關閉網絡卡重定向功能

vim /etc/sysctl.conf                                        
    net.ipv4.conf.all.send_redirects=0
    net.ipv4.conf.default.send_redirects=0
    net.ipv4.conf.eth0.send_redirects=0
sysctl -p
### --- 過載IPVS模組

modprobe ip_vs                                              
rpm -ivh  ipvsadm-1.261......                               // 安裝ipvsadm命令列工具
### --- 檢視當前IPVS叢集內容

ipvsadm -v                                                  // 檢視當前IPVS叢集內容
ipvsadm -A -t                                               // 虛擬IP:80 -s rr     新增ipvsadm叢集子節點
ipvsadm -a -t                                               // 虛擬IP:80 -r 網站1:80 -g      新增ipvsadm叢集子節點
ipvsadm -a -t                                               // 虛擬IP:80 -r 網站2:80 -g

service ipvsadm save                                        // 儲存ipvs叢集內容至檔案,進行持久化儲存
chkconfig ipvsadm on                                        // 設定為開機自啟
### --- 關閉網絡卡守護程序真實伺服器

service NetworkManager  stop                                // 關閉網絡卡守護程序
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo  ifcfg-lo:0
### --- 拷貝迴環網絡卡子介面

vim ifcfg-lo:0                                              // 拷貝迴環網絡卡子介面
    DEVICE=l0:0
    IPADDR=虛擬IP
    NETMASK=255.255.255.0
### --- 關閉對應ARP響應及公告功能

vim /etc/sysctl.conf                                        // 關閉對應ARP響應及公告功能
    net.ipv4.conf.all.arp_ignore=1
    net.ipv4.conf.all.arp_announce=2
    net.ipv4.conf.default.arp_ignore=1
    net.ipv4.conf.default.arp_announce=2
    net.ipv4.conf.lo.arp_ignore=1
    net.ipv4.conf.lo.arp_announce=2
sysctl -p
ifup lo:0
### --- 新增路由記錄,當訪問VIP交給lo:0網絡卡接受

route add-host  虛擬IP dev lo:0                               // 新增路由記錄,當訪問VIP交給lo:0網絡卡接受
service httpd start

一、負載均衡叢集相關排程演算法
### --- 靜態排程演算法

### --- 特點:
~~~     只根據演算法本身去排程,不考慮伺服器本身

### --- 演算法說明:
~~~     RR 輪詢:將每次使用者的請求分配給後端的伺服器,從第一臺伺服器開始到第N臺結束,然後迴圈。
~~~     VRR 加權輪詢:按照權重的比例實現在多臺主機之間機械能排程
~~~     SH(source hash)源地址雜湊:將同一個IP的使用者請求傳送給同一個伺服器
~~~     DH(destination hash)目標地址雜湊:將同一個目標地址的使用者請求傳送給同一個真實伺服器(提高快取的命中率)
### --- 動態排程演算法

### --- 特點:
~~~     除了考慮演算法本身,還要考慮伺服器狀態

### --- 演算法說明:
~~~     LC(lest-connection)最少連線,將新的連線請求,分配給連線數最少的伺服器的活動連線,活動連線x256+非活動連線
~~~     WLC加權最少連線,特殊的最少連線演算法,權重越大承擔的請求說越多(活動連線x256+活動連線)/權重
~~~     SED最短期望延遲:特殊的WLC演算法(活動連線+1)*256/權重
~~~     NQ永不排隊:特殊的SED演算法,無需等待,如果有真實伺服器額連線數等於0那就直接分配不需要運算
~~~     LBLC特殊的DH演算法:技能提高快取命中率,又要考慮伺服器效能
~~~     LBLCR  LBLC+快取,儘可能提高負載均衡呵呵快取命中率的折中方案
二、LVS持久連線
### --- 持久客戶端連線

### --- 定義:
~~~     每客戶端 持久,將來自於同一個客戶端的所有請求統統定向至此前選定的RS,也就是隻要IP相同,分配的伺服器始終相同。
### --- 演示程式碼:// 新增一個tcp負載叢集,叢集地址為172.16.0.8,演算法為wlc,持久化時間為120s
ipvsadm -A -t 172.16.0.8:0  -s wlc -p 120 
### --- 持久埠連線

### --- 定義:
~~~     沒埠持久,將來自於同一個客戶端對同一個服務(埠)請求,始終定向至此前選定的RS
### --- 演示程式碼:// 新增一個tcp負載叢集,叢集地址為172.16.0.8:80,演算法為wlc,持久化時間為120s
ipvsadm  -A -t 172.16.0.8:80  -s rr -p 120 
### --- 持久防火牆標記連線

### --- 定義:
~~~     將來自於統一客戶端對指定服務(埠)的請求,始終定向至此選定RS,不過它可以將兩個毫不相干的埠定義為一個叢集服務
### --- 演示程式碼:
iptables -t mangle -A PREROUTING  -d 172.16.0.8 -p tcp --dport 80 -j MARK --set-mark 10
~~~     新增一個防火牆規則,當目標地址為172.16.0.8並且目標埠為80時給資料包打一個標記,設定Mark值為10
iptables -t managle -A PREROUTING -d 172.16.0.8 -p tcp -dport 443 -j MARK --set-mark 10
~~~     新增一個防火牆規則,當目標地址為172.16.0.8並且目標埠為443 時給資料包打一個標記,設定Mark值為10
~~~     儲存防火牆規則持久化生效
service iptables save                                               
ipvsadm -A -f 10 -s wlc  -p 120 
~~~     新增一個負載排程器,當Mark值為10 時進行負載均衡使用wlc演算法,持久化生效時間為120s

三、高可用叢集 1、Keepalived相關說明:
### --- 軟體相關介紹:
~~~     案例環境轉為LVS和HA設計的一款健康檢查工具
~~~     支援故障自動切換(Failover)
~~~     支援節點健康狀態檢查(Health Checking)
~~~     官方網站:http://www.keepalived.org/

### --- 軟體實現原理:
~~~     VRRP(Virtual Router Redundancy Protocol,虛擬路由冗餘協議)
~~~     一主+多備:公用同一個IP地址,但優先順序不同
2、Keepalive+LVS高可用實驗構建 3、實驗構建程式碼:
################################################################################
### --- 負載排程器——1
################################################################################
### --- 構建前提:
### --- 先構建LVS-DR模式的負載均衡叢集,可參照上文進行構建

### --- 負載排程器——1
yum -y install kernel-devel openssl-devel popt-devel gcc*             // 安裝相關Keepalived依賴
tar -zxvf keepalived......                                            // 原始碼安裝Keepalived軟體
cd keep......
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32....../
make
make instal
chkconfig -add keepalived                                           // 設定Keepalived開機自啟
chkconfig Keepalived on
### --- 設定Keepalived軟體配置

vi /etc/keepalived/keepalived.conf                                  // 設定Keepalived軟體配置
global_defs{
    router_id R1                                                    // 命名主機名
}
vrrp_instance VI--1 {
    state MASTER                                                    //設定服務型別主/從(MASTER/SLAVE)
    interface eth0                                                  //指定那塊網絡卡用來監聽
    virtual_router_id 66                                            //設定組號,如果十一組就是相同的ID號,一個主裡面只能有一個主伺服器和多個從伺服器
    priority 100                                                    //伺服器優先順序,主伺服器優先順序高
    advert_int 1                                                    //心跳時間,檢測對方存活
    authenticetion  {                                               //存活驗證密碼
        auth_type PASS
        auth_pass   1111
    }
    virtual_ipaddress{
        192.168.1.100                                               //設定叢集地址
    }
}
virtual_server  192.168.1.100:80{                                   //設定叢集地址,以及埠號
    delay_loop 6                                                    //健康檢查間隔
    lb_algorr                                                       //使用輪詢排程演算法
    lb_kend  DR                                                     //DR模式的群集
    Protocol TCP                                                    //使用的協議
    real_server 192.168.1.2 80 {                                    //管理的網站節點以及使用埠
        weight 1                                                    //權重,優先順序在原始檔基礎上刪除修改
        TCP_CHECK   {                                               //狀態檢查方式
            connect_port 80                                         //檢查的目標埠
            connect_timeout 3                                       //連線超時(秒)
            nb_get_retry 3                                          //重試次數
            delay_before_retry 4                                    //重試間隔(秒)
        }
    }
    real_server 192.168.1.3 80 {                                    //管理的第二個網站節點以及使用埠
        weight 1                                                    //權重, 優先順序 在原始檔基礎上刪除修改
        TCP_CHECK       {                                           //狀態檢查方式
            connect_port 80                                         //檢查目標埠
            connect_timeout 3                                       //連線超時(秒)
            nb_ger_retry 3                                          //重試次數
                delay_before_retry 4                                //重試間隔(秒)
        }
    }
}
~~~ 多餘刪除
### --- 傳送到其它主機地點

scp keepalived.conf xx.xx.xx.xx: /etc/keepalived/
################################################################################
### --- 負載排程器——2
################################################################################
### --- 負載均衡排程器-2

yum  install -y kernel-devel openssl-devel popt-devel gcc*          //安裝相關Keepalived依賴
tar -zxvf keepalived.....                                           //原始碼安裝Keepalived軟體
cd keep......
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32....../
make 
make install 
chkconfig --add keepalived                                          //設定Keepalived開機自啟
chkconfig  Keepalived on
### --- 修改從負載排程器-1拷貝的Keepalived配置檔案 

vim /etc/keepalived/keepalived.conf
//修改1:state MASTER 修改至state SLAVE
//修改2:priority  100     修改至priority 47      一般建議與主服務差值為50
service NetworkManager stop                                         // 啟動虛擬介面,必須關閉此服務
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0                                                    // 配置虛擬機器介面
DEVICE=eth0:0       
IPADDR=虛擬IP
NETMASK=255.255.255.0
ifup eth0:0                                                         // 啟動虛擬網絡卡
vim /etc/sysconfig/network-script/ifup-eth                          // 如果報錯修改檔案257
//註釋此區域
//修改核心引數,防止相同網路地址廣播衝突,如果有多快網絡卡需要設定多行
### --- 修改核心引數,防止相同網路地址廣播衝突,如果有多快網絡卡需要設定多行

vim /etc/sysctl.conf                                                // 修改核心引數,防止相同網路地址廣播衝突,如果有多快網絡卡需要設定多行
    net.ipv4.conf.eth0.send_redirects=0
    net.ipv4.conf.all.send_redirects=0
    net.ipv4.conf.default.send_redirects=0
    net.ipv4.conf.eth0.send_redirects=0
sysctl -p                                                           // 重新整理核心引數
modprobe    ip_vs                                                   // 檢視核心是否載入,無反應則已載入
cat /proc.net/ip_vs                                                 // 檢視版本,確認是否正確載入
### --- 安裝ipvsadm管理工具

cd /mnt/cdrom/Packages                                              // 進入官潘掛載目錄
rpm -ivh  ipvsadm-1.261......                                       // 安裝ipvsadm管理工具
ipvsadm -v
ipvsadm -A -t                                                       // 虛擬IP:80  -s rr
ipvsadm -Ln                                                         // 檢視設定的ipvsadm如果沒有子項,那麼手動新增
ipvsadm -a  -t                                                      // 虛擬IP:80 -r 網站1:80  -g
ipvsadm -a -t                                                       // 虛擬IP:80   -r      網站2:80 -g
四、高可用叢集:HeartBeat+Nginx 實驗構建 1、實驗構建說明:
### --- 軟體包:
~~~     軟體包版本為Centos6系列,如果使用其他版本可以配置eperl源下載安裝

### --- 環境準備:
~~~     配置時間同步服務
~~~     配置主機名解析
~~~     實驗拓撲結構
2、實驗構建流程
################################################################################
### --- HeartBeat+Nginx——3
################################################################################
### --- 基礎準備,準備節點都需要安裝

tar -zxvf hearbeat.tar.gz
cd hearbeat
yum  -y install *
cd /usr/share/doc/heartbeat-3.0.4/
cp ha.cf authkeys haresources /etc/ha.d/                            // 配置檔案需拷貝到預設目錄下
### --- 認證服務,節點之間的認證配置,修改/etc/ha.d/authkeys,在主上修改

dd if=/dev/random bs=512 count=1 | openssl md5                      // 生成祕鑰隨機數
vim authkeys
auth 1
1 md5 a4d20b0dd3d5e35e0f87ce4266d1dd64
chmod 600 authkeys
### --- hearbeat  主配置檔案,修改/etc/ha.d/ha.cf,在主上修改

bcast  eth0
node www.centos1.com                                                // 一主一備節點,需注意能被兩臺主機之間解析
node www.centos2.com
### --- 配置哈resources檔案,在主上修改

www.centos1.com IPaddr::10.10.10.100/24/eth0:0
### --- 將主三個配置檔案拷貝到從上

cd /etc/ha.d/
scp ha.cf authkeys haresources [email protected]:/etc./ha.d/
### --- 啟動服務進行驗證

 主:service httpd start
 主:service hearthbeat start
 備:service httpd start
 備:service heartbear start








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)