国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
keepalived + haproxy 實(shí)現(xiàn)web 雙主模型的高可用負(fù)載均衡

1、本文的架構(gòu)圖:



闡述各服務(wù)器用途:

   1、haproxy在本構(gòu)架中實(shí)現(xiàn)的是:負(fù)載均衡

   2、keepalived實(shí)現(xiàn)對(duì)haproxy的高可用

   3、apache static 實(shí)現(xiàn)靜態(tài)頁(yè)面的訪問(wèn)

   4、aoache dynamic實(shí)現(xiàn)動(dòng)態(tài)頁(yè)面的訪問(wèn),圖中有兩個(gè)是實(shí)現(xiàn)負(fù)載均衡的


配置各功能模塊:

   一、配置haproxy和keepalived


驗(yàn)證:

        1、當(dāng)一臺(tái)keepalived宕機(jī)后,VIP會(huì)不會(huì)轉(zhuǎn)移到另外一臺(tái)服務(wù)器

        2、當(dāng)一臺(tái)haproxy服務(wù)出故障,VIP會(huì)不會(huì)轉(zhuǎn)移到另外一臺(tái)服務(wù)器


注意:

        那如果keepalived宕機(jī)了,haproxy服務(wù)還正常運(yùn)行,我們要不要讓另外一臺(tái)服務(wù)器把VIP奪過(guò)去呢?

        理論上來(lái)講:最好不要,但是我們的keepalived中的腳本監(jiān)控著haproxy的進(jìn)程,keepalived宕機(jī)之后,就無(wú)從得知haproxy的健康狀態(tài),也不能決定自己的優(yōu)先權(quán)priority降不降低了。所以,理論上來(lái)講最好不要,但是實(shí)際中光靠keepalived是做不到的。



配置:


1、給兩臺(tái)服務(wù)器分別安裝上keepalived


1
[root@station139 ~]# yum -y install keepalived



2、配置keepalived


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
[root@node2 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost    配置服務(wù)狀態(tài)變化發(fā)送郵件到哪個(gè)地址
   }
   notification_email_from kaadmin@localhost
   smtp_server 127.0.0.1    給哪個(gè)smtp服務(wù)器發(fā)郵件
   smtp_connect_timeout 30    聯(lián)系上面smtp服務(wù)器30秒聯(lián)系不上,就超時(shí)
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy {     本腳本是用來(lái)檢測(cè)該服務(wù)器上haproxy服務(wù)的健康狀態(tài)的
    script "killall -0 haproxy"
    interval 1
    weight -2
}
vrrp_instance VI_1 {
    state MASTER   這太服務(wù)器為主的keepalived
    interface eth0    通過(guò)eth0網(wǎng)卡廣播
    virtual_router_id 200  虛擬路由id要改,如果在一個(gè)局域網(wǎng)中有多個(gè)keepalived集群
    priority 100   優(yōu)先級(jí)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 11112222
    }
    track_script {
        chk_haproxy
    }
    virtual_ipaddress {
        192.168.1.200   本機(jī)的虛擬IP
   }
    notify_master "/etc/keepalived/notify.sh master" 各不用狀態(tài)下運(yùn)行的腳本
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}
vrrp_instance VI_2 {   另外一臺(tái)主keepalived的從
    state BACKUP
    interface eth0
    virtual_router_id 57
    priority 99   設(shè)置要比另外一臺(tái)主keepalived的優(yōu)先級(jí)低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_mantaince_down
   }
    virtual_ipaddress {
        192.168.1.201
   }
}

3、寫keepalived處在不同狀態(tài)下所運(yùn)行的腳本


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
# Author: MageEdu <linuxedu@foxmail.com>
# description: An example of notify script
#
vip=192.168.1.200
contact='root@localhost'
notify() {
    mailsubject="`hostname` to be $1: $vip floating"
    mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` changed to be $1"
    echo $mailbody | mail -s "$mailsubject" $contact
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
case "$1" in
    master)
        notify master
        /etc/rc.d/init.d/haproxy start
        exit 0
    ;;
    backup)
        notify backup
        /etc/rc.d/init.d/haproxy stop
        exit 0
    ;;
    fault)
        notify fault
        /etc/rc.d/init.d/haproxy stop
        exit 0
    ;;
    *)
        echo 'Usage: `basename $0` {master|backup|fault}'
        exit 1
    ;;
esac
給腳本以執(zhí)行權(quán)限:
chmod  +x  /etc/keepalived/notify.sh


4、配置haproxy

   因?yàn)橐獙?shí)現(xiàn)動(dòng)靜分離,那么我們?cè)谂渲梦募?,就要定義動(dòng)態(tài)資源靜態(tài)資源轉(zhuǎn)移到不同的服務(wù)上去


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
[root@node2 ~]# yum -y install haproxy  安裝haproxy
[root@node2 ~]# vim /etc/haproxy/haproxy.cfg
    #
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http      指定haproxy工作模式為http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close       當(dāng)客戶端超時(shí)時(shí),允許服務(wù)端斷開連接
    option forwardfor       except 127.0.0.0/8  在http的響應(yīng)頭部加入forwardfor
    option                  redispatch    #在使用了基于cookie的會(huì)話保持的時(shí)候,通常加這么一項(xiàng),一旦后端某一server宕機(jī)時(shí),能夠?qū)⑵鋾?huì)話重新派發(fā)到其它的upstream servers
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80  前端代理
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js
    acl url_dynamic      path_end       -i .php
    use_backend static          if url_static
    default_backend             dynamic
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static   后端的靜態(tài)請(qǐng)求響應(yīng)
    balance     roundrobin
    server      static 192.168.1.100:80 inter 3000 rise 2 fall 3 check maxconn 5000
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend dynamic   后端的動(dòng)態(tài)請(qǐng)求響應(yīng)
    balance     roundrobin
    server  dynamic1 192.168.1.101:80 inter 3000 rise 2 fall 3 check maxconn 5000
    server  dynamic2 192.168.1.102:80 inter 3000 rise 2 fall 3 check maxconn 5000
listen statistics
        mode http
        bind *:8080
~       stats enable
        stats auth admin:admin
        stats uri /admin?stats   指定URI的訪問(wèn)路徑
        stats admin if TRUE
        stats hide-version
        stats refresh 5s
        acl allow src 192.168.0.0/24   定義訪問(wèn)控制列表
        tcp-request content accept if allow
        tcp-request content reject



5、配置另外一臺(tái)haproxy服務(wù)器

   因?yàn)閮膳_(tái)服務(wù)器的配置大體相同,我們就直接講以上配置好的復(fù)制文件和腳本文件都傳到這臺(tái)haproxy服務(wù)器上,做下修就可以了



1
2
3
4
5
6
7
8
9
[root@node2 ~]# scp /etc/keepalived/keepalived.conf root@192.168.1.121:/etc/keepalived/
root@192.168.1.121's password:
keepalived.conf                                                                               100% 4546     4.4KB/s   00:00
[root@node2 ~]# scp /etc/keepalived/notify.sh root@192.168.1.121:/etc/keepalived/
root@192.168.1.121's password:
notify.sh                                                                                     100751     0.7KB/s   00:00
[root@node2 ~]# scp /etc/haproxy/haproxy.cfg root@192.168.1.121:/etc/haproxy/
root@192.168.1.121's password:
haproxy.cfg                                                                                   100% 3529     3.5KB/s   00:00


    傳輸完成,接著來(lái)配置 /etc/keepalived/keepalived.conf  因?yàn)閮蓚€(gè)節(jié)點(diǎn)上的/etc/haproxy/haproxy.cfg相同不用更改


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    interface eth0
! Configuration File for keepalived
global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from kaadmin@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 1
    weight -2
}
vrrp_instance VI_1 {
    state BACKUP      這臺(tái)把master改成 backup
    interface eth0
    virtual_router_id 200
    priority 99       優(yōu)先級(jí)調(diào)的比上一個(gè)低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 11112222
    }
    track_script {
        chk_haproxy
    }
    virtual_ipaddress {
        192.168.1.200
   }
}
vrrp_instance VI_2 {
    state MASTER      本臺(tái)的這個(gè)要調(diào)成MASTER,上個(gè)是backup
    interface eth0
    virtual_router_id 57
    priority 100    這個(gè)優(yōu)先級(jí)也要高于上個(gè)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.201
   }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
}

注意:

notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"

notify_fault "/etc/keepalived/notify.sh fault"


3個(gè)狀態(tài)分別要執(zhí)行的腳本,只能放在 MASTER中,原因是:因?yàn)槭腔橹鲝模總€(gè)主的都會(huì)有個(gè)另外一個(gè)主的從,如果

把這 “3個(gè)狀態(tài)執(zhí)行腳本” 寫入到從的區(qū)域中,那么另外一個(gè)主的從狀態(tài)就會(huì)執(zhí)行這個(gè)腳本,因?yàn)榫蜁?huì)停掉所要高可用的

程序,這就造成了,兩個(gè)VIP全部轉(zhuǎn)移到其中一個(gè)服務(wù)器上去。


我們來(lái)驗(yàn)證下,如果keepalived和haproxy分別宕機(jī),vip會(huì)不會(huì)轉(zhuǎn)移:

   在兩個(gè)節(jié)點(diǎn)上都啟動(dòng) keepalived和haproxy服務(wù)


1
2
3
4
[root@node2 ~]# service haproxy start
Starting haproxy:                                          [  OK  ]
[root@node2 ~]# service keepalived start
Starting keepalived:                                       [  OK  ]



以下為正常情況:


keepalived 1:



keepalived 2:



我們來(lái)模擬讓第一個(gè)haproxy停止掉,再看下,VIP會(huì)不會(huì)全到 keepalived 2上面去:


1
2
[root@node2 ~]# service haproxy stop
Stopping haproxy:                                          [  OK  ]


查看keepalived 1 和 keepalived 2




   看,都過(guò)來(lái)了。。。。





驗(yàn)證負(fù)載均衡很動(dòng)靜分離

   我們給3個(gè)web服務(wù)不同的網(wǎng)頁(yè)

   1、給apache static一個(gè)靜態(tài)頁(yè)面,來(lái)驗(yàn)證如果請(qǐng)求的不是以 .php結(jié)尾的網(wǎng)頁(yè)文件都定向到這太服務(wù)器上來(lái)

   2、給apache dynamic 1 、2 分別兩個(gè) index.php ,實(shí)現(xiàn)對(duì)動(dòng)態(tài)網(wǎng)頁(yè)的負(fù)載均衡


我們給apache static 一個(gè)符合-i .jpg .gif .png .css .js的網(wǎng)頁(yè),就給個(gè)圖片網(wǎng)頁(yè)吧


apache static

1
scp 1.png root@192.168.1.100:/var/www/html


apache dynamic 1


1
2
3
4
5
vim /var/www/html/index.php
192.168.1.101
<?php
    phpinfo();
?>


 apache dynamic 2


1
2
3
4
5
vim /var/www/html/index.php
192.168.1.102
<?php
    phpinfo();
?>


1、我們來(lái)請(qǐng)求 1.png 結(jié)尾的靜態(tài)文件



2、我們來(lái)請(qǐng)求 .php結(jié)尾的頁(yè)面



   如此看來(lái),已經(jīng)對(duì)以.php的動(dòng)態(tài)頁(yè)面做了負(fù)載均衡了


   我們?cè)偻ㄟ^(guò) 192.168.1.201 這個(gè)虛擬 ip 訪問(wèn)試試:



由此看來(lái),也實(shí)現(xiàn)了雙主模型了,兩個(gè)haproxy同時(shí)可以服務(wù)了。。。



3、我們來(lái)看看狀態(tài)頁(yè)面






本文出自 “linux運(yùn)維” 博客,請(qǐng)務(wù)必保留此出處http://xz159065974.blog.51cto.com/8618592/1405812

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Haproxy+Keepalived高可用環(huán)境部署梳理(主主和主從模式)
k8s筆記002-kube-apiserver部署
keepalived學(xué)習(xí)文檔
高可用rabbitmq集群服務(wù)部署步驟
KeepAlive
keepalived 高可用lvs
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服