nginx+upstream+keepalived實現負載均衡

IP地址規劃

 前端服務器

master 192.168.1.112

slave  192.168.1.113

節點服務器

       192.168.1.114

       192.168.1.115

1、開啓主備服務器的upstream模塊 在http模塊下添加配置分發節點

    upstream aaa.xftz.cn{

        server 192.168.1.114;

        server 192.168.1.115;

                }

 upstream bbb.xftz.cn{

        server 192.168.1.114;

        server 192.168.1.115;

                }

 

server {

        listen       80;

       server_name  aaa.xftz.cn;

  location / {

                proxy_pass      http://aaa.xftz.cn;

                proxy_next_upstream  http_500 http_502 http_503 error timeout invalid_header;

                include /home/webserver/nginx/conf/proxy.conf;

   }

}

server {

        listen  80;

       server_name  bbb.xftz.cn;

        location / {

                proxy_pass      http://bbb.xftz.cn;

                proxy_next_upstream  http_500 http_502 http_503 error timeout invalid_header;

                include /home/webserver/nginx/conf/proxy.conf;

}

                include /home/webserver/nginx/conf/proxy.conf  //include指令包含進來一個proxy配置文件

}

proxy.conf配置文件內容

proxy_redirect  off;

proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;

proxy_set_header X-RealIP $remote_addr;

proxy_set_header Host $host;

client_body_buffer_size 128k;

client_max_body_size    8m;

proxy_connect_timeout   30s;

proxy_send_timeout      1m;

proxy_read_timeout      1m;

proxy_temp_file_write_size 1024m;

proxy_buffer_size         32k;

proxy_buffers             4 32k;

proxy_busy_buffers_size 64k;

#proxy_set_header(設定header)

#proxy_hide_header(隱藏header)

#proxy_pass_header(通過header)

X-Forwarded-For X-RealIP 分別設置變量Forwarded-For設置的變量作用爲後端服務器可以獲取客戶的真實訪問IP通過哪個代理服務器訪問的後端服務器 X-RealIP設置的變量表示後端服務器可以獲取到用戶的真實IP

#proxy_connect_timeout(代理連接超時)

#proxy_send_timeout(代理髮送超時)

#proxy_read_timeout(代理接收超時)

#proxy_temp_file_write_size(設定緩存文件夾大小)

#proxy_buffer_size(代理緩衝大小)

#proxy_buffers (代理緩衝)

#proxy_busy_buffers_size(高負荷下緩衝大小)

#proxy_ignore_client_abort(不允許代理端主動關閉連接)

2、slave服務器113的配置與主一樣

3、節點服務器114和115配置一致

server {

        listen       80;

       server_name  aaa.xftz.cn;

        access_log  /home/httpd/logs/nginx/aaa.xftz.cn-access.log  main;

        error_log   /home/httpd/logs/nginx/aaa.xftz.cn-error.log debug ;

        root /home/httpd/aaa.xftz.cn/;

       index index.html index.php;

                                 }

server {

        listen       80;

       server_name  bbb.xftz.cn;

        access_log  /home/httpd/logs/nginx/bbb.xftz.cn-access.log  main;

        error_log   /home/httpd/logs/nginx/bbb.xftz.cn-error.log debug ;

        root /home/httpd/bbb.xftz.cn/;

       index index.html index.php;

        }

在後端節點服務器的nginx配置文件裏添加日誌格式

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent"  $proxy_add_x_forwarded_for "$http_x_forwarded_for"';

4、添加host文件測試訪問

192.168.1.112aaa.xftz.cn

192.168.1.112bbb.xftz.cn

wKioL1UKq6Hww0jLAAEC9QBZ40w369.jpg

wKiom1UKqnfBU9VBAAEQA35HWes785.jpg

wKioL1UKq6HSYy9WAAERWxjAxsI167.jpg

wKiom1UKqneAU1AXAAETzBIZLTA234.jpg


5、查看服務器日誌

wKiom1UKxlnwVcvSAAL3BWaWofQ460.jpg

wKioL1UKx4SxWetKAAKWmxUmTHk889.jpg

這裏upstream的配置完成。


安裝Keepalived

tar zxvf keepalived-1.1.19.tar.gz

cd keepalived-1.1.19

./configure --sysconf=/etc

make && make install

修改配置文件/etc/keepalived/keepalived.conf

! Configuration File for keepalived


global_defs {

   router_id LVS_DEVEL

}

vrrp_script chk_nginx {                //監控nginx腳本

                script "/etc/init.d/nginx.sh"

                interval 2

                weight 2

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

track_script {   

    chk_nginx

}

track_interface {

     eth0

     }

    virtual_ipaddress {

        192.168.1.200

    }

}


virtual_server 192.168.1.200 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

 persistence_timeout 50

    protocol TCP


    real_server 192.168.1.114 80 {

        weight 1

        TCP_CHECK {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

        }

    }

        real_server 192.168.1.115 80 {

        weight 1

        TCP_CHECK {

        connect_timeout 3

        nb_get_retry 3

        delay_before_retry 3

}

}

}

備服務器的配置文件和主的差別在紅色部分。

創建nginx監控文件

vim /etc/init.d/nginx.sh

#!/bin/bash

netstat -anpt | grep nginx

if [ $? != 0 ]

then

/home/webserver/nginx/sbin/nginx

sleep 3

netstat -anpt | grep nginx

if [ $? != 0 ]

then

/etc/init.d/keepalived stop

fi

fi

只在主配置即可 

測試keepalived 關閉nginx

wKiom1UNTBWR07pZAAL26z7cuYE915.jpg到此配置完成

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