高可用軟體 Keepalived 的原理與實踐

2021-08-22 08:36:05 字數 3306 閱讀 3124

版權:keepalived是c語言開源的免費路由軟體,為 linux 提供高可用的負載均衡功能:

keepalived 分為3個守護程序:

假設有兩台 centos: ip[1]=192.168.126.101 和 ip[2]=192.168.126.102 

兩台都安裝 nginx,分別作為 master / backup,同時指定 vip(虛擬ip) 為 192.168.126.100 

則客戶端可通過 192.168.126.100 高可用地訪問兩個 nginx。

參照博文 nginx 負載均衡及其 https 部署 中相關章節。安裝並防火牆放行。 

而 tomcat 的安裝對於本文不是必需的,可以參照博文 tomcat 安裝及其單機多例項部署。

keepalived 官網只提供源**,不提供任何 linux 發行版的軟體包。 

但大多數 linux 發行版(比如 centos)都提供 keepalived 軟體包作為主線軟體包。可以直接安裝:

sudo yum -y install keepalived
本示例的簡易處理規則:如果 nginx 程序不存在,則停止服務 keepalived,以便 vip 轉至其他節點。 

如果是正式部署,可以改進為 curl 檢測 tomcat,失敗時嘗試重啟 nginx/tomcat,依舊檢測失敗,才停止服務 keepalived。

#!/bin/bash

## sudo vim /etc/keepalived/nginx_check.sh

## sudo chmod +x /etc/keepalived/nginx_check.sh

nginx_count=`ps -c nginx --no-header | wc -l`

if [ $nginx_count -eq 0 ]; then

sudo systemctl stop keepalived

fi

keepalived.conf 用於配置高可用和負載均衡。 

分為三大塊:全域性定義(global_defs)、vrrp例項(vrrp_instance)、虛擬伺服器(virtual_server,本文不需要)。

## sudo cp /etc/keepalived/keepalived.conf

## sudo vim /etc/keepalived/keepalived.conf

global_defs

vrrp_script nginx_check

vrrp_instance vrrp_100

## vip(可以多個,每行乙個,不要分隔符),兩個節點必須一樣

virtual_ipaddress

## 定時檢測 nginx 狀態

track_script

}

2.4.1 非搶占模式(推薦)

節點型別全部是 backup, 

backup-1 故障時,backup-2 會搶占 vip, 

backup-1 從故障中恢復後,不會從 backup-2 搶回 vip。 

優點:故障恢復時,可避免 vip 切換造成的服務延遲。

配置要點:

vrrp_instance vrrp_100
節點型別分別 master/backup, 

master 故障時,backup 會搶占 vip, 

master 從故障中恢復後,會從 backup 搶回 vip。

配置要點:

vrrp_instance vrrp_100
sudo nginx
sudo systemctl enable keepalived

sudo systemctl start keepalived

sudo tail -f /var/log/messages ## 日誌檔案

## sudo systemctl stop keepalived

## sudo systemctl disable keepalived

修改 nginx 首頁檔案,以便能區分來自於哪個節點。

## sudo vim /usr/share/nginx/html/index.html

## 原內容:

## 第1臺修改為:

## 第2臺修改為:

注意:下列命令要在另外一台 centos 上執行,否則 keepalived 有優化演算法(優先路由至本機)。

curl -s  | grep "h1" ## 結果 [1]

curl -s | grep "h1" ## 結果 [2]

curl -s | grep "h1" ## 結果 [1],vip 指向節點1

可見,101/102分別指向第1/2個節點,101指向主節點(101)。

sudo nginx -s quit ## 節點1上執行:停掉 nginx

curl -s | grep "h1" ## empty

curl -s | grep "h1" ## [2]

curl -s | grep "h1" ## [2],vip 指向節點2

sudo nginx ## 節點1上執行:啟動 nginx

sudo systemctl start keepalived ## 節點1上執行:啟動 keepalived

curl -s | grep "h1" ## [1]

curl -s | grep "h1" ## [2]

curl -s | grep "h1" ## [2],vip 仍指向節點2,非搶占模式

mycat 的部署請參考:mycat+mysql 讀寫分離部署

可以部署兩台相同配置的 mycat,使用同乙個vip,當作本例中 nginx 那樣配置。

redis 的部署請參考:redis 伺服器單機的安裝

兩台 redis,指定了資料同步。使用同乙個vip,像本例中 nginx 那樣配置。

簡易的多個節點的高可用和負載均衡,都可以酌情採用 keepalived 實現。

Keepalived高可用集群

目錄 keepalived keepalived實現主備 keepalived軟體起初是專為lvs負載均衡軟體設計的,用來管理並監控lvs集群系統中各個伺服器節點的狀態,後來又加入了實現高可用的vrrp功能。因此 keepalived 除了能夠管理lvs軟體外,還可以作為其他服務 例如 nginx ...

keepalived高可用集群

1.keepalived服務概念說明 keepalived軟體能幹什麼?keepalived軟體起初是專為lvs負載均衡軟體設計的,用來管理並監控lvs集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的vrrp功能 keepalived軟體主要是通過vrrp協議實現高可用功能的。vrrp是v...

高可用集群 Keepalived

1.vrrp熱備 ftp,mysql,httpd,nginx,lvs 2.自動配置lvs規則 3.健康檢查 使用keepalived實現web伺服器的高可用 web伺服器ip位址分別為192.168.4.100和192.168.4.200 web伺服器的浮動vip位址為192.168.4.80 客戶...