日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

來源:程序員人生   發布時間:2014-05-31 08:41:33 閱讀次數:3673次
在網絡系統中,除了用負載均衡來提高性能和可用性外,還有大量的主從備份模式應用,比如當前版本的 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,但勝在簡單易用。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩三级网址 | av高清在线观看 | 一级片av | 国产精品国产三级国产a | 国产精品久久久久久妇 | 欧美一区| 欧美精品成人影院 | 爱情岛论坛亚洲线路一 | 极品束缚调教一区二区网站 | 欧美性猛交xxxxx水多 | 久久999| 精品在线一区二区三区 | 综合久 | 黄色毛片小视频 | wwwsss黄色 | 国产一二区免费视频 | 久久久国产一区 | 国产福利精品视频 | 日韩精品在线播放 | 九九九久久国产免费 | 欧美午夜一区二区 | 一区二区三区在线视频播放 | 日韩精品在线观看视频 | 天天操夜夜撸 | 1000部精品久久久久久久久 | 四季久久免费一区二区三区四区 | 国产精品午夜一区 | 久久婷婷成人综合色 | 国产欧美日本在线 | 国产精品综合网 | 国产二区三区 | www色亚洲 | 伊人久久爱| 日韩精品 | 国产精品久久久久久久久免费 | 成年人免费观看视频网站 | 精品色综合 | 综合日韩欧美 | 天天综合网91| aaaaaa免费视频 | 日韩国产欧美一区二区 |