nginx+keepalived

下載包?下載地址?https://www.keepalived.org/software/keepalived-2.0.20.tar.gz

解壓縮?tar -zxvf keepalived-2.0.20.tar.gz

進入到解壓完的目錄?cd keepalived-2.0.20

準備環(huán)境

安裝openssl-devel

yum -y install openssl-devel

安裝gcc

yum -y install gcc

安裝

./configure --prefix=/usr/local/keepalived

make && make install

安裝完成后系統(tǒng)會在/usr/local/keepalived目錄下生成 bin etc sbin share 這 4 個文件夾。 配置文件(keepalived.conf)在 /usr/local/keepalived/etc/keepalived 這個路徑下

拷貝配置文件

mkdir -p /etc/keepalived/?*keepalived啟動時默認去這個路徑加載配置文件*

cp keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

復制后就可以操作/etc/keepalived/keepalived.conf文件了

配置文件

主配置文件

global_defs {

? router_id NodeA

? vrrp_skip_check_adv_addr

? vrrp_garp_interval 0

? vrrp_gna_interval 0

}

vrrp_script check_script {

? ? ? ? script "/etc/keepalived/check_nginx.sh 80"

? ? ? ? interval 10

}

vrrp_instance VI_1 {

? ? state MASTER

? ? interface ens33

? ? virtual_router_id 131

? ? priority 100

? ? advert_int 1

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass 1111

? ? }

? ? virtual_ipaddress {

? ? ? ? 192.168.152.131

? ? }

}

從配置文件

global_defs {

? router_id NodeB

? vrrp_skip_check_adv_addr

? vrrp_garp_interval 0

? vrrp_gna_interval 0

}

vrrp_script check_script {

? ? ? ? script "/etc/keepalived/check_nginx.sh 80"

? ? ? ? interval 10

}

vrrp_instance VI_1 {

? ? state BACKUP

? ? interface ens33

? ? virtual_router_id 131

? ? priority 100

? ? advert_int 1

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass 1111

? ? }

? ? virtual_ipaddress {

? ? ? ? 192.168.152.131

? ? }

}

按同樣的方法配置節(jié)點B并修改配置文件,可將A節(jié)點的配置文件復制到B節(jié)點,并修改以下幾項:

router_id NodeB

state BACKUP

priority 99

其它項不必修改。

啟動keepalived

/usr/local/keepalived/sbin/keepalived -D

查看進程

ps aux | grep keepalived


Keepalived 正常運行時,共啟動 3 個進程,其中一個進程是父進程,負責監(jiān)控其子進程;一個是 vrrp 子進程;另外一個是 checkers 子進程

查看虛擬IP是否已經綁定到網卡上

ip a

常用命令

systemctl restart keepalived

配置nginx主從切換

將寫好的腳本復制到/etc/keepalived/文件夾下*就是keepalived的配置文件內配置的 vrrp_script check_script 節(jié)點*

腳本內容

#!/bin/bash

#author:liudan

#description:check nginx service

port=$1

count=0

for (( k=0; k<2; k++ ))

do

? ? check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://127.0.0.1:$port -o /dev/null )

? ? if [ "$check_code" != "200" ]; then

? ? ? ? count=$(expr $count + 1)

? ? ? ? sleep 3

? ? ? ? continue

? ? else

? ? ? ? count=0

? ? ? ? break

? ? fi

done

if [ "$count" != "0" ]; then

? ? #/usr/local/nginx/sbin/nginx -s restart

? ? exit 1

else

? ? exit 0

fi

配置mysql主從切換

配置文件

主配置文件

! Configuration File for keepalived

global_defs {

? ? router_id HA_MySQL #標識,雙主相同

}

vrrp_instance VI_1 {

? ? state MASTER

? ? interface ens33

? ? virtual_router_id 51 #分組,主備相同

? ? priority 100 #優(yōu)先級,這個高一點則先把它作為master

? ? advert_int 1

? ? nopreempt #不主動搶占資源,設置非搶占模式

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass 1111

? ? }

? ? virtual_ipaddress {

? ? ? ? 192.168.152.131

? ? }

}

virtual_server 192.168.152.131 3306 {

? ? delay_loop 2

? ? lb_algo wrr #帶有權重的輪詢

? ? lb_kind DR

? ? persistence_timeout 60 #同一IP的連接60秒內被分配到同一臺真實服務器

? ? protocol TCP

? ? real_server 192.168.152.132 3306 {

? ? ? ? weight 3 #權重為3

? ? ? ? notify_down /data/keepalived_shutdown.sh #當mysq服down時,執(zhí)行此腳本,殺死keepalived實現(xiàn)切換, 自殺腳本.

? ? ? ? TCP_CHECK {

? ? ? ? ? ? connect_timeout 10

? ? ? ? ? ? nb_get_retry 3

? ? ? ? ? ? delay_before_retry 3

? ? ? ? ? ? connect_port 3306

? ? ? ? }

? ? }

}

從配置文件

! Configuration File for keepalived

global_defs {

? ? router_id HA_MySQL

}

vrrp_instance VI_1 {

? ? state BACKUP

? ? interface ens33

? ? virtual_router_id 51

? ? priority 90 #優(yōu)先級,這個低一點

? ? advert_int 1

? ? nopreempt

? ? authentication {

? ? ? ? auth_type PASS

? ? ? ? auth_pass 1111

? ? }

? ? virtual_ipaddress { #虛擬IP (VIP)

? ? ? ? 192.168.152.131

? ? }

}

virtual_server 192.168.152.131 3306 {

? ? delay_loop 2 #每2秒檢查一次real_server存活

? ? lb_algo wrr

? ? lb_kind DR

? ? persistence_timeout 60

? ? protocol TCP

? ? real_server 192.168.152.130 3306 {

? ? ? ? weight 3

? ? ? ? notify_down /data/keepalived_shutdown.sh

? ? ? ? TCP_CHECK {

? ? ? ? ? ? connect_timeout 10 #連接超時時間

? ? ? ? ? ? nb_get_retry 3 #重連次數(shù)

? ? ? ? ? ? delay_before_retry 3 #重連間隔時間

? ? ? ? ? ? connect_port 3306 #健康檢查端口,配置自己mysql服務端口

? ? ? ? }

? ? }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容