天天看點

Keepalived實作高可用Nginx反向代理

由于好久沒有接觸過負載相關的調試了複習一下

實驗系統:

(2)共有二台主機,本實驗以ip位址來命名主機,即10主機、11主機。

實驗前提:防火牆和selinux都關閉,主機之間時間同步

實驗軟體:nginx-1.10.2-1.el6.x86_64、keepalived-1.2.13-5.el6_6.x86_64、httpd-2.2.15-59.el6.centos.x86_64

為了友善實驗隻起了2台虛機友善測試,每台虛機上都安裝nginx、keepalived、httpd,邏輯拓撲圖如下

<a href="https://s1.51cto.com/wyfs02/M01/97/00/wKiom1knyxDB71rZAAAlA-8d8QA964.png" target="_blank"></a>

一、安裝配置keepalived

1.直接使用yum安裝:

yum -y install keepalived nginx  httpd      #如果nginx無法安裝先安裝epel源,或者編譯安裝

2.在34主機上配置keepalived:

vim /etc/keepalived/keepalived.conf

--------------------------------------------

global_defs {                      //此段配置忽略

  notification_email {

    [email protected]

  }

  notification_email_from [email protected]

  smtp_server 192.168.200.1

  smtp_connect_timeout 30

  router_id master

}

vrrp_instance VI_1 {

    state MASTER                  //定義為MASTER主機

    interface eth0

    virtual_router_id 55      //虛拟id

    priority 100          //優先級

    advert_int 1                    //檢測間隔

    authentication {

        auth_type PASS          //認證方式

        auth_pass abcd          //認證密碼

    }

    virtual_ipaddress {

        192.168.1.15 brd 192.168.1.255 dev eth0     

#    notify_master "/etc/init.d/nginx start"    //成為MASTER之後執行的動作

#    notify_backup "/etc/init.d/nginx stop"      //成為BACKUP之後執行的動作

#    notify_fault "/etc/init.d/nginx stop"      //FAULT之後執行的動作

3.将配置檔案傳到11主機,修改紅色部分:

4.兩台主機啟動keepalived服務,現在10這台主機為MASTER,是以服務都起在這台主機上:

service keepalived start

ip addr show

<a href="https://s4.51cto.com/wyfs02/M00/96/EA/wKiom1kmr87jjX0DAAA-KlIwAWQ508.png" target="_blank"></a>

如果10停止keeplived後,觀察11上的vip是否有啟動。如果沒啟動請排查原因,多半是配置檔案寫錯了。

另外有個問題需要注意,如果在master停掉後,backup是可以接過來的,但是master再啟動,是接不回去的,隻有停掉backup才可以回交給master。

5、配置nginx代理伺服器

upstream webservers {

        server 192.168.1.10:8000;            ##apache-realserver位址

        server 192.168.1.11:8000;            ##apache-realserver位址

server {

    listen       80 default_server;

    server_name  _;

    root         /usr/share/nginx/html;

    # Load configuration files for the default server block.

    include /etc/nginx/default.d/*.conf;

    location / {

        proxy_pass http://webservers;

        proxy_set_header X-Real-IP $remote_addr;

這裡标記了主要部分

6、配置Apache的realserver部分

為了友善測試預設配置基本不用動,主要修改Listen端口為8000

用于區分通路兩台realserver的不同每個檔案裡的内容修改為:

<a href="https://s1.51cto.com/wyfs02/M02/96/EB/wKioL1kmseCRtNHjAAAQhTWoynQ250.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M01/96/EA/wKiom1kmsgfxRFXbAAAOUI5eyVE043.png" target="_blank"></a>

7、最終測試

<a href="https://s4.51cto.com/wyfs02/M01/96/EB/wKioL1kmsmfieVm6AAAO3qBsrbY867.png" target="_blank"></a>

<a href="https://s1.51cto.com/wyfs02/M02/96/EA/wKiom1kmsmnjDUC1AAAOFWx88j4000.png" target="_blank"></a>

通路兩次的結果分别通路了不同的realserver。測試成功(因為nginx上沒有配置ip_hash)是以每次通路到了不同的realserver

本文轉自 轉身撞牆角 51CTO部落格,原文連結:http://blog.51cto.com/chentianwang/1929517

下一篇: flash cs5

繼續閱讀