1 什麼是keepalived
keepalived是解決單點故障的一種解決方案,通過
VRRP 協定實作高可用性
VRRP 協定将兩台或多台路由器裝置虛拟成一個裝置,對外提供虛拟路由器 IP(一個或多個),而在路由器組内部,如果實際擁有這個對外 IP 的路由器如果工作正常的話就是 MASTER,或者是通過算法選舉産生, MASTER 實作針對虛拟路由器 IP 的各種網絡功能,其他裝置不擁有該虛拟 IP,狀态是 BACKUP。
2ubuntu 安裝keepalived
2.1 依賴下載下傳
apt-get install libssl-dev
apt-get install openssl
apt-get install libpopt-dev
2.2 安裝
tar -zxvf keepalived-1.2.15.tar.gz
./configure
make
Sudo make install
2.3 配環境
在/usr
find -name keepalived
cp /usr/local/sbin/keepalived /usr/sbin
拷貝可執行檔案,沒有這一步将會在執行service keepalived start的時候報錯:keepalived: command not found
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
需要在/etc目錄下建立keepalived目錄
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
建立入口腳本檔案,可以接收start| stop | status | restart
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
拷貝系統配置檔案(上面提到的日志就是在這裡配置的
2.4 改配置檔案
sudo vi /etc/init.d/keepalived
# Source function library
#. /etc/rc.d/init.d/functions
./lib/lsb/init-functions
# Source configuration file (we set KEEPALIVED_OPTIONS there)
#. /etc/sysconfig/keepalived
. /etc/sysconfig/keepalived
start() {
echo -n $"Starting $prog: "
#daemon keepalived ${KEEPALIVED_OPTIONS}
daemon keepalived start
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
2.5 更新啟動服務
mkdir -p /var/lock/subsys
update-rc.d keepalived defaults
apt-get install daemon
apt-get install daemon
3 環境搭建
Vip | Ip | Nginx | 狀态 |
http://192.168.137.135/ | http://192.168.137.138/ | 端口80代理了Tomcat | 主 |
http://192.168.137.135/ | http://192.168.137.139/ | 端口80代理了Tomcat | 備 |
外部統一通路 vip
Keep vip
192.168.137.135
判斷同一個keepalived.conf下配置
為主節點的伺服器是否
存活
Nginx伺服器
Ip 192.168.137.138
BACKUP
否
是
Nginx伺服器
ip 192.168.137.139
MASTER
選舉一個主節點
Nginx伺服器
Ip 192.168.137.138
MASTER
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh"
interval 2 #(檢測腳本執行的間隔)
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 60
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(調用檢測腳本)
}
virtual_ipaddress {
192.168.137.135
}
}
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/usr/local/src/check_nginx_pid.sh"
interval 2 #(檢測腳本執行的間隔)
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_http_port #(調用檢測腳本)
}
virtual_ipaddress {
192.168.137.135
}
}