溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

利用ucarp實(shí)現(xiàn)虛擬IP故障轉(zhuǎn)移

發(fā)布時(shí)間:2020-08-01 17:34:57 來源:網(wǎng)絡(luò) 閱讀:995 作者:stoneking 欄目:建站服務(wù)器

一、概述

  1. UCARP簡介
    UCARP允許多個(gè)主機(jī)共享一個(gè)虛擬的ip地址,以提供自動的故障恢復(fù)功能,當(dāng)其中某個(gè)主機(jī)宕機(jī)時(shí),其它的主機(jī)會自動接管服務(wù)。UCARP是CARP協(xié)議(通用地址冗余協(xié)議,最早在OpenBSD上實(shí)現(xiàn))的linux實(shí)現(xiàn)版本,同時(shí)也能移植到其它多個(gè)unix平臺,UCARP的官方網(wǎng)站:http://www.ucarp.org/project/ucarp 。
    CARP協(xié)議的特點(diǎn)在于其非常低的開銷,主機(jī)間使用加密數(shù)據(jù)傳遞信息,并且在冗余主機(jī)之間不需要任何額外的網(wǎng)絡(luò)鏈接(在README中有ucarp的簡單部署實(shí)例)。

2.配置需求
兩個(gè)或多個(gè)主機(jī)以構(gòu)成冗余主機(jī)組;
一個(gè)共享的虛擬ip地址,用以對外提供可靠的服務(wù),冗余主機(jī)組中的某個(gè)主機(jī)會對會對這個(gè)ip上的服務(wù)進(jìn)行應(yīng)答;
對于每個(gè)主機(jī),需要配置一個(gè)真實(shí)的ip地址;
一個(gè)1-255之間的共享標(biāo)識符;
一個(gè)共享的密碼(使得網(wǎng)絡(luò)間傳輸?shù)南⒍紴槊芪模?br/>當(dāng)冗余組中某個(gè)主機(jī)成為MASTER時(shí)執(zhí)行的腳本程序;
當(dāng)冗余組中某個(gè)主機(jī)不再是MASTER是執(zhí)行的腳本程序;

3 Ucap具體參數(shù)詳解
--inter (-i <if>: bind interface <if> (網(wǎng)絡(luò)接口綁定網(wǎng)絡(luò)接口)
--srcip=<ip> (-s <ip>: source (real) IP address of that host (源地址真實(shí)ip)
--vhid=<id> (-v <id>: virtual IP identifier (1-255) (虛擬ip標(biāo)識 (1-255))
--pass=<pass> (-p <pass>: password (密碼)
--preempt (-P): becomes a master as soon as possible (以最快的速度成為主服務(wù)器的角色)
--neutral (-n): don't run downscript at start if backup (如果是備份主機(jī),啟動的時(shí)候不運(yùn)行downscript.)
--addr=<ip> (-a <ip>: virtual shared IP address( 共享虛擬ip地址)
--help (-h): summary of command-line options (幫助)
--advbase=<seconds> (-b <seconds>: advertisement frequency (廣播的頻率(秒))
--advskew=<skew> (-k <skew>: advertisement skew (0-255) (不廣播)用來設(shè)置公告間隔時(shí)間, 公式(以秒計(jì))為advskew/256+advbase。advbase可以減少網(wǎng)絡(luò)流量或設(shè)置更長的主力機(jī)"輪循"時(shí)間(直至備份機(jī)來頂替它);advskew設(shè)置哪臺熱備份計(jì)算機(jī)在故障轉(zhuǎn)移時(shí)優(yōu)先成為主力機(jī)(這是必需的)
--upscript=<file> (-u <file>: run <file> to become a master (運(yùn)行一個(gè)腳本文件,使本服務(wù)器成為主服務(wù)器)
--downscript=<file> (-d <file>: run <file> to become a backup (運(yùn)行一個(gè)腳本文件,使本服務(wù)器成為從服務(wù)器)
--deadratio=<ratio> (-r <ratio>: ratio to consider a host as dead (認(rèn)定主機(jī)已經(jīng)死掉的比率(閥值))
--shutdown (-z): call shutdown script at exit (在退出的時(shí)候,執(zhí)行關(guān)閉的腳本)
--daemonize (-B): run in background (運(yùn)行在后臺)
--facility=<facility> (-f): set syslog facility (default=daemon) (設(shè)置syslog工具,默認(rèn)在后臺)

Ucarp參數(shù)簡述:
-v vip標(biāo)識 –p 密碼 –a vip地址 –u 當(dāng)機(jī)器為升為master時(shí)運(yùn)行的腳本 –d 當(dāng)機(jī)器降為slave時(shí)運(yùn)行的腳本 –s心跳ip地址 –P與-k結(jié)合最小的為master機(jī)器 –B以daemon方式運(yùn)行

4.實(shí)驗(yàn)環(huán)境
Role hostname real_ip vip gateway OS
master node2 192.168.32.32/24 192.168.32.22/24 192.168.32.254 rhel5.5
slave node3 192.168.32.33/24 192.168.32.22/24 192.168.32.254 rhel5.5

二、安裝配置
1、安裝
[root@node2 ~]# tar -zxf ucarp-1.5.tar.gz #ucarp最好選擇1.2以上版本,1.1以下含有bug
[root@node2 ~]# cd ucarp-1.5
[root@node2 ucarp-1.5]# which gcc #確定gcc
/usr/bin/gcc
[root@node2 ucarp-1.5]# ./configure CC=/usr/bin/gcc --prefix=/usr/local/ucarp
[root@node2 ucarp-1.5]# make && make install

2、配置主服務(wù)器(node2)
2.1 編寫機(jī)器升為master時(shí)運(yùn)行的腳本
[root@node2 ~]# vim /etc/master-up.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr add 192.168.32.22/24 dev eth0
/bin/hostname nodevir2
/sbin/route add default gw $GATEWAY
service httpd start

2.2 編寫機(jī)器降為slave時(shí)運(yùn)行的腳本
[root@node2 ~]# vim /etc/master-down.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr del 192.168.32.22/24 dev eth0
/bin/hostname node2
/sbin/route add default gw $GATEWAY
service httpd stop

2.3 編寫ucarp運(yùn)行腳本
[root@node2 ~]# vim /etc/master.sh
#!/bin/bash
/usr/local/ucarp/sbin/ucarp -i eth0 -v 40 -p gw22 -a 192.168.32.22 -u /etc/master-up.sh -d /etc/master-down.sh -s 192.168.32.32 -P -B

2.4 啟動服務(wù)
[root@node2 ~]# . /etc/master.sh
[root@node2 ~]# ps -ef | grep ucarp
root 11695 1 0 11:33 ? 00:00:00 /usr/local/ucarp/sbin/ucarp -i eth0 -v 40 -p gw22 -a 192.168.32.22 -u /root/master-up.sh -d /root/master-down.sh -s 192.168.32.32 -P -B
[root@node2 ~]# hostname #hostname切換成功
nodevir2
[root@node2 ~]# ip addr show | grep 22 #master-up.sh腳本生效
inet 192.168.32.22/24 scope global secondary eth0
[root@nodevir2 ~]# ps -ef | grep httpd #httpd服務(wù)啟動
root 11726 1 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11727 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11729 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11730 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11731 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11732 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11733 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11734 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
apache 11735 11726 0 11:33 ? 00:00:00 /usr/sbin/httpd
root 11897 6167 0 11:44 pts/1 00:00:00 grep httpd

3.配置備服務(wù)器(node3)
3.1 編寫機(jī)器升為master時(shí)運(yùn)行的腳本
[root@node3 ~]# vim /etc/master-up.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr add 192.168.32.22/24 dev eth0
/bin/hostname nodevir2
/sbin/route add default gw $GATEWAY
service httpd start

3.2 編寫機(jī)器降為slave時(shí)運(yùn)行的腳本
[root@node2 ~]# vim /etc/master-down.sh
#!/bin/bash
GATEWAY=192.168.32.254
/sbin/ip addr del 192.168.32.22/24 dev eth0
/bin/hostname node3
/sbin/route add default gw $GATEWAY
service httpd stop

3.3 編寫ucarp運(yùn)行腳本
[root@node2 ~]# vim /etc/master.sh
#!/bin/bash
/usr/local/ucarp/sbin/ucarp -i eth0 -v 40 -p gw22 -a 192.168.32.22 -u /etc/master-up.sh -d /etc/master-down.sh -s 192.168.32.33 -P -k 15 -B

3.4 啟動服務(wù)
[root@node2 ~]# . /etc/master.sh
root 5678 1 0 11:40 ? 00:00:00 /usr/local/ucarp/sbin/ucarp -v 40 -i eth0 -p gw22 -a 192.168.32.22 -u /root/master-up.sh -d /root/master-down.sh -s 192.168.32.33 -k 15 -B
[root@node3 ~]# ps -ef | grep httpd #httpd服務(wù)為啟動
root 5788 32767 0 11:46 pts/1 00:00:00 grep httpd

三. 故障切換

  1. 主故障
    [root@nodevir2 ~]# kill 5678 #down掉ucarp服務(wù),或重啟服務(wù)器

[root@node3 ~]# hostname #hostname切換成功
nodevir2
[root@node3 ~]# ip addr show | grep 22 #虛擬IP切換成功
inet 192.168.32.22/24 scope global secondary eth0
[root@node3 ~]# ps -ef | grep httpd #服務(wù)切換成功
root 5824 1 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5826 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5827 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5828 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5829 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5830 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5831 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5832 5824 0 11:47 ? 00:00:00 /usr/sbin/httpd
apache 5833 5824 0 11:47 ? 00:00:00 /

2.主恢復(fù)
[root@node2 ~]# . /etc/master.sh
[root@nodevir2 ~]# hostname
nodevir2
[root@node2 ~]# ps -ef | grep httpd
root 11969 1 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11970 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11972 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11973 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11974 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11975 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11976 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11977 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
apache 11978 11969 0 11:46 ? 00:00:00 /usr/sbin/httpd
[root@node2 ~]# ip addr show | grep 22
inet 192.168.32.22/24 scope global secondary eth0

[root@node3 ~]# hostname
node3
[root@node3 ~]# ps -ef | grep httpd
root 6148 32767 0 12:02 pts/1 00:00:00 grep httpd
[root@node3 ~]# ip addr show | grep 22 #成功切換

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI