keepalived如何實現高可用

1、什麼是高可用,爲什麼要設計高可用

一般指啓動兩臺相同的業務系統,當有一臺故障,另外一臺自動接管,對於用戶而言是無感知的, 專業解釋:減少系統不能提供服務的時間。

2、keepalived如何實現高可用

keepalived需要藉助一個VRRP協議來實現高可用(VRRP 虛擬路由冗餘協議)

3、keepalived高可用核心概念

1、選舉  --->	優先級
2、搶佔式   與	非搶佔式
3、腦裂  --->    fance仲裁     -->  關閉一臺服務器的電源
				軟件方案       -->  漏洞百出

4、keepalived高可用環境準備

狀態	       IP		角色
節點1	10.0.0.5	Master
節點2	10.0.0.6	Backup
VIP		10.0.0.3	

5、keepalived高可用安裝使用

1、在Lb01、Lb02上安裝keepalived高可用
[root@lb01 ~]# yum install keepalived -y
[root@lb02 ~]# yum install keepalived -y

2、在Lb01、Lb02配置keeplaived
[root@lb01 ~]# vim /etc/keepalived/keepalived.conf
global_defs {     
    router_id lb01   
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 50
    priority 150
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
}
    virtual_ipaddress {
        10.0.0.3
}
}

[root@lb02 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
    router_id lb02
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 50
    priority 100
    advert_int 1
    authentication {
    auth_type PASS
    auth_pass 1111
}
    virtual_ipaddress {
        10.0.0.3
}
}

3、在Lb01、Lb02上啓動keeplaived
[root@lb01 ~]# systemctl start keepalived.service 
[root@lb01 ~]# systemctl enable keepalived.service 

[root@lb02 ~]# systemctl start keepalived.service 
[root@lb02 ~]# systemctl enable keepalived.service 

4、 如果nginx故障了,怎麼結局,腳本怎麼寫

[root@lb01 conf.d]# cat  /scripts/check_web.sh 
#!/usr/bin/bash

#1.檢查nginx進程數量
Nginx_Process_Number=$(ps -C nginx --no-header|wc -l)
		
#2.判斷nginx進程數量
if [ $Nginx_Process_Number -lt 2 ];then
		
#3.如果進程小於2,則嘗試重新啓動一次Nginx,並等待2s
systemctl restart nginx &>/dev/null
sleep 2
Nginx_Process_Number=$(ps -C nginx --no-header|wc -l)
			
#4.如果再次執行進程還是小於2,則直接kill掉keeplaived
if [ $Nginx_Process_Number -lt 2 ];then
	pkill keepalived
fi
fi
[root@lb01 conf.d]# chmod +x /opt/keepalived.sh

5、腳本如何執行

2.1 定時任務  			(	分鐘級	)
2.2 sleep命令 		    (	秒級		)
2.3 keeplaived 調腳本    (	秒 | 分	)
[root@lb01 ~]# cat /etc/keepalived/keepalived.conf
global_defs {
	router_id LVS_01
}

#1.每5秒執行一次腳本, 腳本執行內容不能超過5秒,否則會被中斷再次重新運行腳本
vrrp_script check_web {
	script "/server/scripts/check_web.sh"
	interval 5
}

vrrp_instance VI_1 {
	nopreempt
	state MASTER
	interface eth0
	virtual_router_id 50
	priority 150
	advert_int 1
	authentication {
	auth_type PASS
	auth_pass 1111
}
virtual_ipaddress {
	10.0.0.3
}
	
#2.調用並運行該腳本
track_script {
	check_web
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章