zoukankan      html  css  js  c++  java
  • haproxy + keepalived 实现高可用负载均衡集群

    1. 首先准备两台tomcat机器,作为集群的单点server。

    第一台:

    1)tomcat,需要Java的支持,所以同样要安装Java环境。

    安装非常简单。

    tar xf  jdk-7u65-linux-x64.tar.gz

    mv jdk1.7.0_65 /usr/local/java

     然后在环境变量中加入Java的运行路径

    vim  /etc/profile

    JAVA_HOME=/usr/local/java

     export PATH=$PATH:$JAVA_HOME/bin

    修改后,source /etc/profile, 使变量生效

    我们可以测试一下  java-version

     出现Java版本信息,信息会随着系统的版本不同,以下为centos 7

    openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-b12) OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

    2)安装Tomcat

    tar xfv  apache-tomcat-7.0.54.tar.gz

    mv  apache-tomcat-7.0.54  /usr/local/tomcat

    找到tomcat的启动文件 /usr/local/tomcat/bin/startup.sh

    关闭文件 /usr/local/tomcat/bin/shutdown.sh

    启动后可用 netstat -anpt|grep 8080是否为Java占用,正常。

    tcp6       0      0 :::8080                 :::*                    LISTEN      1990/java 

    同时我也可以查看日志情况,tail  -f  /var/log/tomcat7/catalina.out     catalina.out  为日志文件

    3)我们要搭建一个测试环境

    cd /usr/local/tomcat7/conf找到server.xml 文件,修改前做备份,cp  server.xml  server.xml.bak

    主要Host 同时对context项,进行修改,把 docBase改为要测试的页面的目录,可为相对目录,也可为绝对目录。

    本例中我们用一个jsp编写的一个项目做实验,修改为SLSaleSystem,保存退出

    将项目解压至tomcat的网页存放目录webapps 下。tar  xvf  SLSaleSystem.tar.gz  /usr/local/tomcat7/webapps/

    重启服务

    /usr/local/tomcat7/bin/shutdown.sh

    /usr/local/tomcat7/bin/startup.sh

     打开浏览器,输入tomcat的ip,测试一下,出现登录界面,tomcat搭建完成

    第二台tomcat,配置同第一台一样

    2.安装两台haproxy+keepalived服务器

    1)安装haproxy

    yum -y install haproxy

    修改前做备份

    cp  /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

    vim /etc/haproxy/haproxy.cfg

    在最后添加

    listen  web_tomcat 0.0.0.0:80                                  定义一个服务器组,监听所有端口的80
            #option httpchk GET /index.html
            balance roundrobin
            server  web_tomcat_1 172.16.1.2:80 check inter 2000 rise 2 fall 3 weight 1               加两台服务器
            server  web_tomcat_2 172.16.1.12:80 check inter 2000 rise 2 fall 3 weight 1     

    为了便于日志管理,将日志独立定义到haproxy.conf ,并放到/etc/rsyslog.d  下

    先在    /etc/haproxy/haproxy.conf中加

        log /dev/log local0 info
        log /dev/log local0 notice      定义这两类信息,要记录到日志文件中

    再创建/etc/rsyslog.d/haproxy.conf 文件

    if ($programname == 'haproxy' and $syslogseverity-text =='info') then                           意思为如果程序名为haproxy并且日志验证文本为 info和notice分别记录到haproxy-info.log和haproxy-notice.log文件
      -/var/log/haproxy/haproxy-info.log
    &~
    if ($programname == 'haproxy' and $syslogseverity-text =='notice') then
            -/var/log/haproxy/haproxy-notice.log
    &~

    重启日志服务/etc/init.d/rsyslog restart

    创建这两个文件

    touch haproxy-info.log

    touch haproxy-notice.logfo.log

    打开浏览器http://haproxy主机ip,能显示

    2).安装keepalived

    我们选择用yum -y install keepalived

    添加为开机启动 chkconfig  keepalived on

    修改配置文件

    cd /etc/keepalived/

    cp keepalived.conf   keepalived.conf.bak

    vim keepalived.conf

    vrrp_instance VI_1 {

     #备用服务器上为 BACKUP    

    state BACKUP    

    #绑定vip的网卡为ens33    

    interface ens33    

    virtual_router_id 51    

    #备用服务器上为90    

    priority 90    

    advert_int 1    

    authentication {

            auth_type PASS        

      auth_pass 1111

     }    

    }    

    virtual_ipaddress {        

    172.16.1.200    

    }

    }

    3)第二台配置同第一台,不同的是keepalived.conf 文件中从priority 为90

    3,高可用测试

    模拟停止 nginx1服务,用ip a 查看网卡信息,发现VIP已转移到nginx2上。

    service nginx stop

    ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000     link/ether 00:0c:29:a7:c0:25 brd ff:ff:ff:ff:ff:ff     inet 192.168.1.2/24 brd 192.168.1.255 scope global ens33        valid_lft forever preferred_lft forever     inet 172.16.1.200/32 scope global ens33        valid_lft forever preferred_lft forever     inet6 fe80::20c:29ff:fea7:c025/64 scope link        valid_lft forever preferred_lft forever

    同时打开浏览器,查看,服务正常。

     

  • 相关阅读:
    About Inside the Azure Storage Outage of November 18th
    Microsoft Azure 的一些限制 Global
    js递归遍历树形json数据,根据关键字查找节点
    如何修改 WordPress 的默认 Gravatar 头像
    flatpickr功能强大的日期时间选择器插件
    express框架,使用 static 访问 public 内静态文件
    nodejs实时的检测系统文件的变化(无需重启服务)
    redis的常用命令
    NPM install -save 和 -save-dev 傻傻分不清
    Git的使用--如何将本地项目上传到Github
  • 原文地址:https://www.cnblogs.com/mushou/p/9378898.html
Copyright © 2011-2022 走看看