搭建lvs + keepalivd DR模式,雙機熱備基礎與高可用群集
這里只說keepalivd 軟體的原理 lvs在下面一篇博客中
https://blog.csdn.net/weixin_52184735/article/details/115363231?spm=1001.2014.3001.5501
一,概念
keepalived起初是專門針對lvs設計的一款強大的輔助工具,主要用來提供故障切換和健康檢查功能(判斷lvs負載調度器,節點服務器的可用性,以及隨時隔離并替換新的服務器),當故障機恢復后將其重新加入群集中,
1,熱備份
keepalived采用VRRP(virtual Router Redundant Protocol, 虛擬路由冗余協議)熱備份協議,以軟體的方式實作liunx服務器的多機熱備功能,VRRP是針對路由器的一種備份解決方案————由多臺路由器組成一個熱備份組,通過虛擬ip地址對外提供服務,每個熱備份組內同一時刻只有一臺主路由提供服務,其他路由器處于冗余狀態,若當前在線的路由器失效,則其他路由會自動接替(通過優先級決定順序)
2,高可用
keepalived不僅僅做用于雙機熱備,使用keepalived構建lvs群集更加簡便易用,主要優勢體現在熱備切換,提高可用性,對節點服務器進行健康檢查,自動移除失效的節點,恢復后再重新加入,
二,作業原理
Layer3,4,5作業在IP/TCP協議堆疊的IP層,TCP層,及應用層,原理分別如下:
Layer3:Keepalived使用Layer3的方式作業式時,Keepalived會定期向服務器群中的服務器發送一個ICMP的資料包(既我們平時用的Ping程式),如果發現某臺服務的IP地址沒有激活,Keepalived便報告這臺服務器失效,并將它從服務器群中剔除,這種情況的典型例子是某臺服務器被非法關機,Layer3的方式是以服務器的IP地址是否有效作為服務器作業正常與否的標準,
Layer4:如果您理解了Layer3的方式,Layer4就容易了,Layer4主要以TCP埠的狀態來決定服務器作業正常與否,如web server的服務埠一般是80,如果Keepalived檢測到80埠沒有啟動,則Keepalived將把這臺服務器從服務器群中剔除,
Layer5:Layer5對指定的URL執行HTTP GET,然后使用MD5演算法對HTTP GET結果進行求和,如果這個總數與預期值不符,那么測驗是錯誤的,服務器將從服務器池中移除,該模塊對同一服務實施多URL獲取檢查,如果您使用承載多個應用程式服務器的服務器,則此功能很有用,此功能使您能夠檢查應用程式服務器是否正常作業,MD5摘要是使用genhash實用程式(包含在keepalived軟體包中)生成的,
SSL_GET與HTTP_GET相同,但使用SSL連接到遠程Web服務器,
MISC_CHECK:此檢查允許用戶定義的腳本作為運行狀況檢查程式運行,結果必須是0或1.該腳本在導演盒上運行,這是測驗內部應用程式的理想方式,可以使用完整路徑(即/path_to_script/script.sh)呼叫可以不帶引數運行的腳本,那些需要引數的需要用雙引號括起來(即“/path_to_script/script.sh arg 1 … arg n”)
作用
主要用作RealServer的健康狀態檢查以及LoadBalance主機和BackUP主機之間failover的實作,
高可用web架構: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可選 可不選)
作業原理原文鏈接:https://blog.csdn.net/lupengfei1009/article/details/86514445
三,準備環境
| 主機 | 系統 | ip地址 | 服務 |
|---|---|---|---|
| wed服務器1 | centos7 | 外:192.168.211.10 內:192.168.131.10 | http |
| wed服務器2 | centos7 | 外:192.168.211.11 內:192.168.131.11 | nginx |
| 調度器 | centos7 | 外:192.168.211.12 內:192.168.131.12 | |
| 備用調度器 | centos7 | 外:192.168.211.13 內:192.168.131.13 | nfs |
| 測驗機 | windos10 |
安裝 yum -y install net-tools 使用netstat 查看埠
配置wed服務1
安裝http
yum install -y httpd
配置wed服務2
安裝 nginx
解壓
tar -zxf nginx-1.18.0.tar.gz -C /usr/src/
cd /usr/src/nginx-1.18.0/
配置:編譯:安裝
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
備用調度器(這里為了節約虛擬機我把nfs服務放在這里)
搭建nfs服務
rpm -qa nfs-utils rpcbind //查詢是否安裝
yum install nfs-utils rpcbind //安裝nfs(兩個軟體)
systemctl start rpcbind && systemctl start nfs //啟動(注意按順序)
vim /etc/exports //進入檔案指定共享目錄
/home/nfs_wed 192.168.131.0/24(rw,sync,no_root_squash)
保存退出
exportfs -a //加載檔案
showmount -e //查看共享目錄
注:關閉防火墻
cd /home/nfs_wed/
vim index.html<h1> 測驗 </h1>
<h1>------</h1>
<h1> 天天向上</h1>
<h1>每天進步一點點</h1>
<h1>hahhahahahha</h1>
wed服務器1
掛載nfs共享目錄
yum install -y rpcbind nfs-utils //下載rpcbind(必須)
systemctl restart rpcbind //開啟
mount 192.168.131.13:/home/nfs_wed /var/www/html/ //掛載
df //查看掛載情況
wed服務器2
掛載nfs共享目錄
(方法一樣,只有掛載目錄不一樣,這里就不解釋了)
yum install -y rpcbind nfs-utils
systemctl restart rpcbind
mount 192.168.131.13:/home/nfs_wed /usr/local/nginx/html/
df
查看效果
wed服務1
http要關閉 setenforce 0 (不然會失敗)

wed服務2
注::nginx會亂碼是正常的

以上完成才往下面做
配置lvs 的DR模式
配置調度器
yum install -y ipvsadm //安裝管理工具
配置虛擬介面地址(vip)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33:0
UUID=7b353156-27b0-455c-a01c-8cbcb5f18e41
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.211.20 //是你的vip地址
NETMASK=255.255.255.0 //這個以后的都不要
ifup ens33:0 //開啟
ifconfig ens33:0 //查看與自己配置是否匹配
調整/proc 回應引數
對于DR群集來說,由于lvs負載調度器和各節點需要公用一個vip地址,需要修改linux內核的重定向引數不然不知道那臺機器回應
vim /etc/sysctl.conf
//添加到末尾
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p //重繪一下
配置負載均衡分配策略
modprobe ip_vs //加載模塊
ipvsadm -A -t 192.168.211.20:80 -s rr //生成虛擬服務器
撰寫策略
ipvsadm -a -t 192.168.211.20:80 -r 192.168.211.10 -g -w 1
ipvsadm -a -t 192.168.211.20:80 -r 192.168.211.11 -g -w 1
保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm //重啟ipvsadm
配置節點服務器
wed服務1
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
修改
DEVICE=lo:0
IPADDR=192.168.211.20
NETMASK=255.255.255.255
ONBOOT=yes
ifup lo:0 //開啟
ifconfig lo:0 //查看與自己配置是否匹配
route add -host 192.168.211.20 dev lo:0 //添加一條路由
調整/proc 回應引數
vim /etc/sysctl.conf
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
wed服務2
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
修改
DEVICE=lo:0
IPADDR=192.168.211.20
NETMASK=255.255.255.255
ONBOOT=yes
ifup lo:0 //開啟
ifconfig lo:0 //查看與自己配置是否匹配
route add -host 192.168.211.20 dev lo:0 //添加一條路由
調整/proc 回應引數
vim /etc/sysctl.conf
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
測驗(使用兩個瀏覽器)
注:多刷幾遍可能會有快取


命令測試
ipvsadm -ln

以上完成才往下面做
搭建雙機熱備
在調度器上配置keepailved
下載包
wget http://www.keepalived.org/software/keepalived-1.4.5.tar.gz
解壓包
tar -zxf keepalived-1.4.5.tar.gz
配置,編譯,安裝
./configure && make && make install
mkdir -p /etc/keepalived/
vim /etc/keepalived/keepalived.conf
global_defs {
pancheng_1 // 名稱
}
vrrp_instance VI_1 { // 定義vrrp 熱備實體
state MASTER //熱備份狀態,MASTER 表示主服務器,BACKUP 表示備份服務器
interface ens33 //承載vip地址的物理介面
virtual_router_id 1 //虛擬路由的ID號,每一個必須一致
priority 100 //優先級 ,越大越優先
advert_int 1 // 通告間隔秒數(心跳頻率)
authentication { //認證資訊每一個必須保持一致
auth_type PASS //認證型別
auth_pass 1234 //密碼字串
}
virtual_ipaddress {
192.168.211.20 //漂移地址
}
}
開啟服務
systemctl start keepalived
ip addr //查看vip

在備用調度器上配置keeppailved
(配置基本一樣)
也要配置lvs DR模式策略
調整/proc 回應引數
vim /etc/sysctl.conf
//添加到末尾
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p //重繪一下
配置負載均衡分配策略
modprobe ip_vs //加載模塊
ipvsadm -A -t 192.168.211.20:80 -s rr //生成虛擬服務器
撰寫策略
ipvsadm -a -t 192.168.211.20:80 -r 192.168.211.10 -g -w 1
ipvsadm -a -t 192.168.211.20:80 -r 192.168.211.11 -g -w 1
保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm //重啟ipvsadm
安裝keepalived
下載包
wget http://www.keepalived.org/software/keepalived-1.4.5.tar.gz
解壓包
tar -zxf keepalived-1.4.5.tar.gz
配置,編譯,安裝
./configure && make && make install
mkdir -p /etc/keepalived/
vim /etc/keepalived/keepalived.conf
global_defs {
pancheng_2 // 名稱
}
vrrp_instance VI_1 { // 定義vrrp 熱備實體
state BACKUP //熱備份狀態,MASTER 表示主服務器,BACKUP 表示備份服務器
interface ens33 //承載vip地址的物理介面
virtual_router_id 1 //虛擬路由的ID號,每一個必須一致
priority 99 //優先級 ,越大越優先
advert_int 1 // 通告間隔秒數(心跳頻率)
authentication { //認證資訊每一個必須保持一致
auth_type PASS //認證型別
auth_pass 1234 //密碼字串
}
virtual_ipaddress {
192.168.211.20 //漂移地址
}
}
開啟服務
systemctl start keepalived
ip addr //查看vip(因為此時主服務器仍然在線,VIP地址任然由主服務器控制,其他都處于備用狀態,所以備份服務器中將不會添加vip地址到ens33物理介面上

測驗:
先測驗是否可以訪問
可以訪問后;在測驗ens33關閉

發現備用調度器已經自動生成成vip了

瀏覽器測驗
先開啟ens33
輸入vip地址訪問

ipvsadm -ln //查看
主
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-k5iLx7rX-1617525991781)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403150838911.png)]](https://img.uj5u.com/2021/04/06/233887061607486.png)
有變化
備用調度器
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-G2crpXQW-1617525991783)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403150928031.png)]](https://img.uj5u.com/2021/04/06/233887061607487.png)
沒變化
關閉主調度器ens33
瀏覽器(清快取)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Br4jL0ie-1617525991785)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403151114944.png)]](https://img.uj5u.com/2021/04/06/2338870616074819.png)
會卡一下
ipvsadm -ln
主
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-viuUu2wx-1617525991786)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403151310715.png)]](https://img.uj5u.com/2021/04/06/233887061607488.png)
備
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-XQodxfCw-1617525991790)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403151337253.png)]](https://img.uj5u.com/2021/04/06/233887061607489.png)
最后在開啟ens33
瀏覽器
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-riMOxqJ2-1617525991792)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403151617872.png)]](https://img.uj5u.com/2021/04/06/2338870616074820.png)
ipvsadm -ln
主
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Qg1ibe3p-1617525991794)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403151551363.png)]](https://img.uj5u.com/2021/04/06/2338870616074810.png)
又有變化了
備
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-w4r4heyH-1617525991796)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210403151656486.png)]](https://img.uj5u.com/2021/04/06/2338870616074811.png)
ok
以上完成才往下做
搭建高可用群集
主調度器
vim /etc/keepalived/keepalived.conf
? ................
virtual_server 192.168.211.20 80 { //虛擬IP地址(vip),埠
delay_loop 6 // 健康檢查的間隔時間
lb_algo rr // 輪詢(rr)調度演算法
lb_kind DR //采用的什么群集作業模式 (NAT,DR)
!persistence_timeout 50 //連接保持時間(秒) 若啟用請去掉!號
protocol TCP //應用服務采用的TCP協議
real_server 192.168.211.10 80 { //第一個wed服務器節點的ip地址,埠
weight 1 //權重
TCP_CHECK { //健康檢查方式
connect_port 80 //檢查的埠目標
connect_timeout 3 //連接超時(秒)
retry 3 //重試次數
delay_before_retry 3 //重試間隔
}
}
real_server 192.168.211.11 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
備份調度器
(配置一樣)
virtual_server 192.168.211.20 80 {
delay_loop 6
lb_algo rr
lb_kind DR
!persistence_timeout 50
protocol TCP
real_server 192.168.211.10 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.211.11 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
重啟測驗
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PDqguKD8-1617525991800)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210404013936719.png)]](https://img.uj5u.com/2021/04/06/2338870616074821.png)
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QequYynG-1617525991801)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210404013948628.png)]](https://img.uj5u.com/2021/04/06/2338870616074822.png)
ipvsadm -lnc
主
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Z3fAVnTR-1617525991803)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210404014040620.png)]](https://img.uj5u.com/2021/04/06/2338870616074812.png)
關閉后ens33
備
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UbHrQMnx-1617525991819)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210404014142799.png)]](https://img.uj5u.com/2021/04/06/2338870616074813.png)
只要有兩臺真正服務器就可以制作負載均衡
ok
尚在學習有錯誤請指出!!!!!謝謝,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272969.html
標籤:其他
上一篇:Tomcat 啟動例外: java.lang.ClassFormatError: Truncated class file錯誤解決
下一篇:Linux的指令1 基本指令
