4.10 負載均衡分散式

尹成發表於2018-11-15
  1. 軟體環境
     CentOS7(4臺)
     JDK1.8
     2臺http伺服器
     2臺負載均衡:lvs+keepAlived
  2. http伺服器安裝配置(2臺)
     輸入 yum -y install httpd 安裝http伺服器
     輸入 systemctl enable httpd.service 設為開機自啟動
     輸入 systemctl start httpd.service 啟動http伺服器
     輸入 systemctl status httpd.service 檢視http伺服器狀態
     進入 /var/www/html/ 目錄,輸入 vi index.html,隨便寫點內容,標識節點即可
     輸入 vi /etc/init.d/realserver 配置真實伺服器,加入以下內容
    #!/bin/bash
    #description : start realserver
    SNS_VIP=192.168.11.200
    /etc/rc.d/init.d/functions
    case “$1” in
    start)
    echo " start LVS of REALServer"
    /sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up
    echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    stop)
    /sbin/ifconfig lo:0 down
    echo “close LVS Directorserver”
    echo “0” >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo “0” >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo “0” >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo “0” >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    *)
    echo “Usage: $0 {start|stop}”
    exit 1
    esac
    解釋:
    #!/bin/bash
    #description : start realserver
    SNS_VIP=192.168.11.200 #定義VIP變數,注意在同一網段
    /etc/rc.d/init.d/functions #導指令碼庫
    case “$1” in #case語句 $1傳遞給該shell指令碼的第一個引數
    start)
    echo " start LVS of REALServer"
    /sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up $SNS_VIP #增加本地路由 lo:0
    echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    stop)
    /sbin/ifconfig lo:0 down #刪除本地路由
    echo “close LVS Directorserver”
    echo “0” >/proc/sys/net/ipv4/conf/lo/arp_ignore
    echo “0” >/proc/sys/net/ipv4/conf/lo/arp_announce
    echo “0” >/proc/sys/net/ipv4/conf/all/arp_ignore
    echo “0” >/proc/sys/net/ipv4/conf/all/arp_announce
    ;;
    *)
    echo “Usage: $0 {start|stop}”
    exit 1
    esac
     輸入 chmod 777 /etc/init.d/realserver 賦予許可權
     輸入 service realserver start 啟動服務
     輸入 ifconfig 檢視,多出一塊網路卡
  3. lvs+keepAlived安裝配置
     輸入 uname -a 檢視Linux版本,如果為2.6以後,核心中已有lvs
     輸入 yum -y install keepalived 安裝keepAlived
     輸入 rpm -ql keepalived 檢視rpm包安裝到的目錄
     輸入 > /etc/keepalived/keepalived.conf 建立並覆蓋配置檔案
     輸入 vi /etc/keepalived/keepalived.conf 編輯配置檔案,加入以下內容
    global_defs {

notification_email {

}

smtp_connect_timeout 30

    router_id LVS_DEVEL             

}
vrrp_instance VI_1 {
state MASTER
interface eno16777736
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200
}
}
virtual_server 192.168.11.200 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.11.135 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
解釋:
global_defs { #全域性配置部分

notification_email { #下面幾行均為全域性通知配置,可以實現出現問題後報警,但功能有限,因此註釋掉,並採用Nagios監視lvs執行情況

}

smtp_connect_timeout 30

    router_id LVS_DEVEL    #設定lvs的id,在一個網路內應該是唯一的

}
vrrp_instance VI_1 { #設定vrrp組,唯一且同一LVS伺服器組要相同
state MASTER #備份LVS伺服器設定為BACKUP,這裡是MASTER
interface eno16777736 #設定對外服務的介面
virtual_router_id 51 #設定虛擬路由標識
priority 100 #設定優先順序,數值越大,優先順序越高,backup設定為99,這樣就能實現當master當機後自動將backup變為master,而當原master恢復正常時,則現在的master再次變為backup。
advert_int 1 #設定同步時間間隔
authentication { #設定驗證型別和密碼,master和buckup一定要設定一樣
auth_type PASS
auth_pass 1111 #主備機設定為一樣,互相通話
}
virtual_ipaddress { #設定VIP,可以多個,每個佔一行
192.168.11.200
}
}
virtual_server 192.168.11.200 80 { #tomcat等伺服器也要為80埠
delay_loop 6 #健康檢查時間間隔,單位s
lb_algo wrr #負載均衡排程演算法設定為加權輪詢
lb_kind DR #負載均衡轉發規則,這是效率最高的規則
nat_mask 255.255.255.0 #網路掩碼,DR模式要保障真實伺服器和lvs在同一網段
persistence_timeout 0 #會話保持時間,單位s,這裡設定保持時間,不能解決session共享問題,session按最後一次請求算
protocol TCP #協議
real_server 192.168.11.135 80 { #真實伺服器配置,80表示埠
weight 1 #權重,和wrr加權輪詢配對出現
TCP_CHECK { #伺服器檢測方式設定 keepalived的健康檢查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 10 #連線超時時間
nb_get_retry 3 #失敗重試次數
delay_before_retry 3 #失敗重試的間隔時間
connect_port 80 #連線的後端埠
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
 輸入 service keepalived start
 可以輸入 tail -f /var/log/messages 檢視日誌
 還可以輸入 service keepalived status 檢視執行狀態
4. lvs+keepAlived負載均衡測試
 轉發
 故障移除
 故障恢復自動新增
5. lvs備機搭建
 輸入 uname -a 檢視Linux版本,如果為2.6以後,核心中已有lvs
 輸入 yum -y install keepalived 安裝keepAlived
 輸入 rpm -ql keepalived 檢視rpm包安裝到的目錄
 輸入 > /etc/keepalived/keepalived.conf 建立並覆蓋配置檔案
 輸入 vi /etc/keepalived/keepalived.conf 編輯配置檔案,加入以下內容
global_defs {

notification_email {

}

smtp_connect_timeout 30

    router_id LVS_DEVEL             

}
vrrp_instance VI_1 {
state BACKUP
interface eno16777736
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.11.200
}
}
virtual_server 192.168.11.200 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.11.135 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
解釋:
global_defs { #全域性配置部分

notification_email { #下面幾行均為全域性通知配置,可以實現出現問題後報警,但功能有限,因此註釋掉,並採用Nagios監視lvs執行情況

}

smtp_connect_timeout 30

    router_id LVS_DEVEL    #設定lvs的id,在一個網路內應該是唯一的

}
vrrp_instance VI_1 { #設定vrrp組,唯一且同一LVS伺服器組要相同
state BACKUP #備份LVS伺服器設定為BACKUP,這裡是MASTER
interface eno16777736 #設定對外服務的介面
virtual_router_id 51 #設定虛擬路由標識
priority 99 #設定優先順序,數值越大,優先順序越高,backup設定為99,這樣就能實現當master當機後自動將backup變為master,而當原master恢復正常時,則現在的master再次變為backup。
advert_int 1 #設定同步時間間隔
authentication { #設定驗證型別和密碼,master和buckup一定要設定一樣
auth_type PASS
auth_pass 1111 #主備機設定為一樣,互相通話
}
virtual_ipaddress { #設定VIP,可以多個,每個佔一行
192.168.11.200
}
}
virtual_server 192.168.11.200 80 { #tomcat等伺服器也要為80埠
delay_loop 6 #健康檢查時間間隔,單位s
lb_algo wrr #負載均衡排程演算法設定為加權輪詢
lb_kind DR #負載均衡轉發規則,這是效率最高的規則
nat_mask 255.255.255.0 #網路掩碼,DR模式要保障真實伺服器和lvs在同一網段
persistence_timeout 0 #會話保持時間,單位s,這裡設定保持時間,不能解決session共享問題,session按最後一次請求算
protocol TCP #協議
real_server 192.168.11.135 80 { #真實伺服器配置,80表示埠
weight 1 #權重,和wrr加權輪詢配對出現
TCP_CHECK { #伺服器檢測方式設定 keepalived的健康檢查方式 有:HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK
connect_timeout 10 #連線超時時間
nb_get_retry 3 #失敗重試次數
delay_before_retry 3 #失敗重試的間隔時間
connect_port 80 #連線的後端埠
}
}
real_server 192.168.11.138 80 {
weight 2
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
 輸入 service keepalived start
 可以輸入 tail -f /var/log/messages 檢視日誌
 還可以輸入 service keepalived status 檢視執行狀態
6. lvs主備測試
 輸入 tail -f /var/log/messages 檢視備機日誌
 主機中輸入 service keepalived stop 模擬掛掉
 備機自動切換
 主機啟動,主機自動上位

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
在這裡插入圖片描述

相關文章