<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Keepalived+nginx實現高可用性和負載均衡

        來源:懂視網 責編:小采 時間:2020-11-09 13:21:13
        文檔

        Keepalived+nginx實現高可用性和負載均衡

        Keepalived+nginx實現高可用性和負載均衡:前幾天使用了Heartbeat作為高可用服務架構的解決方案,今天有試驗了一種全新的解決方案,即采用Keepalived來實現這個功能。 Keepalived 是一種高性能的服務器高可用或熱備解決方案,Keepalived可以用來防止服務器單點故障(單點故障是指一旦某一點出現故障就
        推薦度:
        導讀Keepalived+nginx實現高可用性和負載均衡:前幾天使用了Heartbeat作為高可用服務架構的解決方案,今天有試驗了一種全新的解決方案,即采用Keepalived來實現這個功能。 Keepalived 是一種高性能的服務器高可用或熱備解決方案,Keepalived可以用來防止服務器單點故障(單點故障是指一旦某一點出現故障就

        安裝popt

        yum install popt*

        安裝ipvsadm

        yum isntall ipvsadm

        安裝libnl-dev

        yum install libnl-dev*

        2. 安裝Keepalived

        keepalived安裝包地址:

        http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

        下載解壓后編譯配置

        ./configure --prefix=/usr/local/keepalived

        編譯配置需要確保一下幾項為Yes狀態:

        Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes

        然后就可以編譯安裝了:

        make && make install

        因為沒有使用keepalived的默認路徑安裝(默認是/usr/local),安裝完成之后,需要做一些工作

        cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
        #復制keepalived啟動文件到默認路徑,也可以通過設置環境變量的path實現
        cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
        #復制服務啟動腳本到,以便可以通過service控制keepalived服務
        cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
        #復制keepalived服務腳本到默認的地址,也通過修改init.d/keepalived文件中的相應配置實現
        mkdir -p /etc/etc/keepalived/
        cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
        vi /etc/keepalived/keepalived.conf
        #復制默認配置文件到默認路徑,其實也可以在/etc/init.d/keepalived中設置路徑
        chkconfig keepalived on
        #開機啟動服務

        3. 配置Keepalived

        接下來就是配置了,很簡單,直接上配置文件

        先是主服務器:

        global_defs
        {
        notification_email #通知email,根據實際情況配置
        {
        admin@example.com
        }
        notification_email_from admin@example.com
        smtp_server 127.0.0.1
        stmp_connect_timeout 30
        router_id node1 #節點名標識,主要用于通知中
        }
        vrrp_instance VI_NODE {
         state MASTER #配置為主服務器
         interface eth0 #通訊網卡
         virtual_router_id 100 #路由標識
         priority 200 #優先級,0-254
         advert_int 5 #通知間隔,實際部署時可以設置小一點,減少延時
         authentication {
         auth_type PASS
         auth_pass 123456 #驗證密碼,用于通訊主機間驗證
         }
         virtual_ipaddress {
         192.168.1.206 #虛擬ip,可以定義多個
         }
        }
        接下是從服務器設置:



        global_defs {
         notification_email {
         admin@example.com
         }
         notification_email_from admin@example.com
         smtp_server 127.0.0.1
         stmp_connect_timeout 30
         router_id node2
        }
        vrrp_instance VI_NODE {
         state BACKUP #與主服務器對應
         interface eth0 #從服務器的通信網卡
         virtual_router_id 100 #路由標識,和主服務器相同
         priority 100 #優先級,小于主服務器即可
         advert_int 5 #這里是接受通知間隔,與主服務器要設置相同
         authentication {
         auth_type PASS
         auth_pass 123456 #驗證密碼,與主服務器相同
         }
         virtual_ipaddress {
         192.168.1.206 #虛擬IP,也要和主服務器相同
         }
        }

        上面的設置是最基礎的設置,實現的功能是如果主服務器的Keepalived停止服務(一般情況下服務器宕機),則將虛擬IP切換至從服務器,主服務器恢復后從新切換回主服務器。

        但是很多情況下我們面臨的處境是nginx掛掉了,而這個時候Keepalived就不能發揮作用,這時候就需要我們來改良下Keepalived了。通過向Keepalived添加一個自定義腳本來監控neginx的運行狀態,如果nginx進程結束,則kill Keepalived進程,以此來達到主從服務器的切換功能。

        我們在修改上面配置的主服務器的配置文件,在中間添加腳本實現

        global_defs {
         notification_email {
         admin@example.com
         }
         notification_email_from admin@example.com
         smtp_server 127.0.0.1
         smtp_connect_timeout 30
         router_id nginx_master
        }
        vrrp_script chk_http_port {
         script "/usr/local/keepalived/nginx.sh" #在這里添加腳本鏈接
         interval 3 #腳本執行間隔
         weight 2 #腳本結果導致的優先級變更
        }
        vrrp_instance VI_NODE {
         state MASTER
         interface eth0
         virtual_router_id 100
         priority 200
         advert_int 5
         authentication {
         auth_type PASS
         auth_pass 123456
         }
         track_script {
         chk_http_port #添加腳本執行
         }
         virtual_ipaddress {
         192.168.1.206
         }
        }

        具體的配置可以參考另一篇文章Keepalived配置詳解

        如果我們使用了LVS+Keepalived集成,那么keepalived可以代替ipvsadm來配置LVS,可以方便的通過配置就可以搞定,這在另一篇文章Keepalived+LVS配置詳解

        修改完配置文件我們寫我們的上面配置的nginx.sh,當然我們假定Nginx已經安裝完成

        #!/bin/bash
        A=`ps -C nginx --no-header |wc -l`
        if [ $A -eq 0 ];then
         killall keepalived
        fi

        上面的腳本簡單的查看nginx進程是否存在,不存在就kill keepalived進程。

        接下來我們對上面的哦腳本修改一下,當腳本檢測到nginx沒有運行的時候會嘗試去啟動nginx以此,如果失敗則停掉keepalived進程

        #!/bin/bash
        A=`ps -C nginx –no-header |wc -l`
        if [ $A -eq 0 ];then
         /usr/local/nginx/sbin/nginx #nginx命令的路徑
         sleep 3
         if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
         killall keepalived
         fi
        fi

        把腳本保存到上面配置的具體路徑(我這里是/usr/local/keepalived),然后很重要的一步是修改腳本的執行權限

        chmod +x nginx.sh

        4. 運行Keepalived

        配置完成后就可以運行看下效果了,分別在主從服務器上啟動nginx和keepalived

        service keepalived start

        啟動之后通過·ip a·命令查看主服務器的網絡信息,可以看到在eth0網卡下生成了192.168.1.206這個虛擬ip,并可通過這個ip訪問到nginx

        然后我們關閉nginx的進程(如果配置了一次嘗試重啟那要注意下),然后我們可以通過ps -e查看keepalived進程是否關閉,正常情況下查看網絡信息中,可以看到eth0網卡下的虛擬ip已經解除,然后在從服務器的網絡信息中可以看到從服務器的eth0網卡綁定了虛擬ip,通過這個ip就訪問到了從服務器的nginx去了,這是我們重新啟動主服務器的nginx和keepalieved,我們可以發現虛擬ip就綁回到了主服務器。

        這樣就實現了基本雙擊主從熱備功能了。

        這里注意下防火墻的問題,就是這問題困擾了我很久。找了一些資料才將問題解決

        因為Keepalived之間是通過組播來通知對方的是否存活,以及發送優先級的,并且通過組播來選舉MASTER的,而224.0.0.18就是常用的組播地址,防火墻開啟允許這個組播地址通信就可以了:

        1.如果用的是默認防火墻,只需要添加:

        iptables -I RH-Firewall-1-INPUT -d 224.0.0.18 -j ACCEPT

        2.如果是自己用腳本設置的防火墻,需要添加如下規則

        iptables -A OUTPUT -o eth0 -d 224.0.0.18 -j ACCEPT iptables -A OUTPUT -o eth0 -s 224.0.0.18 -j ACCEPT iptables -A INPUT -i eth0 -d 224.0.0.18 -j ACCEPT iptables -A INPUT -i eth0 -s 224.0.0.18 -j ACCEPT

        5. 總結

      1. keepalived通過虛擬路由實現雙機熱備,相比其他方案具有一定的優越性
      2. 因為是固定主從熱備,該方案比較適合兩個互備服務器性能有差異的情況
      3. Keepalived同樣可以實現雙主互備,通過設置互為主備,然后通過DNS負載均衡到不同vip就可以實現
      4. 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Keepalived+nginx實現高可用性和負載均衡

        Keepalived+nginx實現高可用性和負載均衡:前幾天使用了Heartbeat作為高可用服務架構的解決方案,今天有試驗了一種全新的解決方案,即采用Keepalived來實現這個功能。 Keepalived 是一種高性能的服務器高可用或熱備解決方案,Keepalived可以用來防止服務器單點故障(單點故障是指一旦某一點出現故障就
        推薦度:
        標簽: 實現 nginx 高可
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 在线观看亚洲人成网站| 亚洲精品线路一在线观看| 精品亚洲麻豆1区2区3区| 国产成人免费ā片在线观看老同学| 亚洲VA综合VA国产产VA中| 日亚毛片免费乱码不卡一区| 成人亚洲综合天堂| h片在线观看免费| 亚洲另类激情综合偷自拍图| a国产成人免费视频| 亚洲国产人成网站在线电影动漫 | 亚洲欧美一区二区三区日产| 无码国产精品久久一区免费| 亚洲熟妇AV乱码在线观看| 在线观看免费亚洲| 一区二区视频免费观看| 亚洲码国产精品高潮在线| 99爱在线观看免费完整版| 亚洲制服丝袜在线播放| 亚洲成AV人在线观看网址| 五级黄18以上免费看| 亚洲AV永久无码区成人网站 | 亚洲国产精华液2020| 亚洲AⅤ优女AV综合久久久| 国产视频精品免费视频| 亚洲视频在线播放| 一个人看的www在线观看免费| 综合偷自拍亚洲乱中文字幕| 日日噜噜噜噜夜夜爽亚洲精品| 99精品视频在线观看免费播放 | 国产精品免费高清在线观看| 亚洲最新中文字幕| 免费观看日本污污ww网站一区| 中国精品一级毛片免费播放| 亚洲精品视频专区| 高清在线亚洲精品国产二区| 四虎国产精品永久免费网址| 亚洲AV无码XXX麻豆艾秋| 亚洲国产精品VA在线看黑人| 大学生一级特黄的免费大片视频| 久久成人永久免费播放|