|NO.Z.00002|——————————|Applications|——|LBC&HAC&HPC叢集.V2|-----------------------------|LVS&LVS_DR&LVS_NAT&LVS_TUN&Keepalived+LVS&HartBeat+Nginx|
阿新 • • 發佈:2022-03-22
[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)