设为首页 收藏本站
查看: 1081|回复: 0

[经验分享] Nginx双主负载均衡架构

[复制链接]
累计签到:77 天
连续签到:1 天
发表于 2014-5-27 10:16:04 | 显示全部楼层 |阅读模式
        简介
        Nginx+keepalived单主环境下,其中一台slave机器处于备份状态,有些浪费,其实可以利用DNS轮询来实现双机负载均衡。
        具体架构图如下
         
         
         
        环境
        操作系统:CentOS 6.4
        WEB1服务器 IP:192.168.100.60
        WEB2服务器 IP:192.168.100.61
        VIP1:  192.168.100.62
        VIP2:  192.168.100.63
         
        安装keepalived(两台机器相同)
        tar xzvf keepalived-1.2.12.tar.gz
        cd keepalived-1.2.12
        ./configure
        make
        make install
        if [ 0 = $? ];then
         echo "keepalived installed"
        else
           echo "keepalived not installed"
         fi
         
        cp /usr/local/sbin/keepalived /usr/sbin
        cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
        cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
        mkdir /etc/keepalived
        cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
        ~                                                            
         
        安装nginx(两台机器相同)
        yum -y install openssl openssl-devel pcre pcre-devel gcc gcc-c++ make wget zlib-static zlib zlib-devel
        groupadd nginx
        useradd -g nginx nginx
        tar xzvf nginx-1.6.0.tar.gz
        cd nginx-1.6.0
        ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module  --with-http_stub_status_module --user=nginx --group=nginx
        make && make install
        if [ $? = 0 ];then
          echo "nginx installed"
        fi
         
        配置nginx(从略,相关配置看官方文档)
        配置keepalived
        WEB1服务器keepalived.conf配置
        [iyunv@test60 root]# cat /etc/keepalived/keepalived.conf
        ! Configuration File for keepalived
         
        global_defs {
           notification_email {
               test@test.com
           }
           notification_email_from test@test.com
           smtp_server 192.168.100.252
           smtp_connect_timeout 30
           router_id NGINX_1
        }
         
         vrrp_script chk_nginx {
              script "/tmp/check_http.sh"
              interval 2
              weight 2
           }
         
        vrrp_instance VI_1 {
            state BACKUP
            interface eth0
            virtual_router_id 51
            priority 99
            advert_int 1
            authentication {
                auth_type PASS
                auth_pass 1111
    }
         
           track_script {
                 chk_nginx
           }
         
            virtual_ipaddress {
                192.168.100.62 dev eth0 label eth0:1
            }
        }
         
        vrrp_instance VI_2 {
            state MASTER
            interface eth0
            virtual_router_id 52
            priority 100
            advert_int 1
            authentication {
                auth_type PASS
                auth_pass 1111
    }
          
         
            virtual_ipaddress {
                192.168.100.63 dev eth0 label eth0:2
            }
        }
         
        WEB2服务器keepalived.conf配置
        [iyunv@test61 root]# cat /etc/keepalived/keepalived.conf
        ! Configuration File for keepalived
         
        global_defs {
           notification_email {
               test@test.com
   }
           notification_email_from test@test.com
   smtp_server 192.168.100.252
           smtp_connect_timeout 30
           router_id NGINX_2
        }
         
         vrrp_script chk_nginx {
              script "/tmp/check_http.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
    }
         
         
            virtual_ipaddress {
                192.168.100.62 dev eth0 label eth0:1
            }
        }
         
        vrrp_instance VI_2 {
            state BACKUP
            interface eth0
            virtual_router_id 52
            priority 99
            advert_int 1
            authentication {
                auth_type PASS
                auth_pass 1111
            }
         
           track_script {
                chk_nginx
            }
         
            virtual_ipaddress {
                192.168.100.63 dev eth0 label eth0:2
            }
        }
         
        Nginx状态检查(两台机器相同)
         
        vim /tmp/check_http.sh
        #!/bin/bash
        url="http://192.168.100.60/"      # WEB2机器填192.168.100.61
        status=$(/usr/bin/curl -s --head "$url" | awk '/HTTP/ {print $2}')
         
        if [ "$status" != "200" ]; then
         /etc/init.d/keepalived stop
        fi
         
        WEB1服务器增加如下:
        echo “192.168.100.62” >> /var/www/html/index.html
        WEB2服务器增加如下:
        echo “192.168.100.63” >> /var/www/html/index.html
         
        测试        停止WEB1服务器的nginx,查看VIP1是否切换到WEB2服务器
        [iyunv@test60 root]# /etc/init.d/nginx stop
        启动WEB1服务器的nginx与keepalived,查看VIP1是否能切换回来到WEB1服务器
        [iyunv@test60 root]# /etc/init.d/nginx start
        [iyunv@test60 root]# /etc/init.d/keepalived start
       

                        停止WEB2服务器的nginx,查看VIP2是否切换到WEB1服务器       
                        [iyunv@test61 root]# /etc/init.d/nginx stop       
                        启动WEB2服务器的nginx与keepalived,查看VIP2是否能切换回来到WEB2服务器       
                        [iyunv@test61 root]# /etc/init.d/nginx start       
                        [iyunv@test61 root]# /etc/init.d/keepalived start       

        以上本人测试全部通过
       

        负载均衡        关于如何实现负载均衡,相必大家都看到有两个VIP,实现很简单只需要配置DNS轮询就可以实现负载均衡功能。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-19743-1-1.html 上篇帖子: Nginx编译安装&Php+xcache编译安装脚本 下篇帖子: ubuntu14.04安装nginx+php5-fpm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表