<a href="http://s3.51cto.com/wyfs02/M02/25/08/wKioL1NYv73gECSrAAEb5uB9sDc275.jpg" target="_blank"></a>
直上幹活
dr1上keepalived的配置:
/etc/keepalived/keepalived.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<code>global_defs {</code>
<code> </code><code>router_id LVS1 </code><code># 設定lvs的id,在一個網絡内應該是唯一的</code>
<code>}</code>
<code>vrrp_sync_group </code><code>test</code> <code>{ </code><code>#設定vrrp組</code>
<code> </code><code>group {</code>
<code> </code><code>loadbalance</code>
<code> </code><code>}</code>
<code>vrrp_instance loadbalance {</code>
<code> </code><code>state MASTER </code><code>#設定lvs的狀态,報錯MASTER和BACKUP兩種,必須大寫</code>
<code> </code><code>interface eth0 </code><code>#設定對外服務的接口</code>
<code> </code><code>lvs_sync_daemon_inteface eth0 </code><code>#設定lvs監聽的接口</code>
<code> </code><code>virtual_router_id 51 </code><code>#設定虛拟路由表示</code>
<code> </code><code>priority 180 </code><code>#設定優先級,數值越大,優先級越高</code>
<code> </code><code>advert_int 1 </code><code>#設定同步時間間隔</code>
<code> </code><code>authentication { </code><code>#設定驗證類型和密碼</code>
<code> </code><code>auth_type PASS</code>
<code> </code><code>auth_pass 1111</code>
<code> </code><code>}</code>
<code> </code><code>virtual_ipaddress {</code>
<code> </code><code>192.168.56.200</code>
<code>virtual_server 192.168.56.200 80 {</code>
<code> </code><code>delay_loop 6 </code><code>#健康檢查時間間隔</code>
<code> </code><code>lb_algo rr </code><code>#負載均衡排程算法</code>
<code> </code><code>lb_kind DR </code><code>#負載均衡轉發規則</code>
<code> </code><code>#persistence_timeout 20 #設定會話保持時間,對bbs等很有用</code>
<code> </code><code>protocol TCP </code><code>#協定</code>
<code> </code><code>real_server 192.168.56.105 80 {</code>
<code> </code><code>weight 3 </code><code>#設定權重</code>
<code> </code><code>TCP_CHECK {</code>
<code> </code><code>connect_timeout 3</code>
<code> </code><code>nb_get_retry 3</code>
<code> </code><code>delay_before_retry 3</code>
<code> </code><code>connect_port 80</code>
<code> </code><code>}</code>
<code> </code><code>real_server 192.168.56.106 80 {</code>
<code> </code><code>weight 3</code>
dr2上keepalived的配置
<code> </code><code>router_id LVS2</code>
<code>vrrp_sync_group </code><code>test</code> <code>{</code>
<code> </code><code>loadbalance</code>
<code> </code><code>state BACKUP</code>
<code> </code><code>interface eth0</code>
<code> </code><code>lvs_sync_daemon_inteface eth0</code>
<code> </code><code>virtual_router_id 51</code>
<code> </code><code>priority 150</code>
<code> </code><code>advert_int 1</code>
<code> </code><code>authentication {</code>
<code> </code><code>auth_pass 1111</code>
<code> </code><code>delay_loop 6</code>
<code> </code><code>lb_algo rr</code>
<code> </code><code>lb_kind DR</code>
<code> </code><code>#persistence_timeout 20</code>
<code> </code><code>protocol TCP</code>
<code>}}</code>
啟動dr1上的keepalived
keepalived -f /etc/keepalived/keepalived.conf
檢視資訊
<a href="http://s3.51cto.com/wyfs02/M00/25/09/wKiom1NYxvOCmHcMAAMoNVxBFyc582.jpg" target="_blank"></a>
然後啟動dr2上keepalived
<a href="http://s3.51cto.com/wyfs02/M01/25/09/wKiom1NYx8nhl4n1AAKaKoioS3c510.jpg" target="_blank"></a>
在realserver1與realserver2上分别執行下面的腳本
/home/lhb/sh/rs.sh
<code>#!/bin/bash</code>
<code>vip=192.168.56.200</code>
<code>ifconfig</code> <code>lo:0 $vip netmask 255.255.255.255</code>
<code>route add -host $vip dev lo:0</code>
<code>route -n</code>
<code>echo</code> <code>"1"</code> <code>></code><code>/proc/sys/net/ipv4/conf/lo/arp_ignore</code>
<code>echo</code> <code>"2"</code> <code>></code><code>/proc/sys/net/ipv4/conf/lo/arp_announce</code>
<code>echo</code> <code>"1"</code> <code>></code><code>/proc/sys/net/ipv4/conf/all/arp_ignore</code>
<code>echo</code> <code>"2"</code> <code>></code><code>/proc/sys/net/ipv4/conf/all/arp_announce</code>
<code>#sysctl -p #檢視sysctl的配置變化,可不執行</code>
<a href="http://s3.51cto.com/wyfs02/M00/25/09/wKiom1NYyDXTImz2AAHTkozDMno067.jpg" target="_blank"></a>
然後我們開一個用戶端方位vip:
<a href="http://s3.51cto.com/wyfs02/M00/25/09/wKioL1NYyHXA8U9yAAHUq-ZWgvc199.jpg" target="_blank"></a>
在dr1上執行ipvsadm -ln
<a href="http://s3.51cto.com/wyfs02/M02/25/09/wKioL1NYyNfy7pCqAAEA0Z0Mlx0814.jpg" target="_blank"></a>
然後我們在dr1上關閉keepalived
<a href="http://s3.51cto.com/wyfs02/M01/25/09/wKioL1NYydfA9cLFAAXOgO94ZwQ400.jpg" target="_blank"></a>
這是我們繼續通路vip,通路正常如圖所示:
<a href="http://s3.51cto.com/wyfs02/M02/25/09/wKiom1NYynOAM32jAAJeU8RHV4Q819.jpg" target="_blank"></a>
通路正常,說明web業務沒有停止:
由此推斷我們的dr2已經開始接管業務了.然後到dr2上看一下資訊:
<a href="http://s3.51cto.com/wyfs02/M00/25/09/wKiom1NYyzzws4yBAALlXvAOuwE270.jpg" target="_blank"></a>
說明故障發生時,業務服務已經自動從dr1轉移到dr2上了。
然後當我們的dr1修複好後,我們執行keepalived -f /etc/keepalived/keepalived.conf
<a href="http://s3.51cto.com/wyfs02/M01/25/09/wKioL1NYzDTz3s0PAANmoNF-YaQ951.jpg" target="_blank"></a>
此時通路vip,業務仍然正常通路.
回到dr2上看資訊
<a href="http://s3.51cto.com/wyfs02/M01/25/09/wKioL1NYzLCgcPMsAAGgGIJqWv8612.jpg" target="_blank"></a>
到此為止,keepalived實作lvs的故障在主備機自動切換已經展示完畢。
本文轉自birdinroom 51CTO部落格,原文連結:http://blog.51cto.com/birdinroom/1402004,如需轉載請自行聯系原作者