Keepalived 配置高可用集群

2021-09-08 23:01:26 字數 4604 閱讀 4323

一、keepalived 簡介

(1) keepalived 能實現高可用也能實現負載均衡,keepalived 是通過 vrrp 協議 ( virtual router redundancy protocol ) 來實現高可用的

(2) keepalived 有三個模組,core 模組是核心模組,負責主程序的啟動 、維護及配置的載入和解析,check 模組負責健康檢查,vrrp 模組用來實現 vrrp 協議

(3) 在 vrrp 協議裡,會將多台功能相同的伺服器組成乙個小組 ( 通常是一台 master 和一台 backup 角色 ) ,master 會通過組播的形式向各個 backup 傳送 vrrp 協議的資料報,當 backup 收不到 master 發來的 vrrp 資料報時,就會認為 master 宕機了,此時就需要根據各個 backup 的優先順序來決定誰成為新的 master

二、實驗環境

1. 準備兩台機器 ( centos 7 ) ,一台作為 master ( 192.168.119.130 ),一台作為 backup ( 192.168.119.134 ),設定 vip ( virtual ip ) 為 192.168.119.132

2. 兩台機器上都安裝 keepalived 和 nginx,keepalived 用來實現高可用,nginx 作為服務,當檢測到 master 上的 nginx 服務不可用之後,backup 接替 master 的工作

三、master 配置

[root@localhost ~]$ yum install -y nginx                #

安裝 nginx

[root@localhost ~]$ yum install -y keepalived #

安裝 keepalived

[root@localhost ~]$ iptables -f #

關閉 iptables(只是為了做實驗方便,在實際中應自行修改)

[root@localhost ~]$ setenforce 0 #

關閉 selinux(只是為了做實驗方便,在實際中應自行修改)

[root@localhost ~]$ systemctl stop firewalld.service #

關閉 firewall(只是為了做實驗方便,在實際中應自行修改)

[root@localhost ~]$ vim /etc/keepalived/keepalived.conf    #

編輯keepalived配置檔案,替換為如下內容

global_defs

notification_email_from [email protected]

#定義發件人,可以使用第三方郵件來傳送(如163郵箱,qq郵箱等)

smtp_server 127.0.0.1 #

指定smtp伺服器位址

smtp_connect_timeout 30 #

指定smtp連線超時時間

router_id lvs_devel #

指定執行keepalived機器的乙個標識

}vrrp_script chk_nginx

vrrp_instance vi_1

virtual_ipaddress

track_script

}

[root@localhost ~]$ vim /usr/local/sbin/check_nginx.sh   # 根據上面的配置定義監控指令碼

#!/bin/bash

d=`date --date today +%y%m%d_%h:%m:%s` #

時間變數,用於記錄日誌

n=`ps -c nginx --no-heading|wc -l` #

計算nginx程序數量

if [ $n -eq "

0" ]; then #

如果程序為0,則啟動nginx,並且再次檢測nginx程序數量,

/etc/init.d/nginx start #

如果還為0,說明nginx無法啟動,此時需要關閉keepalived

n2=`ps -c nginx --no-heading|wc -l`

if [ $n2 -eq "0"

]; then

echo

"$d nginx down, keepalived will stop

" >> /var/log/check_nginx.log

systemctl stop keepalived

fifi

[root@localhost ~]$ chmod 755 /usr/local/sbin/check_nginx.sh    #

增加執行許可權

[root@localhost ~]$ systemctl start keepalived.service #

啟動keepalived

四、backup 配置

[root@localhost ~]$ yum install -y nginx                #

安裝 nginx

[root@localhost ~]$ yum install -y keepalived #

安裝 keepalived

[root@localhost ~]$ iptables -f #

關閉 iptables(只是為了做實驗方便,在實際中應自行修改)

[root@localhost ~]$ setenforce 0 #

關閉 selinux(只是為了做實驗方便,在實際中應自行修改)

[root@localhost ~]$ systemctl stop firewalld.service #

關閉 firewall(只是為了做實驗方便,在實際中應自行修改)

[root@localhost ~]$ vim /etc/keepalived/keepalived.conf    #

編輯keepalived配置檔案,替換為如下內容

global_defs

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id lvs_devel

}vrrp_script chk_nginx

vrrp_instance vi_1

virtual_ipaddress

track_script

}

[root@localhost ~]$ vim /usr/local/sbin/check_nginx.sh    #

根據上面的配置定義監控指令碼

#!/bin/bash

d=`date --date today +%y%m%d_%h:%m:%s` #

時間變數,用於記錄日誌

n=`ps -c nginx --no-heading|wc -l` #

計算nginx程序數量

if [ $n -eq "

0" ]; then #

如果程序為0,則啟動nginx,並且再次檢測nginx程序數量,

/etc/init.d/nginx start #

如果還為0,說明nginx無法啟動,此時需要關閉keepalived

n2=`ps -c nginx --no-heading|wc -l`

if [ $n2 -eq "0"

]; then

echo

"$d nginx down, keepalived will stop

" >> /var/log/check_nginx.log

systemctl stop keepalived

fifi

[root@localhost ~]$ chmod 755 /usr/local/sbin/check_nginx.sh    #

增加執行許可權

[root@localhost ~]$ systemctl start keepalived.service #

啟動keepalived

五、測試

(1) 直接訪問 vip ( 192.168.119.132 ) 看是否能訪問成功

(2) 關閉 master 上的 keepalived 服務看是否能訪問成功 ( 日誌在 /var/log/messages 檢視 )

nginx高可用 keepalived配置檔案說明

1 配置高可用的準備工作 1 需要兩台伺服器 192.168.17.129 和 192.168.17.131 2 在兩台伺服器安裝 nginx 3 在兩台伺服器安裝 keepalived 起到路由的作用,對外提供虛擬ip進行訪問 2.keepalived配置檔案 configuration file...

Keepalived高可用配置檔案

keepalived部署到伺服器上面時需要3個相同ip段的伺服器,兩台部署nginx keepalived,其中一台的ip在keepalived的配置裡填進 虛擬ip vip 裡面 主 configuration file for keepalived global defs global defs...

Keepalived高可用集群

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