haproxy、nginx以及httpd负载均衡tomcat主机,seesion保持问题

**实验环境**




CentOS 7

haproxy(nginx):172.16.61.4(node4)

httpd+tomcat:172.16.61.7(node7)

172.16.61.8(node8)



一、使用nginx做负载均衡

**配置tomcat以及httpd**



<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat8">   #在node8节点添加jvmRoute标记,便于直观查看负载均衡效果(node7节点为Tomcat7)

 <Host name="node8.tz.com"  appBase="/data/webapps"    #在两台tomcat上配置同样的虚拟主机
            unpackWARs="true" autoDeploy="true">

            
[[email protected] conf.d]# cat proxy.conf      #httpd配置(两台tomcat要相同)        
<VirtualHost *:80>              
    ServerName tc1.tz.com
    ProxyRequests Off
    ProxyVia On
    ProxyPreserveHost On

    <Proxy *>
        Require all granted
    </Proxy>
    ProxyPass / ajp://localhost:8009/
    ProxyPassReverse / ajp:://localhost:8009/
    <Location />
        Require all granted
    </Location>
</VirtualHost> 

[[email protected] ROOT]# cat index.jsp           #在tomcat的虚拟主机中定义主页内容
<%@ page language="java" %> 
<html>
  <head><title>Tomcat7</title></head>            
  <body>
    <h1><font color="red">node8.tz.com</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("magedu.com","magedu.com"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
  </body>
</html>

**配置nginx**



upstream tcsrvs {              #在nginx配置文件中定义upsteam模块,默认采用轮询的调度算法
        server node8:80;        #基于主机名调度,本地hosts文件要解析后端hostname
        server node7:80;

    }

location / {                  #在server中定义location进行反向代理
          proxy_set_header Host $http_host;    #将客户端请求的host代理至后端
          proxy_pass http://tcsrvs/;
        }

配置本地hosts文件,解析172.16.61.4 node8.tz.com地址

实现了轮询的效果

**haproxy负载均衡tomcat**



[[email protected] haproxy]# sed ‘[email protected]^#.*\+\|^[[:space:]]\+#.*\[email protected]@‘ haproxy.cfg
global
   log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  main *:80

    default_backend        tomcat

listen statistics
	bind	 *:9090
	stats	 enable
	stats	hide-version
	stats uri   /haproxyadmin?stats
	stats realm  "HAproxy\ Statistics"
	stats auth    admin:tianzhuang
	stats admin	if TRUE
backend tomcat
    balance     roundrobin
    server      tomcat1 172.16.61.7:80 check
    server	tomcat2 172.16.61.8:80 check

**httpd负载均衡配置**



<proxy balancer://tccluster>
        BalancerMember http://172.16.61.7:80 loadfactor=1
        BalancerMember http://172.16.61.8:80 loadfactor=1
        ProxySet lbmethod=bytraffic
</proxy>

<VirtualHost *:80>
        ServerName  localhost
        ProxyRequests Off
        ProxyVia  On
        ProxyPass / balancer://tccluster/
        ProxyPassReverse / balancer://tccluster/
        ProxyPreserveHost On
        <Proxy *>
          Require all granted
        </Proxy>
        <Location />
          Require all granted
        </Location>
</VirtualHost>

**保持session会话**



  • nginx负载均衡session保持问题:


 upstream tcsrvs {
        server node8:80;
        server node7:80;
        ip_hash;            #基于客户端地址进行hash,将来自同一ip的请求发至同一个server
#        hash $request_uri;  #基于请求的uri hash,应用于后端的缓存server;
#        hash $remote_addr;  #基于远程客户端地址hash,相当于ip_hash;
    }
  • haproxy负载均衡session保持问题:


backend tomcat
    balance     roundrobin
    cookie  TOMCAT insert nocache           #在后端主机的响应报文中插入cookie
    server      tomcat1 172.16.61.7:80 check    cookie tomcat1
    server      tomcat2 172.16.61.8:80 check    cookie tomcat2
  • httpd负载均衡session保持问题:


[[email protected] conf.d]# cat proxy.conf 
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED              #增加头部的session信息,以route为关键字
<proxy balancer://tccluster>
	BalancerMember http://172.16.61.7:80 loadfactor=1 route=Tomcat7  #route为Tomcat7,后端tomcat server也需要加入该route信息
	BalancerMember http://172.16.61.8:80 loadfactor=1 route=Tomcat8
	ProxySet lbmethod=bytraffic
	ProxySet stickysession=ROUTEID
</proxy>

<VirtualHost *:80>
        ServerName  localhost
	ProxyRequests Off
	ProxyVia  On
	ProxyPass / balancer://tccluster/
	ProxyPassReverse / balancer://tccluster/
	ProxyPreserveHost On
	<Proxy *>
	  Require all granted
	</Proxy>
	<Location />
	  Require all granted
	</Location>
</VirtualHost>
时间: 2024-10-12 12:41:10

haproxy、nginx以及httpd负载均衡tomcat主机,seesion保持问题的相关文章

高性能Web服务之Httpd负载均衡Tomcat实现Session Sticky及Session Cluster

Httpd负载均衡Tomcat实现Session Sticky及Session Cluster架构如下所示: 实现过程如下: 配置tomcat服务(tomcat1\tomcat2) (1)安装JDK # rpm -ivh jdk-7u9-linux-x64.rpm  --安装JDK后生成的文件 # cd /usr/java/ ; ll total 4 lrwxrwxrwx  1 root root   16 Sep 27 09:09 default -> /usr/java/latest drw

Apache Httpd负载均衡Tomcat并实现Session Sticky和Session Cluster 大纲

Apache Httpd负载均衡Tomcat并实现Session Sticky和Session Cluster 大纲 前言 实验拓扑 实验步骤 安装配置tomcat 安装配置Apache Httpd并测试 实现session sticky 实现Session Cluster 总结 前言 上篇文章我们介绍如何构建一个LANMT平台并搭建一个jspxcms, 这次我们介绍使用apache httpd负载均衡Tomcat并实现Session Sticky和Session Cluster 实验拓扑 实验

nginx、Apache负载均衡后端主机tomcat,并实现session保持

一.实验环境准备 1.主机规划 Apache主机 172.18.12.20 TomcatA 172.18.12.21 TomcatB 172.18.12.22 2.tomcat主机安装和配置 # yum install -y java-1.7.0-openjdk java-1.7.0-openjdk-devel # vim /etc/profile.d/java.sh # yum install -y tomcat tomcat-lib tomcat-webapps tomcat-admin-w

Nginx 反向代理 负载均衡 虚拟主机配置

通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常用配置的说明.即学即用,你还在等什么?一睹为快先了解Nginx的三大功能Nginx 可以作为一台http服务器.可以做网站静态服务器,比如图片服务器,高效,减轻服务器压力.同时它也支持https服务.Nginx 可以配置多台虚拟主机.可以实现在一台服务器虚拟出多个网站效果,省钱.Nginx 最重要的是反向代理,负载均衡.在服务器集群中,Ngin

Haproxy+Nginx实现web负载均衡群集

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx,相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有Hapr oxy好.Haproxy的官方网站是http://haproxy.1wt.eu/.本案例介绍使用Haproxy及Nginx搭建一套web群集. 一.案例环境 使用三台服务器模拟搭建一套web群集,具体的拓补图如下: 主机 系统 IP地址 主要软件 Haproxy

CentOS 7搭建Haproxy+Nginx+Firewalld+DNS负载均衡

一.部署第一台Nginx网站 关于Nginx的原理概述及详细配置请参考博文:Centos 7部署Nginx网站服务 [[email protected] ~]# yum -y install prce-devel zlib-devel <!--安装Nginx依赖--> [[email protected] ~]# useradd -M -s /sbin/nologin nginx <!--创建管理Nginx账户--> [[email protected] ~]# umount /m

apache基于mod_jk模块实现代理及负载均衡Tomcat Cluster

一.基于mod_jk模块实现apache代理tomcat 上篇博文已经学习了nginx代理和负载均衡tomcat及apache基于mod_proxy模块代理tomcat; 现在来学习下apache基于mod_jk模块实现代理及负载均衡Tomcat Cluster 1.基于httpd代理tomcat时可以使用httpd的两个模块 1)mod_jk:第三方模块 mod_jk是ASF的一个项目,是一个工作于apache端基于AJP协议与Tomcat通信的连接器,它是apache的一个模块,是AJP协议

HAProxy+Keepalived高可用负载均衡

一 基础准备 1.1 部署环境及说明 系统OS:CentOS 6.8 64位 HAProxy软件:HA-Proxy version 1.5.18 Keepalived软件:keepalived-1.3.6.tar.gz 官方链接:http://www.haproxy.org/ (国内可能无法打开) 下载连接:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/ 部署说明:当用户访问对应的域名时,HAProxy能将请求发送到对应的后端主机上,同时当主HA

Tomcat(五):nginx/httpd + tomcat及负载均衡tomcat

*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h