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

[经验分享] nginx配合keepalive的方案(双主)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-6-1 17:15:17 | 显示全部楼层 |阅读模式
QQ截图20160601171339.jpg
blog.iyunv.com   10.0.0.17  lb01 主      10.0.0.5  

bbs.iyunv.com    10.0.0.18   lb02主       10.0.0.6

说明:后端的web服务器一个是apacheweb服务,一个nginx服务

测试,,选用静态的html,不涉及nfs以及mysql

1.A1-nginx 负载服务器 01-10.0.0.5-lb01

①查看keepalive的配置文件

[iyunv@lb01 ~]# cat   /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

   31333741@qq.com

   }

   notification_email_from  31333741@qq.com

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

vrrp_instance VI_17 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.17/24 dev eth0 label eth0:1  

    }

}

vrrp_instance VI_18 {

    state BACKUP

    interface eth0

    virtual_router_id 52

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.18/24 dev eth0 label eth0:2

    }

}

[iyunv@lb01 ~]#

②查看nginx的配置文件

[iyunv@lb01 ~]# cat /application/nginx/conf/nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;


    upstream server_pools {

         server 172.16.1.7:80  weight=1;

         server 172.16.1.8:80  weight=1;

    }


    server {

        listen       10.0.0.17:80;

        server_name  blog.iyunv.com;

        location / {

            proxy_pass http://server_pools;

            proxy_set_header Host  $host;

            proxy_set_header X-Forwarded-For $remote_addr;

        }

    }


    server {

        listen       10.0.0.18:80;

        server_name  bbs.iyunv.com;

        location / {

            proxy_pass http://server_pools;

            proxy_set_header Host  $host;

            proxy_set_header X-Forwarded-For $remote_addr;

        }

    }

}

[iyunv@lb01 ~]#



A2-nginx 负载服务器 02 -10.0.0.6-lb02


①查看keepalive的配置文件

[iyunv@lb02 ~]# cat /etc/keepalived/keepalived.conf

global_defs {

   notification_email {

   31333741@qq.com

   }

   notification_email_from  31333741@qq.com

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL1

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.17/24 dev eth0 label eth0:1  

    }

}

vrrp_instance VI_18 {

    state MASTER

    interface eth0

    virtual_router_id 52

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.18/24 dev eth0 label eth0:2

    }

}

[iyunv@lb02 ~]#

②查看nginx的配置文件

[iyunv@lb02 ~]# cat  /application/nginx/conf/nginx.conf

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;


    upstream server_pools {

         server 172.16.1.7:80  weight=1;

         server 172.16.1.8:80  weight=1;

    }


    server {

        listen       80;

        server_name  blog.iyunv.com;

        location / {

            proxy_pass http://server_pools;

            proxy_set_header Host  $host;

            proxy_set_header X-Forwarded-For $remote_addr;

        }

    }


    server {

        listen      10.0.0.18:80;

        server_name  bbs.iyunv.com;

        location / {

            proxy_pass http://server_pools;

            proxy_set_header Host  $host;

            proxy_set_header X-Forwarded-For $remote_addr;

        }

    }

}

[iyunv@lb02 ~]#



测试blog和bbs的站点:

宕掉一台负载均衡器再接着测试

宕机以后查看IP:可以看出IP全部飘过来了

[iyunv@lb01 ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:90:A5:31  

          inet addr:10.0.0.5  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe90:a531/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:299420 errors:0 dropped:0 overruns:0 frame:0

          TX packets:319616 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:26869861 (25.6 MiB)  TX bytes:58054361 (55.3 MiB)


eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:90:A5:31  

          inet addr:10.0.0.17  Bcast:0.0.0.0  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


eth0:2    Link encap:Ethernet  HWaddr 00:0C:29:90:A5:31  

          inet addr:10.0.0.18  Bcast:0.0.0.0  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


eth1      Link encap:Ethernet  HWaddr 00:0C:29:90:A5:3B  

          inet addr:172.16.1.5  Bcast:172.16.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe90:a53b/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:1971 errors:0 dropped:0 overruns:0 frame:0

          TX packets:356 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:334109 (326.2 KiB)  TX bytes:47217 (46.1 KiB)


lo        Link encap:Local Loopback  

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  Metric:1

          RX packets:293602 errors:0 dropped:0 overruns:0 frame:0

          TX packets:293602 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:17072153 (16.2 MiB)  TX bytes:17072153 (16.2 MiB)


[iyunv@lb01 ~]#

web测试(依然OK):



keepalive和 drbd 都是基于硬件方面的切换

例如:服务器宕机或者keepalive服务停掉,ip就会自动切换

但是有一个问题就是  nginx服务没有正常开启或者宕掉。但是这个时候

keepalive的虚拟IP不会自动漂移,以下是解决方案。

思路:监控nginx服务,如果不正常,就停掉keepalived或者关机


方法1.守护进程的方式

说明:可以在每个负载均衡器上让这个脚本在后台执行

[iyunv@lb02 scripts]# cat  check_w_proxy.sh

#!/bin/bash

while true

do

nginxpid=`ps  -C  nginx  --no-header|wc -l`

if [ $nginxpid -eq 0 ];then

/application/nginx/sbin/nginx

sleep 5

  nginxpid=`ps  -C  nginx  --no-header|wc -l`

if [ $nginxpid  -eq 0 ];then

/etc/init.d/keepalived stop

exit 1

fi

fi

sleep  5

done

[iyunv@lb02 scripts]#

[iyunv@lb02 scripts]# sh  check_w_proxy.sh  &

[1] 3046


方法2.keepalive内置触发配置



在每个负载均衡器的虚拟Ip为master内配置,然后调用,

主节点挂了,备节点来接管

[iyunv@lb02 scripts]# cat  /etc/keepalived/keepalived.conf


global_defs {

   notification_email {

   31333741@qq.com

   }

   notification_email_from  31333741@qq.com

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL1

}

vrrp_script  check_nginx_proxy {

script  "/server/scripts/check_w_proxy.sh"

interval 2

weight 2

}

vrrp_instance VI_1 {

    state BACKUP

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.17/24 dev eth0 label eth0:1  

    }


}

vrrp_instance VI_18 {

    state MASTER

    interface eth0

    virtual_router_id 52

    priority 150

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     10.0.0.18/24 dev eth0 label eth0:2

    }

  track_script {

  check_nginx_proxy

}

}

[iyunv@lb02 scripts]#










运维网声明 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-224944-1-1.html 上篇帖子: 两台服务器如何互相做nginx负载均衡 下篇帖子: fail2ban读取nginx日志禁止非法ip访问
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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