• 搭建Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡


    周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们,希望能够有所帮助!(如果内容中有误,还望大家指出!)

    常见的web集群调度器:

    调度器分为软件和硬件两种:lvs nginx haproxy等软件调度器

                              f5 绿盟  梭子鱼等硬件调度器

    •     lvs在企业生产中抗负载能力很强,但是不支持动静分离,正则处理,在大型网站中lvs实施复杂,而且维护成本高,工作在TCP四层,lvs就是一个单纯的负载均衡软件
    •     Nginx使用简单,性能较好,可负载三万到五万的并发量,Nginx上功能较多,可做web服务器也可做流量分配,但不支持session会话 cookie引导等, 工作在TCP七层
    •     haproxy使用简单,功能多,harpoxy支持两种工作模式,一个是TCP四层和七层(传输层和应用层),它补充了Nginx不能session cookie等工作,支持URL检测,如果服务器出问题会有很好的帮助,它和lvs一样只是单纯的负载均衡软件,但是它负载均衡的速度和处理并发上要优于Nginx,haproxy也可对MySQL读进行负载均衡,对后端MySQL节点进行检测,如果后端的MySQL slaves数量超出10台时,性能不如lvs+keepalived

           

      部署Nginx+keepalived+Tomcat 双主高可用负载均衡

    思路:

    1.首先需要四台服务,两台做Nginx负载均衡(Nginx1和Nginx2),另外两台当作真实节点服务器(Tomcat1和Tomcat2)

    2.既然要达到双主的目的,就需要用两个VIP(也就是虚拟ip)添加两条VIP是为了两台调度器互相是对方主服务和从从服务,把两个VIP添加同一个域名里,客户访问域名时同时工作,使两台机器没有一个是处于闲置浪费状态,并且当其中一台机器宕机后,第一台的VIP会转移到另一台,此时第二台会有俩个VIP,这样做最大化使负载均衡达到最理想化状态

    3.然后就是在调度器器上安装keepalived工具,当某台调度器宕机后,进行vip飘移,故障切换

    部署环境:

    • 负载Nginx1  192.168.40.21
    • 负载Nginx2  192.168.40.22
    • Tomcat1  192.168.40.23        
    • Tomcat2  192.168.40.24
    • VIP  192.168.40.66  192.168.40.67 

    安装Tomcat1

    需要源码包  : 

    Jdk-7u65-linux-x64.gz   apache-tomcat-7.0.54.tar.gz

     安装并生成测试页

    [root@root ~]# tar xf jdk-7u65-linux-x64.gz
    [root@root ~]# mv jdk1.7.0_65/ /usr/local/tomcat7/
    [root@root ~]# mkdir -p /web/webapp1/
    [root@root ~]#vim /web/webapp1/index.jsp

    安装Tomcat2

    安装步骤和Tomcat1一样,安装过程略过

    Tomcat2测试页内容:

     

    部署Nginx1负载均衡

    Nginx搭建过程略,搭建完成后修改Nginx主配置文件,在Nginx上添加Tomcat1和Tomcat2的真实节点服务器

      max—fails=1 fail_timeout=10s; 健康检查:最大连接失败测试1次,失败超时10秒

    部署Nginx2的负载

    Keepalived部署

    keepalived可以说是健康检查工具,他可以故障自动切换,节点健康检查

    Nginx1上安装keepalived

    yum -y isntall  keepalived

    修改keepalived配置文件,添加VIP以及Nginx 进程监测脚本

     编写Nginx检测进程脚本:

    #!/bin/bash
    #by:ImproveMyself
    #检测进程脚本
    #检测nginx 进程是否开启,如果没有开启尝试开启
    jc=`ps -C nginx --no-header|wc -l`
    if [ $jc -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    #如果nginx尝试开启失败,那么就关闭keepalived服务,进行vip飘移
    jc2=`ps -C nginx -no-header |wc -l`
    if [ $jc -eq 0 ];then
    /etc/init.d/keepalived stop
    fi
    fi

    修改keepalived的主配置文件:

    位置: /etc/keepalived/

     

    同时在Nginx2上部署keepalived,安装过程和Nginx1的keepalived一样,并且修改keepalived主配置文件

    部署完成之后,开启Nginx 和keepalive服务,此时使用ip  a 命令查看 Nginx1上的vip,发现vip1的IP

    因为VIP 1:192.168.40.66 主调度器是Nginx1 从调度器是Nginx2   ,只有当主调度器宕机之后,VIP1:192.168.40.66才切换到Nginx2上,所以Nginx1上显示VIP1:192.168.40.66是正确的,vip2:192.168.40.67 此时在Nginx1 上没有显示是因为Nginx1现在是VIP2的从调度服务,只有Nginx2 宕机之后VIP2才会切换到Nginx1上!

    然后再查看Nginx2 上的vip,发现vip2的ip,这样就说明双主模式已经部署成功

    检测:

    使用VIP 192.168.40.66进行访问

    使用VIP 192.168.40.67进行访问

     

    当Nginx1宕机后,此时Nginx2上有两条VIP

    使用不同VIP访问,依然成功访问

     

    ------------------------------------------------------------------------------------------------------------------

     

     

                                                                                      

                                                                      Haproxy+keepalived+Tomcat高可用负载

     

     思路:

    基于上面那个环境,现在做haproxy高可用  整体思路和Nginx+keepalived+Tomcat的一样,只不过是把Nginx调度换成haproxy调度器,测试方法和方式和上面那个案例一样

     

    部署环境:  

    • 负载haproxy1  192.168.40.21
    • 负载haproxy2  192.168.40.22
    • Tomcat1  192.168.40.23        
    • VIP1  192.168.40.66  
    • VIP2  192.168.40.67 

    部署haproxy1环境

     需要的源码包: haproxy-1.4.24.tar.gz

     安装haproxy

    tar  xf haproxy-1.4.24.tar.gz -C /usr/src/
    cd /usr/src/haproxy-1.4.24/
    make TARGET=linux26 && make install
    mkdir /etc/haproxy
    cp examples/haproxy.cfg  /etc/haproxy/
    cp examples/haproxy.init /etc/init.d/haproxy
    chmod +x /etc/init.d/haproxy
    ln -s /usr/local/sbin/haproxy  /usr/sbin/

     修改haproxy配置文件

     vim /etc/haproxy/haproxy.cfg

     

    创建haproxy.conf文件,用于日志管理

    vim /etc/rsyslog.d/haproxy.conf

    编写一个监测haproxy进程脚本用于故障切换,写入在keepalived配置文件里

    脚本和上面的Nginx.sh脚本一样,你可以把Nginx.sh复制出一个haproxy.sh,更改一下脚本里的检测内容就行了

    由于是基于上一个案例上的环境,所以keepalived就不在安装了,只需要把keepalived里的脚本名字更改一下就行了 

    部署haproxy2和keepalived

    因为安装步骤和之前一样,安装过程略

    修改haproxy.cfg配置文件和日志管理文件

    修改keepalived的主配置文件,并且把脚本写入

    部署完完成之后分别开启服务

    /etc/init.d/haproxy restart
    /etc/init.d/rsyslog  restart
    /etc/init.d/keepalived restart
    

    测试:

    使用两个vip访问

    宕机测试:

    此时40.22上出现两条vip,证明vip飘移成功

    此时再次访问

     

     

     

  • 相关阅读:
    ASP.NET程序中常用的三十三种代码[1]
    window.showModalDialog使用手册
    ASP函数详解
    ASP.NET程序中常用的三十三种代码[2]
    Session对象的清空
    Css不朽的经典—3D文字特效
    IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
    ASP.NET程序中常用的三十三种代码[3]
    平面设计常用制作尺寸
    Work with a file upload and download controls2
  • 原文地址:https://www.cnblogs.com/Dfengshuo/p/9396732.html
Copyright © 2020-2023  润新知