真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

keepalive+LVS

面試必考

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比昭化網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式昭化網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋昭化地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

keepalived的功能,腳本也能實(shí)現(xiàn)

keepalive,主要是有VRRP

基于IP(第3層網(wǎng)絡(luò)層),port(第4層傳輸層),應(yīng)用層(第7層),保證服務(wù)正常運(yùn)行

master會(huì)定時(shí)給bakcup發(fā)廣播包,不發(fā)了backup就認(rèn)為master掛了,重新選舉,這個(gè)只能檢查本機(jī),重啟本機(jī),要配合LVS才能均衡,

直接yum install -y keepalived ipvsadm

或者源碼安裝

yum install kernel kernel-devel popt-devel openssl-devel gcc gcc-c++ -y &&

wget http://www.keepalived.org/software/keepalived-1.2.1.tar.gz &&

tar -zxf keepalived-1.2.1.tar.gz && cd keepalived-1.2.1;

./configure --with-kernel-dir=/usr/src/kernels/2.6.32-696.1.1.el6.x86_64/

mkdir /etc/keepalived

\cp /usr/local/sbin/keepalived /usr/sbin/keepalived
\cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/keepalived
\cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/keepalived
\cp -r /usr/local/etc/keepalived /etc/keepalived

cd /etc/keepalived

改conf文件如下,配置文件分三部分

第一部分全局配置,主要是改郵箱和路由ID,兩個(gè)機(jī)器要一樣

第二部分是配置虛擬IP,

第三部分寫檢查本機(jī)哪些服務(wù)

! Configuration File for keepalived  #配置全局變量,全局主要是改郵件,發(fā)給誰(shuí)、從哪里發(fā)

global_defs {  

   notification_email {  

      wgkgood@139.com  #配置接收?qǐng)?bào)警郵件

   }  

   notification_email_from wgkgood@139.com  #配置誰(shuí)發(fā)郵件

   smtp_server 127.0.0.1  

   smtp_connect_timeout 30  

   router_id LVS_DEVEL  #路由id

}  

# VIP1  VRRP協(xié)議 Config這一段的配置就是生成虛擬路由器

vrrp_instance VI_1 {  

    state BACKUP    #master和backup,比優(yōu)先級(jí)更優(yōu)先

    interface eth0  #發(fā)廣播包是用哪個(gè)網(wǎng)卡發(fā)

    lvs_sync_daemon_inteface eth0  

    virtual_router_id 151  #兩臺(tái)的路由id是一樣的

    priority 100  #優(yōu)先級(jí)

    advert_int 5  

    nopreempt  #不搶占,就選優(yōu)先級(jí)高也不搶占,這條加或不加

    authentication {  

        auth_type PASS  

        auth_pass 2222  

    }  

    virtual_ipaddress {  ##虛擬ip地址,特別重要,可以回車配多個(gè)

        192.168.1.204

    }  

       notify_master #當(dāng)是matser執(zhí)行這個(gè)腳本

       notify_backup 

}  

##這里寫檢查本機(jī)什么服務(wù),只能檢查本機(jī)

virtual_server 192.168.1.204 3306 {  

    delay_loop 6     

    lb_algo wrr     

    lb_kind DR    

    persistence_timeout 60     

    protocol TCP          

    real_server 192.168.1.104 3306 {  

        weight 100         

        notify_down /data/sh/MySQL.sh  #當(dāng)down了就執(zhí)行這個(gè)腳本

       notify_up也可以

        TCP_CHECK {  

        connect_timeout 10  #連接超時(shí)時(shí)間

        nb_get_retry 3  #重連次數(shù)

        delay_before_retry 3  #重連間隔時(shí)間

        connect_port 80  #健康檢查的端口的端口

        }  

    }  

}

然后重啟/etc.init.d/keepalived restart

tail -fn 100 /var/log/message

如果沒(méi)有IPVS這個(gè)模塊,modprobe ip_vs加載這個(gè)模塊

通過(guò)ip addr list 可以看到虛擬IP配在了eth0上

        TCP_CHECK {  

        connect_timeout 10  #連接超時(shí)時(shí)間

        nb_get_retry 3  #重連次數(shù)

        delay_before_retry 3  #重連間隔時(shí)間

        connect_port 80  #健康檢查的端口的端口

        }  

1、上面是基于端口?;?、應(yīng)用:

注意:使用了腳本監(jiān)控Nginx或者M(jìn)YSQL,不需要虛擬服務(wù)器設(shè)置塊,也就是端口檢查塊。

vrrp_script chk_nginx {

    script "/data/script/nginx.sh"          #監(jiān)控服務(wù)腳本;

    interval 2                    #檢測(cè)時(shí)間間隔(執(zhí)行腳步間隔)

    weight 2

}

#實(shí)例1 

vrrp_instance VI_1 {  

    state MASTER    #master和backup,比優(yōu)先級(jí)更優(yōu)先

    interface eth0  #發(fā)廣播包是用哪個(gè)網(wǎng)卡發(fā)

    lvs_sync_daemon_inteface eth0  

    virtual_router_id 151  #兩臺(tái)的路由id是一樣的

    priority 100  #優(yōu)先級(jí)

    advert_int 5  

    nopreempt  #不搶占,就選優(yōu)先級(jí)高也不搶占,這條加或不加

    authentication {  

        auth_type PASS  

        auth_pass 2222  

    }  

#實(shí)例2

vrrp_instance VI_2 {  

    state BACKUP    #master和backup,比優(yōu)先級(jí)更優(yōu)先

    interface eth0  #發(fā)廣播包是用哪個(gè)網(wǎng)卡發(fā)

    lvs_sync_daemon_inteface eth0  

    virtual_router_id 152  #兩臺(tái)的路由id是一樣的

    priority 100  #優(yōu)先級(jí)

    advert_int 5  

    nopreempt  #不搶占,就選優(yōu)先級(jí)高也不搶占,這條加或不加

    authentication {  

        auth_type PASS  

        auth_pass 2222  

    }  

track_script {                          #以腳本為監(jiān)控chk_nginx;

        chk_nginx

    }

    virtual_ipaddress {             #設(shè)置vip

        192.168.111.188

    }

}


#其中/data/script/nginx.sh里的內(nèi)容:

#!/bin/bash

NUM=`ps -C nginx --no-header |wc -l`

if [ $NUM -eq 0 ];then

/etc/init.d/keepalived stop

sleep 30

/usr/local/nginx/sbin/nginx

/etc/init.d/keepalived start

fi

###

3、基于URL

把TCP_CHECK那部分改成

              HTTP_GET{

              url{                  #檢查url,可以指定多個(gè)

              path /

              digest ATM       #檢查后的摘要信息

              status_code 200       #檢查的返回狀態(tài)碼,

                 }

從上

把state改成backup,priority改成90,檢查的服務(wù)器改成本機(jī)

然后就可以用LAP連虛擬服務(wù)器的mysql了

keepalived的核心:

當(dāng)端口停了,執(zhí)行腳本,down.sh

然后VIP才會(huì)切到從上

腳本內(nèi)容:

/etc/init,d/keepalived stop

sleep 5

/etc/init,d/keepalived start

監(jiān)控的服務(wù) restart

從上也要有這個(gè)腳本

這個(gè)腳本要給o+x權(quán)限

互為主主

兩個(gè)實(shí)例兩個(gè)虛擬服務(wù)器,各一個(gè)VIP,互為主備,路由id不能一樣

Heartbeat

兩臺(tái)機(jī)器必須要用網(wǎng)線連起來(lái)

LVS

基于IP實(shí)現(xiàn)負(fù)載均衡是目前負(fù)載調(diào)度器中效率最高的

有NAT,TUN,DR模式

有算法:RR(round-robin)、LC(least_connection)、W(weight)RR、WLC模式等(RR為輪詢模式,LC為最少連接模式)

NAT方式:VIP所在主機(jī)可以為公網(wǎng)IP,進(jìn)出都要做個(gè)地址轉(zhuǎn)換,效率比較低。用戶請(qǐng)求LVS到達(dá)director(主管),director將請(qǐng)求的報(bào)文的目標(biāo)地址和端口改成后端的realserver地址和端口,請(qǐng)求到達(dá)realserver,realserver將數(shù)據(jù)返給director,director再把數(shù)據(jù)返給用戶(兩次請(qǐng)求都要經(jīng)過(guò)director),訪問(wèn)量大的話director會(huì)成為瓶頸。后端不能超過(guò)20臺(tái)。  

DR原理(將VIP配在后端realserver上):IP為內(nèi)網(wǎng),用戶請(qǐng)求LVS到達(dá)director,director將請(qǐng)求目標(biāo)的MAC地址改成realserver的MAC地址,目標(biāo)IP還是VIP,源IP還是用戶IP,然后director將報(bào)文發(fā)送給realserver,realserver發(fā)現(xiàn)目標(biāo)IP和MAC都是自己。如果用戶跟realserver不在一個(gè)網(wǎng)段,則通過(guò)網(wǎng)關(guān)返回給用戶,如果在同一網(wǎng)段,將請(qǐng)求直接返給用戶。 效率最高,互聯(lián)網(wǎng)企業(yè)。這個(gè)要求LVS和后端服務(wù)器在一個(gè)網(wǎng)絡(luò)里,不然沒(méi)法實(shí)現(xiàn)VIP配在后端realserver上。

TUN原理:跟DR類似,也是改變封裝MAC地址,多了一層隧道加密,比DR效率略低,比NAT高。

DR模式,后端帶幾百臺(tái)nginx

cd /usr/src/

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

版本不同需要的這個(gè)軟件版本可能也不同

yum install kernel kernel-devel gcc gcc-c++ -y

ln -s /usr/src/kernels/2.6* /usr/src/linux

tar xzvf ipvsadm-1.24.tar.gz &&cd ipvsadm-1.24 && make && make install

ipvsadm看安裝成功沒(méi)

參數(shù)說(shuō)明:

-A 增加一臺(tái)虛擬服務(wù)器地址。-D刪除

-t  虛擬服務(wù)器提供的是tcp服務(wù)。

-s  使用的調(diào)度算法。

-a  在虛擬服務(wù)器中增加一臺(tái)后端真實(shí)服務(wù)器。

-r  指定真實(shí)服務(wù)器地址。

-m 設(shè)置當(dāng)前轉(zhuǎn)發(fā)方式為NAT模式;-g為直接路由模式;-i  模式為隧道模式。

-w 后端真實(shí)服務(wù)器的權(quán)重。

LVS安裝完畢之后,需要進(jìn)行配置,配置的步驟有兩步,第一步為定義端口服務(wù),第二步為添加realserver后端服務(wù)。

ipvsadm -A -t 192.168.1.200:80 -s rr  #添加VIP

 

ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.103 -g -w 2

在后端realserver上,在回環(huán)地址上配上VIP

VIP=192.168.1.201

ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP

/sbin/route add -host $VIP dev lo:0

這樣綁重啟了就失效了

ipvsadm-save >/tmp/lvs.txt保存LVS配置

ipvsadm-restore

route -n

看網(wǎng)關(guān)

然后抑制ARP,不抑制的話所有賠了VIP的都可以響應(yīng)了

客戶端抑制ARP腳本,企業(yè)里客戶端可能不止一個(gè)VIP,就把lo:0換成1 2 3 4

vim auto_realserver.sh

#!/bin/sh

#LVS Client Server

VIP=192.168.2.200

case  $1  in                                                                                                                                                                                                                                                    

start)                                                                                                                                                                                                                                            

    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP

    /sbin/route add -host $VIP dev lo:0

    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

    sysctl -p >/dev/null 2>&1

    echo "RealServer Start OK"

    exit 0

;;                                                                                                                                                                                                                                         

stop)

    ifconfig lo:0 down

    route del $VIP >/dev/null 2>&1

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

    echo "RealServer Stoped OK"

    exit 1

;;

*)

    echo "Usage: $0 {start|stop}"

;;

esac

###

壓測(cè)工具h(yuǎn)ttp-tools

ab -c 5000 -n 10000 http://192.168.1.200/

watch ipvsadm -L -n 可以實(shí)時(shí)看壓測(cè)

keepalived+LVS或者腳本檢查+LVS

服務(wù)端配置keepalived即可,兩個(gè)LVS服務(wù)器。realserver客戶端執(zhí)行腳本
安裝keepalived

寫入配置文件

! Configuration File for keepalived

 

global_defs {

   notification_email {

      wgkgood@163.com

   }

   notification_email_from wgkgood@163.com

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

 

# VIP1

vrrp_instance VI_1 {

    state MASTER   

    interface eth0

    lvs_sync_daemon_inteface eth0

    virtual_router_id 51

    priority 100

    advert_int 5

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.200   

    }

}

virtual_server 192.168.1.200 80 {

    delay_loop 6    

    lb_algo wrr    

    lb_kind DR   #這里配轉(zhuǎn)發(fā)方式

#    persistence_timeout 60    #這里配置會(huì)話保持時(shí)間

    protocol TCP         

 

    real_server 192.168.1.102 80 {

        weight 100        

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        }

    }

    real_server 192.168.1.103 80 {

        weight 100

        TCP_CHECK {

        connect_timeout 10

        nb_get_retry 3

        delay_before_retry 3

        connect_port 80

        

        }

    }

}

################

realserver端

tcpdump -nn port 80  nn是顯示網(wǎng)絡(luò)地址

tcpdump -nn port 22 and host 192.168.0.116看本機(jī)有哪些連22端口的

LVS排錯(cuò)

ping網(wǎng)站域名,看能否解析到IP

登錄LVS服務(wù)器,ipvsadm -Ln查看信息,tail -fn /var/log/messages看報(bào)錯(cuò)

看zabbix監(jiān)控服務(wù)器有沒(méi)有報(bào)警

看keepalived.conf配置文件有沒(méi)有錯(cuò)誤

看客戶端的auto——realserver.sh腳本是否啟動(dòng)

看realserver有沒(méi)有掛(nginx)

如果后端nginx能接收到LVS的請(qǐng)求,但是不返回,說(shuō)明nginx端VIP沒(méi)有起來(lái)

LVS、haproxy與nginx均衡區(qū)別

LVS是4層網(wǎng)絡(luò)層,haproxy是又有7層又有4層,nginx是7層應(yīng)用層

LVS優(yōu)點(diǎn)

  1. LVS抗負(fù)載能力強(qiáng)、是工作在網(wǎng)絡(luò)4層之上僅作分發(fā)之用,沒(méi)有流量的產(chǎn)生,這個(gè)特點(diǎn)也決定了它在負(fù)載均衡軟件里的性能最強(qiáng)的,也保證了均衡器I/O的性能不會(huì)受到大流量的影響

  2. LVS是專門的負(fù)載均衡軟件,對(duì)任何應(yīng)用都可以做負(fù)載均衡

  3. 工作穩(wěn)定,因?yàn)槠浔旧砜关?fù)載能力很強(qiáng),自身有完整的雙機(jī)熱備方案,目前用的比較多的是lvs+keepalived,比較大型的用的多的是lvs+heartbeat

nginx的優(yōu)點(diǎn):

1:Nginx的高并發(fā),同時(shí)能承載上萬(wàn)個(gè)并發(fā)連接;

2:nginx有充足的第三方功能模塊的支持,主要通過(guò)upstream模塊進(jìn)行負(fù)載均衡;

3:nginx對(duì)網(wǎng)絡(luò)的依賴較小,理論上只要Ping得通,網(wǎng)頁(yè)訪問(wèn)正常,nginx就能連得通;

4:工作在網(wǎng)絡(luò)的7層之上,可以針對(duì)http應(yīng)用做一些分流的策略,它的正則規(guī)則比haproxy更為強(qiáng)大和靈活,這也是它目前廣泛流行的主要原因之一,nginx單憑這點(diǎn)可利用的場(chǎng)合就遠(yuǎn)多于lvs了。

nginx的缺點(diǎn):

1:將Nginx當(dāng)做反向代理時(shí),負(fù)載均衡功能不是很好,對(duì)后端服務(wù)器的健康檢查功能較弱;

2:nginx僅能支持http、https和email協(xié)議,這樣就在適用范圍上面小些,這個(gè)是它的缺點(diǎn);

3:nginx只支持通過(guò)端口來(lái)檢測(cè),不支持通過(guò)url來(lái)檢測(cè)。


keepalived+mysql

msyql主down機(jī)了,可以手動(dòng)換成從的IP,也可以自動(dòng)切換,用keepalived,heartbeat


當(dāng)前題目:keepalive+LVS
文章URL:http://weahome.cn/article/pdocgo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部