Keepalived實現高可用Nginx反向代理

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

實驗系統:

(1)CentOS 6.5_x86_64;

(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,邏輯拓撲圖如下


wKiom1knyxDB71rZAAAlA-8d8QA964.png


一、安裝配置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

wKiom1kmr87jjX0DAAA-KlIwAWQ508.png


如果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的不同每個文件裏的內容修改爲:

wKioL1kmseCRtNHjAAAQhTWoynQ250.png

wKiom1kmsgfxRFXbAAAOUI5eyVE043.png

7、最終測試

wKioL1kmsmfieVm6AAAO3qBsrbY867.png

wKiom1kmsmnjDUC1AAAOFWx88j4000.png

訪問兩次的結果分別訪問了不同的realserver。測試成功(因爲nginx上沒有配置ip_hash)所以每次訪問到了不同的realserver



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章