天天看点

Nginx负载均衡以及keepalived高可用实验

vip  10.1.122  

keepalived-master  10.1.1.132

keepalied-backup   10.1.1.133

realserver_1      10.1.1.136

realserver_2      10.1.1.137

四台机器上安装nginx,编译安装的话需要另外安装pcre包支持,安装在/usr/local/nginx

keepalived-master 和backup 安装keepalived 和ipvsadm(lvs安装包)

! configuration file for keepalived

global_defs {

#   notification_email {

#     [email protected]

#   }

 #  notification_email_from [email protected]

  # smtp_server 192.168.200.1

   #smtp_connect_timeout 30

   router_id lvs_devel_1

}

vrrp_sync_group lvs {

        group {

                vi_1

                }

vrrp_instance vi_1 {

    state master

    interface eth1

    lvs_sync_daemon_interface eth1

    virtual_router_id 51

    priority 101

    advert_int 1

    authentication {

        auth_type pass

        auth_pass 1111

    }

    virtual_ipaddress {

       10.1.1.222

virtual_server 10.1.1.222 {

        delay_loop 6

        lb_algo rr

        lb_kind dr

        persistence_timeout 50

        protocol tcp

        real_server 10.1.1.136 80 {

        weight 1

        tcp_check {

        connect_timeout 4

        nb_get retry 4

        delay_before_retry 4

        connect_port 80

        }

     }

        real_server 10.1.1.137 80 {

            nb_get_retry 4

            delay_before_retry 4

            connect_prot 80

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    # another virtual host using mix of ip-, name-, and port-based configuration

    #

    #server {

    #    listen       8000;

    #    listen       somename:8080;

    #    server_name  somename  alias  another.alias;

    #    location / {

    #        root   html;

    #        index  index.html index.htm;

    #    }

    #}

    # https server

    #    listen       443 ssl;

    #    server_name  localhost;

    #    ssl_certificate      cert.pem;

    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:ssl:1m;

    #    ssl_session_timeout  5m;

    #    ssl_ciphers  high:!anull:!md5;

    #    ssl_prefer_server_ciphers  on;

keepalived-backup: 配置文件

  # notification_email {

  #   [email protected]

  # }

  # notification_email_from [email protected]

  # smtp_connect_timeout 30

   router_id lvs_devel_2

    state backup

    interface eth2

    priority 99

virtual_server 10.1.1.222 80 {

    delay_loop 6

    lb_algo rr

    ##lb_kind nat

    lb_kind dr

    persistence_timeout 50

    protocol tcp

    real_server 10.1.1.136 80 {

            connect_timeout 3

            nb_get_retry 3

            delay_before_retry 3

    real_server 10.1.1.137 80 {

       }

安装完成后master和backup  /etc/init.d/keepalived start

ip addr 查看vip地址:

Nginx负载均衡以及keepalived高可用实验

此时master上的ip 10.1.1.222已经生成,backup上此时需等master keepalived停掉后会自动生成vip 10.1.1.222

Nginx负载均衡以及keepalived高可用实验

在停止master keepalived后vip,backup生成10.1.1.222:

Nginx负载均衡以及keepalived高可用实验

通过 ipvsadm来查看ha服务和realserver:

Nginx负载均衡以及keepalived高可用实验

bakcup上

Nginx负载均衡以及keepalived高可用实验

在realserver的nginx配置文件上配置需要访问的内容,运行如下脚本开启转发功能:

#!/bin/bash

vip=10.1.1.222

source /etc/rc.d/init.d/functions

case "$1" in

start)

    echo "start lvs of real server"

    ifconfig lo:0 $syn_vip netmask 255.255.255.255 broadcast $vip

    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

       sysctl -p >/dev/null 2>&1

       echo "realserver start ok"

    ;;

stop)

    echo "stop lvs of real server"

       ifconfig lo:0 down

       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore

       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce

       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore

       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce

       echo "realserver stoped"

       ;;

*)

    echo "usage: $0 {start|stop}"

    exit 1

esac

查看realserver的ip,生成lo:0的虚拟网口来转发数据

Nginx负载均衡以及keepalived高可用实验

以上配置完成后,进行测试:

Nginx负载均衡以及keepalived高可用实验

在关闭一台nginx 服务后:

Nginx负载均衡以及keepalived高可用实验

关闭一台keepalived服务后,丢一个包就会自动连接

Nginx负载均衡以及keepalived高可用实验

继续阅读