多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > Linux 熱備切換:簡單的命令行搞定

Linux 熱備切換:簡單的命令行搞定

來源:程序員人生   發布時間:2014-05-31 08:41:33 閱讀次數:3664次
在網絡系統中,除了用負載均衡來提高性能和可用性外,還有大量的主從備份模式應用,比如當前版本的 redis 和 mongodb。我們有無數的理由希望備份服務器能在合適的時間自動接替 "受傷倒地" 的主服務器繼續完成后續工作,也就是所謂的 "熱切換"。在 Linux 上要實現這個非常簡單,幾行命令就搞定了。

其原理就是動態綁定虛擬IP(或漂移IP)。假設主服務器 192.168.1.20,備份服務器 192.168.1.30,虛擬 IP 為 192.168.1.5。我們首先在主服務器上運行如下腳本。

$ cat master.sh

#!/bin/bash

ifconfig eth0:1 192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0 up
route add -host 192.168.1.5 dev eth0:1
arping -I eth0 -c 3 -s 192.168.1.5 192.168.1.1

$ sudo ./master.sh

ARPING 192.168.1.1 from 192.168.1.5 eth0
Unicast reply from 192.168.1.1 [00:1F:A3:2C:E2:38] 1.627ms
Unicast reply from 192.168.1.1 [00:1F:A3:2C:E2:38] 0.989ms
Unicast reply from 192.168.1.1 [00:1F:A3:2C:E2:38] 0.968ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)
很顯然上級路由(192.168.1.1)已經接受了我們的設置,用 ifconfig 可以查看虛擬 IP 的綁定信息。

$ cat a.txt

eth0 Link encap:Ethernet HWaddr 00:0c:29:04:a0:db
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe04:a0db/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:238 errors:0 dropped:0 overruns:0 frame:0
TX packets:188 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25793 (25.7 KB) TX bytes:25405 (25.4 KB)

eth0:1 Link encap:Ethernet HWaddr 00:0c:29:04:a0:db
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
如此就將 192.168.1.5 綁定到主服務器上,相關用戶就可以通過該虛擬IP訪問主服務器服務了。

$ ssh 192.168.1.5
接著,我們在備份服務器(192.168.1.30)上運行監控腳本 (實際部署時可以作為后臺進程運行,并將輸出重定向到 /dev/null)。

$ cat slave.sh

#!/bin/bash

while true
do
ping -c 3 192.168.1.20

if [ $? -eq 0 ]; then
echo "Master Server running ..."
sleep 5
else
echo "Backup Server running ..."

ifconfig eth0:1 192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0 up
route add -host 192.168.1.5 dev eth0:1
arping -I eth0 -c 3 -s 192.168.1.5 192.168.1.1

break
fi
done
該腳本通過循環 ping 主服務器(192.168.1.20)的返回值來判斷主服務器是否完蛋,當然也可以用諸如 wget + grep 的方式監控 WebServer 等。一旦發現主服務器異常將發送虛擬 IP 綁定設置,如此來實現將 192.168.1.5 的請求路由到備份服務器 192.168.1.30 上來。

開始運行監控腳本。

$ sudo ./slave.sh

PING 192.168.1.20 (192.168.1.20) 56(84) bytes of data.
64 bytes from 192.168.1.20: icmp_seq=1 ttl=64 time=1.01 ms
64 bytes from 192.168.1.20: icmp_seq=2 ttl=64 time=0.855 ms
64 bytes from 192.168.1.20: icmp_seq=3 ttl=64 time=0.813 ms

--- 192.168.1.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.813/0.893/1.011/0.085 ms
Master Server running ...
PING 192.168.1.20 (192.168.1.20) 56(84) bytes of data.
64 bytes from 192.168.1.20: icmp_seq=1 ttl=64 time=0.989 ms
64 bytes from 192.168.1.20: icmp_seq=2 ttl=64 time=0.887 ms
64 bytes from 192.168.1.20: icmp_seq=3 ttl=64 time=0.813 ms

--- 192.168.1.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.813/0.896/0.989/0.076 ms
Master Server running ...
現在我們關掉主服務器(拔網線比關電源要好些),備份服務器將開始接管。

--- 192.168.1.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.518/0.724/0.829/0.145 ms
Master Server running ...
PING 192.168.1.20 (192.168.1.20) 56(84) bytes of data.

--- 192.168.1.20 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2004ms

Backup Server running ...
ARPING 192.168.1.1 from 192.168.1.5 eth0
Unicast reply from 192.168.1.1 [00:1F:A3:2C:E2:38] 1.812ms
Unicast reply from 192.168.1.1 [00:1F:A3:2C:E2:38] 1.110ms
Unicast reply from 192.168.1.1 [00:1F:A3:2C:E2:38] 1.116ms
Sent 3 probes (1 broadcast(s))
Received 3 response(s)
這個時候,我們再次訪問 192.168.1.5 的服務時就會自動導向備份服務器 192.168.1.30 上。

等主服務器 "修好" 以后,再次運行 "sudo ./master.sh" 即可恢復。

附: 使用 down 參數可以解除虛擬IP的綁定。

$ sudo ifconfig eth0:1 192.168.1.5 broadcast 192.168.1.255 netmask 255.255.255.0 down
--------- 分隔線 ---------------

此種做法當然遠不如專業級的 heartbeat、keepalived,但勝在簡單易用。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 波多野结衣亚洲 | 日本一区二区三区四区不卡 | 亚洲精品黄色 | 性亚洲 | 91精品成人福利在线播放 | 九九九久久久 | 久久精品视频9 | 久久精品精品 | 日韩精品免费一级视频 | jizzjizz日本护士视频 | 国产码欧美日韩高清综合一区 | 国产日韩亚洲欧美 | 婷婷在线观看视频 | 亚洲高清在线观看视频 | 高清在线一区二区三区亚洲综合 | 亚洲国产大片 | 18一20岁一级毛片 | 美女牲交毛片一级视频 | 99爱视频99爱在线观看免费 | 色偷偷青青草原在线视频 | 婷婷色一二三区波多野衣 | 日本午夜理伦三级在线观看 | 性欧美一级毛片在线播放 | 欧美日在线 | 精品国产不卡一区二区三区 | 国产日韩亚洲欧洲一区二区三区 | 欧美日韩一区二区三区视频播 | 亚洲成人一区 | 片在线观看免费观看视频 | 国产在线观看精品一区二区三区91 | 日韩免费福利视频 | 国产精品亚洲精品观看不卡 | 国产欧美另类性视频 | 亚洲国产成人资源在线软件 | 免费在线播放视频 | 国产亚洲人成网站在线观看不卡 | 网友自拍视频悠悠在线 | 亚洲精品中文字幕一区在线 | 国产98在线 | 日本欧美一区二区三区在线 | 国产日韩精品视频一区二区三区 |