新聞中心
在計(jì)算機(jī)網(wǎng)絡(luò)架構(gòu)中,VIP(Virtual IP)是指一個(gè)虛擬的IP地址,可以分配給多個(gè)不同的物理主機(jī),使得它們看起來(lái)像是一個(gè)單獨(dú)的主機(jī)。這種技術(shù)在一定程度上提高了網(wǎng)絡(luò)的可靠性和可用性,因?yàn)楫?dāng)一個(gè)物理主機(jī)出現(xiàn)故障時(shí),其他主機(jī)可以接管它的 VIP,并繼續(xù)提供服務(wù)。在 Linux 系統(tǒng)中,創(chuàng)建 VIP 是一個(gè)簡(jiǎn)單而重要的操作,本文將詳細(xì)介紹這個(gè)過(guò)程。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到南通網(wǎng)站設(shè)計(jì)與南通網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋南通地區(qū)。
一、創(chuàng)建 VIP 的前提條件
在開(kāi)始創(chuàng)建 VIP 之前,需要明確以下幾點(diǎn):
1. Linux 系統(tǒng)必須在一個(gè)子網(wǎng)內(nèi);
2. 子網(wǎng)掩碼必須是255.255.255.0;
3. 如果系統(tǒng)會(huì)用到多個(gè) VIP,則需要把多個(gè) VIP 統(tǒng)一放在一個(gè) VLAN(虛擬局域網(wǎng))里。
以上條件不滿足的話就不可能創(chuàng)建 VIP,因此先行檢查下。
二、創(chuàng)建 VIP 的流程
1. 配置網(wǎng)卡
一般情況下,我們需要對(duì)網(wǎng)卡進(jìn)行配置,才能使其支持 VIP。以 CentOS 7 為例,在命令行中執(zhí)行以下命令:
“`
$ vi /etc/sysconfig/network-scripts/ifcfg-ens33
“`
(ens33 為網(wǎng)卡名,具體情況根據(jù)實(shí)際調(diào)整。)
編輯這個(gè)文件,加入以下內(nèi)容:
“`
DEVICE=ens33:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.0.199
NETMASK=255.255.255.0
“`
以上內(nèi)容是:將網(wǎng)卡名稱更改為“ens33:0”,設(shè)置靜態(tài)IP地址為192.168.0.199/24,開(kāi)機(jī)自動(dòng)啟動(dòng)這個(gè)網(wǎng)卡。
2. 禁用 ARP
在使用 VIP 時(shí),需禁用 ARP(地址解析協(xié)議),否則會(huì)發(fā)生 IP 沖突的錯(cuò)誤。通常情況下可以在防火墻中進(jìn)行禁用。
在 CentOS 7 下,可以使用以下命令禁用 ARP:
“`
$ echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
$ echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
“`
3. 測(cè)試 VIP
完成以上兩個(gè)步驟后,就可以測(cè)試 VIP 是否正常工作了??梢允褂靡韵旅顧z查是否綁定 VIP:
“`
$ ip a | grep ens33:0
“`
如果返回結(jié)果中有正在使用的 VIP 地址,則說(shuō)明 VIP 已經(jīng)綁定成功了。
4. 配置應(yīng)用程序
需要應(yīng)用程序支持 VIP,例如,如果需要在一個(gè) Web 服務(wù)器上使用 VIP,則需要修改相關(guān)的配置文件,使它們?cè)谑褂?VIP 后能夠正常運(yùn)行。
假設(shè)我們要使用 VIP 地址來(lái)訪問(wèn) Apache Web 服務(wù)器,則需要編輯 Apache 的主配置文件 /etc/httpd/conf/httpd.conf,修改 ServerName 和 Listen 屬性,設(shè)置為 VIP 地址就可以了。例如:
“`
ServerName 192.168.0.199:80
Listen 192.168.0.199:80
“`
保存修改后,重啟 Apache 服務(wù)器,即可在瀏覽器中使用 VIP 地址來(lái)訪問(wèn)了。
三、
通過(guò)本文的介紹,我們可以了解到,創(chuàng)建 VIP 地址是一個(gè)簡(jiǎn)單但極為重要的過(guò)程,它可以增強(qiáng) Linux 系統(tǒng)在網(wǎng)絡(luò)中的可用性和可靠性。在實(shí)際應(yīng)用中,需要根據(jù)實(shí)際情況調(diào)整網(wǎng)卡配置、禁用 ARP、測(cè)試 VIP 和配置應(yīng)用程序等步驟,才能完成 VIP 地址的創(chuàng)建和使用。希望本文能夠幫助讀者加深對(duì) VIP 技術(shù)的理解,進(jìn)一步提高 Linux 系統(tǒng)的網(wǎng)絡(luò)架構(gòu)水平。
相關(guān)問(wèn)題拓展閱讀:
- linux實(shí)現(xiàn)HA有幾種方法
linux實(shí)現(xiàn)HA有幾種方法
【實(shí)驗(yàn)配置環(huán)境】
服務(wù)器系統(tǒng):CentOS-5.6
LVS主節(jié)點(diǎn)(lvs-master):192.168.2.250(eth0) 心跳直連接口:192.168.1.250(eth1)
LVS備節(jié)點(diǎn)(lvs-backup):192.168.2.251(eth0) 心跳直連接口:192.168.1.251(eth1)
Web Server-1:192.168.2.252
Web Server-2:192.168.2.253
VIP(虛擬ip):192.168.2.254
注:4臺(tái)服務(wù)器已經(jīng)配置好LNMP(Linux+Nginx+PHP(FastCGI模式)+mysql)網(wǎng)站運(yùn)行環(huán)境,當(dāng)然使用apache也可以。這里主備節(jié)點(diǎn)也當(dāng)作真實(shí)服務(wù)器使用,所以也配置了網(wǎng)站環(huán)境。
本文配置拓?fù)鋱D:
主備調(diào)度器eth1接口使用交叉線相連(理冊(cè)運(yùn)源論上是這樣)
線序?yàn)椋?一頭為568A標(biāo)準(zhǔn):白綠,綠;白橙,藍(lán);白藍(lán),橙;白棕,棕
另一頭為568B標(biāo)準(zhǔn):白橙,橙;白綠,藍(lán);白藍(lán),綠;白棕,棕
在LVS主節(jié)點(diǎn)和備節(jié)點(diǎn)的/etc/hosts中加入以下內(nèi)容:
#vim /etc/hosts
192.168.2.250 lvs-master
192.168.2.251 lvs-backup
修改主機(jī)名:悄中
# vim /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
hostname=lvs-master
GATEWAY=192.168.2.1
# vim /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 lvs-master localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
這2個(gè)文件都要修改,修改完后重啟生效,備份機(jī)修改方法一樣,不在重述。
【下載軟件】
wget
wget
wget
wget
wget
一、 配置LVS主節(jié)點(diǎn)(lvs-master)
1. 安裝libnet
# tar zxvf libnet-1.1.2.2.tar.gz
# cd libnet
# ./configure
# make && make install
# cd ..
2. 安裝ipvsadm
# yum install kernel-devel //安裝對(duì)應(yīng)內(nèi)核的kernel-devel
# tar zxvf ipvsadm-1.24.tar.gz
# cd ipvsadm-1.24
# ln -s /usr/src/kernels/`ls /usr/src/kernels/` /usr/src/linux //將當(dāng)前使用內(nèi)核連接到/usr/src/linux
# make && make install
# cd..
3. 安裝Heartbeat
3.1 確認(rèn)系統(tǒng)已經(jīng)安裝以下軟件(系統(tǒng)光盤中有)
libxslt、libxslt-devel、libgcrypt-devel、autoconf、州態(tài)automake、pkgconfig、libgpg-error-devel、libtool、sgml-common、opensp、openjade、xml-common、docbook-dtds、docbook-style
如果在編譯安裝過(guò)程中出錯(cuò),很有可能是因?yàn)槿鄙倭讼嚓P(guān)的軟件包
3.2 安裝glue
# groupadd haclient
# useradd -g haclient -M -s /in/nologin hacluster
# tar jxvf glue-1.0.7.tar.bz2
# cd Reusable-Cluster-Components-glue–glue-1.0.7/
# ./autogen.sh
# ./configure
# make && make install
# cd ..
3.3 安裝 agents
# tar zxvf ClusterLabs-resource-agents-agents-1.0.4-0-gc06b6f3.tar.gz
# cd ClusterLabs-resource-agents-c06b6f3/
# ./autogen.sh
# ./configure
# make && make install
# cd..
3.4 安裝Heartbeat
# tar jxvf Heartbeat-3-0-STABLE-3.0.4.tar.bz2
# cd Heartbeat-3-0-STABLE-3.0.4
# ./ConfigureMe configure
# gmake && make install
# cd..
4. 配置lvs啟動(dòng)腳本
本實(shí)驗(yàn)采用的是lvs-DR模式,該模式的特點(diǎn)是客戶端的請(qǐng)求從主/備節(jié)點(diǎn)進(jìn)入分配到web server,然后web server的響應(yīng)是直接交付給客戶端的。
# vim /etc/init.d/lvs
#!/bin/sh
#chkconfig:
#description: start_lvs_of_dr
VIP1=192.168.2.254
RIP1=192.168.2.250
RIP2=192.168.2.251
RIP3=192.168.2.252
RIP4=192.168.2.253
./etc/rc.d/init.d/functions
case “$1” in
start)
echo “開(kāi)啟LVS DirectorServer…”
#設(shè)置虛擬IP地址
#LVS啟動(dòng)時(shí)添加VIP的網(wǎng)口eth0:0
/in/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/in/route add -host $VIP1 dev eth0:0
#清除IPVS表
/in/ipvsadm -C
#設(shè)置LVS
/in/ipvsadm -A -t $VIP1:80 -s lc
/in/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
/in/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
/in/ipvsadm -a -t $VIP1:80 -r $RIP3:80 –g
/in/ipvsadm -a -t $VIP1:80 -r $RIP4:80 -g
#使用ipvsadm來(lái)轉(zhuǎn)發(fā)客戶端請(qǐng)求。-s lc為最小連接數(shù)算法,-g是采用DR模式。有多少RIP就添加幾條記錄。
#啟動(dòng)LVS
/in/ipvsadm
;;
stop)
echo “停止LVS DirectorServer…”
#關(guān)閉時(shí)清除ipvsadm表
/in/ipvsadm –C
;;
*)
echo “Usage: $0 {start|stop}”
exit 1
esac
注:這個(gè)腳本不要使用chkconfig管理,放入/etc/init.d內(nèi)即可。
5. 安裝ldirectord相關(guān)組件
默認(rèn)安裝完上面的三個(gè)軟件包之后,ldirectord已經(jīng)安裝到系統(tǒng)中,默認(rèn)路徑在 /usr/etc/ ,由于ldirectord是由perl語(yǔ)言編寫的,所以必須安裝相關(guān)的軟件包:Socket6、libwww-perl、URI、MailTools、HTML-Parser
# yum -y install perl-Socket6 perl-libwww-perl perl-URI perl-MailTools perl-HTML-Parser
也可以在
網(wǎng)站下載相關(guān)軟件包安裝
安裝方法:
# perl Makefile.PL
# make && make install
6. 配置heartbeat
# cp -a /usr/etc/ha.d/ /etc/
# rm -fr /usr/etc/ha.d/
# ln -s /etc/ha.d/ /usr/etc/
# cp /usr/share/doc/haresources /etc/ha.d/
# cp /usr/share/doc/authkeys /etc/ha.d/
# cp /usr/share/doc/ha.cf /etc/ha.d/
# chmod 600 /etc/ha.d/authkeys //這個(gè)文件的權(quán)限必須是600
6.1 修改配置文件
6.1.1 authkeys文件配置(authkeys文件的作用是用來(lái)設(shè)置心跳信息的加密方式)
vim /etc/ha.d/authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
此設(shè)置是使用crc循環(huán)冗余校驗(yàn),不采用加密的方式。
6.1.2 ha.cf為heartbeat的主配置文件,修改下面配置。
# vim /etc/ha.d/ha.cf
#日志文件位置
logfile /var/log/ha-log
#指定主備服務(wù)器多久發(fā)送一次心跳
keepalive 2
#指定30秒沒(méi)有收到對(duì)方心跳就認(rèn)為對(duì)方已經(jīng)down機(jī)
deadtime 30
#10秒沒(méi)有收到心跳,便發(fā)出警報(bào)。
warntime 10
#對(duì)方DOWN后120秒重新檢測(cè)一次。
initdead 120
#指定監(jiān)聽(tīng)端口
udpport 694
#心跳監(jiān)聽(tīng)網(wǎng)口,這里為eth1
bcast eth1 //去掉后面#linux
#備份機(jī)的心跳線接口與接口IP
ucast eth1 192.168.1.251
#主節(jié)點(diǎn)恢復(fù)后,自動(dòng)收回資源。
auto_failback on
#指定主備服務(wù)器的主機(jī)名稱,即在hosts文件中指定的。之一個(gè)node為主服務(wù)器,第二個(gè)node為備服務(wù)器。
node lvs-master //服務(wù)器的主機(jī)名
node lvs-backup
#當(dāng)192.168.2.1、192.168.2.2這兩個(gè)IP都不能ping通時(shí),對(duì)方即開(kāi)始接管資源。
ping_group group1 192.168.2.1 192.168.2.2
#啟用ipfail腳本
respawn root /usr/lib/heartbeat/ipfail
#指定運(yùn)行ipfail的用戶。
apiauth ipfail gid=root uid=root
6.1.3 haresources文件配置,這個(gè)文件是指定虛擬IP和改主機(jī)控制的腳本。
# vim /etc/ha.d/haresources
lvs-master 192.168.2.254 lvs ldirectord
// master.lvs.net可為主節(jié)點(diǎn)主機(jī)名,192.168.2.254為虛擬IP
6.1.4 ldirectord.cf是ldirectord進(jìn)程的配置文件,該進(jìn)程用來(lái)監(jiān)視web server的運(yùn)行狀況,如果web server不能響應(yīng)請(qǐng)求則把它排除在轉(zhuǎn)發(fā)列表外。
復(fù)制安裝文件ldirectord目錄上的ldirectord.cf 到/etc/ha.d/conf下,如果找不到可以查找一下:find / -name ldirectord.cf
# mkdir /etc/ha.d/conf
# cp ldirectord.cf /etc/ha.d/conf
# vim /etc/ha.d/conf/ldirectord.cf
# Global Directives
#設(shè)置真實(shí)web server的超時(shí)時(shí)間
checktimeout=30
#監(jiān)視真實(shí)web server的時(shí)間間隔
checkinterval=10
#如全部真實(shí)web server失敗,則轉(zhuǎn)發(fā)至本地
fallback=127.0.0.1:80
#改變配置文件內(nèi)容,不需要重新ldirectord
autoreload=yes
#指定日志位置
logfile=”/var/log/ldirectord.log”
quiescent=no
# A sample virual with a fallback that will override the gobal setting
#指定虛擬IP
virtual=192.168.2.254:80
#指定真實(shí)web server IP及監(jiān)聽(tīng)端口
real=192.168.2.250:80 gate
real=192.168.2.251:80 gate
real=192.168.2.252:80 gate
real=192.168.2.253:80 gate
fallback=127.0.0.1:80 gate
service=http
#指定轉(zhuǎn)發(fā)算法
scheduler=lc //這里的算法要和LVS腳本的算法一樣
protocol=tcp
#監(jiān)視VIP服務(wù)器的方法
checktype=negotiate
checkport=80
#監(jiān)聽(tīng)測(cè)試頁(yè)面名稱,這個(gè)頁(yè)面放入真實(shí)web server web服務(wù)的根目錄
request=”lvs_testpage.html”
#指定測(cè)試頁(yè)面返回內(nèi)容
receive=”test Page”
virtualhost= lvstest.net
配置文件中的lvs_testpage.html必須存在網(wǎng)站根目錄下,校驗(yàn)一下配置:
# ldirectord -d /etc/ha.d/conf/ldirectord.cf start //按Ctrl+C結(jié)束
# cp /etc/ha.d/shellfuncs /usr/lib/ocf/resource.d/heartbeat/.ocf-shellfuncs
以上lvs和heartbeat配置完成。
LVS備節(jié)點(diǎn)(lvs-backup)的配置和LVS主節(jié)點(diǎn)(lvs-master)完全一樣。
只是在/etc/ha.d/ha.cf中“ucast eth1 192.168.1.251”此配置地址不一樣。
二、配置真實(shí)web server腳本
在每臺(tái)web server的/etc/init.d目錄下放置realserver腳本,這里主備節(jié)點(diǎn)同時(shí)也作為web server使用。
# vim /etc/init.d/realserver
#!/bin/bash
# chkconfig:
# description: lvs_dr_realserver
#指定虛擬IP
VIP=192.168.2.254
host=`/bin/hostname`
case “$1” in
start)
# Start LVS-DR real server on this machine.
/in/ifconfig lo down
/in/ifconfig lo up
#修改相關(guān)內(nèi)核參數(shù)
echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce
/in/ifconfig lo:0 $VIP netmask 255.255.255.255 up
/in/route add -host $VIP dev lo:0
;;
stop)
# Stop LVS-DR real server loopback device(s).
/in/ifconfig lo:0 down
;;
status)
# Status of LVS-DR real server.
islothere=`/in/ifconfig lo:0 | grep $VIP`
isrothere=`netstat -rn | grep “l(fā)o” | grep $VIP`
if ;
then
# Either the route or the lo:0 device
# not found.
echo “LVS-DR real server Stopped.”
else
echo “LVS-DR Running.”
fi
;;
*)
# Invalid entry.
echo “$0: Usage: $0 {start|status|stop}”
exit 1
;;
esac
# chmod +x /etc/init.d/lvs
# chmod +x /etc/init.d/realserver
# service heartbeat start //主備LVS調(diào)度器上執(zhí)行
# /etc/init.d/lvs start //主備LVS調(diào)度器上執(zhí)行
# /etc/init.d/realserver start //真實(shí)web服務(wù)器上執(zhí)行
# chkconfig –level 35 heartbeat on
# echo “/etc/init.d/lvs start” >> /etc/rc.local //開(kāi)機(jī)啟動(dòng)
# echo “/etc/init.d/realserver start” >> /etc/rc.local //開(kāi)機(jī)啟動(dòng)
三、測(cè)試
linux 創(chuàng)建vip的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux 創(chuàng)建vip,快速學(xué)習(xí):如何在 Linux 上創(chuàng)建 VIP,linux實(shí)現(xiàn)HA有幾種方法的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文標(biāo)題:快速學(xué)習(xí):如何在Linux上創(chuàng)建VIP(linux創(chuàng)建vip)
本文地址:http://www.dlmjj.cn/article/coeegse.html


咨詢
建站咨詢
