Keepalived是一個routing software,
它可以做到load balancing和high-availability,
load balancing會倚靠lvs (linux virtual server, ipvsadm)來做到(但這篇只會做HA,下篇再講怎麼做load balancing),
而high-availability是靠VRRP protocol來達成,
那什麼是VRRP(Virtual Router Redundancy Protocol )?
簡單的說,就是為了當某個router故障,然後可以快速的failover,
Keepalivied就是利用這protocol來達到HA.
假設我們有兩檯web server,
IP分別為
1. 10.1.190.142
2. 10.1.190.143
在兩檯都安裝好keepalived的情況下,
被設定為"MASTER"的那檯機器,會去binding 一個我們所指定的virtual ip!
這裡先假設virtual ip為10.1.190.150
1. Install the packages
首先先ssh到第一檯和第二檯上,安裝等等會用到的幾個packages,
1. keepalived
2. nginx: 你也可以選擇你想要用的web server
3. postfix: optional, 安裝postfix的目的在於,server壞掉時,會寄信通知你
2. Set up environment
安裝好以後,先確認你的nginx是有起來的,
開browser去打一下web server就可以簡單確認!
接著先到第一檯機器上去進行keepalived的config設定
內容如下:
接著就到第二檯上去進行設定,
其實內容大致上和第一檯一模一樣,
只有router_id, state, priority需要變動
內容如下,
完成設定以後,分別在兩檯機器上打開keepalived,
3. Verify
最後就來驗證ha是work的,
先到第一檯上去,因為第一檯設定為MASTER,
因此理論上第一檯除了自己的IP (10.1.190.142)以外,
還要拿到這個virtual ip (10.1.190.150),
打下面的指令可以驗證,
接著打開web browser去連virtual ip (10.1.190.150),
都會導到第一檯的nginx去!
這時候把第一檯關機!
此時第二檯應該要拿到virtual ip,
一樣打下面的指令做驗證
然後再打開web browser去連virtual ip (10.1.190.150),
此時看到的內容會是第二檯nginx上的內容!
除此之外,如果postfix有設定成功,
應該是會收到mail跟你說host2進入了MASTER模式,
標題是:[host2] VRRP Instance VI_1 - Entering MASTER state
內容是:=> VRRP Instance is now owning VRRP VIPs <= 下一篇再教怎麼用keepalived做load balance.
它可以做到load balancing和high-availability,
load balancing會倚靠lvs (linux virtual server, ipvsadm)來做到(但這篇只會做HA,下篇再講怎麼做load balancing),
而high-availability是靠VRRP protocol來達成,
那什麼是VRRP(Virtual Router Redundancy Protocol )?
簡單的說,就是為了當某個router故障,然後可以快速的failover,
Keepalivied就是利用這protocol來達到HA.
假設我們有兩檯web server,
IP分別為
1. 10.1.190.142
2. 10.1.190.143
在兩檯都安裝好keepalived的情況下,
被設定為"MASTER"的那檯機器,會去binding 一個我們所指定的virtual ip!
這裡先假設virtual ip為10.1.190.150
1. Install the packages
首先先ssh到第一檯和第二檯上,安裝等等會用到的幾個packages,
1. keepalived
2. nginx: 你也可以選擇你想要用的web server
3. postfix: optional, 安裝postfix的目的在於,server壞掉時,會寄信通知你
apt-get install keepalived nginx postfix
2. Set up environment
安裝好以後,先確認你的nginx是有起來的,
開browser去打一下web server就可以簡單確認!
接著先到第一檯機器上去進行keepalived的config設定
vim /etc/keepalived/keepalived.conf
內容如下:
global_defs {
notification_email {
kenyang@xxx.com
}
notification_email_from xxxx@example.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id host1 # 用來識別是哪檯機器,如果postfix有安裝,在寄信的時候,title就會跟你說是哪檯機器有問題
}
vrrp_instance VI_1 { # VI_1 可以改成自己想要的string
state MASTER # MASTER意思是這檯為主要的機器
interface eth0 # 把virtual ip binding在eht0上
virtual_router_id 1 # 0~255之間,用來識別是哪一個instance
priority 100
virtual_ipaddress {
10.1.190.150/24
}
smtp_alert # 當有問題時要發信通知
}
接著就到第二檯上去進行設定,
其實內容大致上和第一檯一模一樣,
只有router_id, state, priority需要變動
內容如下,
global_defs {
... same with host1 ...
router_id host2
}
vrrp_instance VI_1 { # VI_1 可以改成自己想要的string
... same with host 1 ....
state BACKUP
priority 50
}
完成設定以後,分別在兩檯機器上打開keepalived,
service keepalived start
3. Verify
最後就來驗證ha是work的,
先到第一檯上去,因為第一檯設定為MASTER,
因此理論上第一檯除了自己的IP (10.1.190.142)以外,
還要拿到這個virtual ip (10.1.190.150),
打下面的指令可以驗證,
root@host1:~$ ip a | grep eth0 | grep inet
inet 10.1.190.142/24 brd 10.1.190.255 scope global eth0
inet 10.1.190.150/24 scope global secondary eth0
接著打開web browser去連virtual ip (10.1.190.150),
都會導到第一檯的nginx去!
這時候把第一檯關機!
root@host1:~$ shutdown now
此時第二檯應該要拿到virtual ip,
一樣打下面的指令做驗證
root@host2:~$ ip a | grep eth0 | grep inet
inet 10.1.190.143/24 brd 10.1.190.255 scope global eth0
inet 10.1.190.150/24 scope global secondary eth0
然後再打開web browser去連virtual ip (10.1.190.150),
此時看到的內容會是第二檯nginx上的內容!
除此之外,如果postfix有設定成功,
應該是會收到mail跟你說host2進入了MASTER模式,
標題是:[host2] VRRP Instance VI_1 - Entering MASTER state
內容是:=> VRRP Instance is now owning VRRP VIPs <= 下一篇再教怎麼用keepalived做load balance.