在上一篇,我们介绍了weblogic集群的部署和session的复制,如何将请求负载均衡到这个三个服务器上呢?

这里提供两种方式:(1)weblogic自带的proxy代理        (2) nginx实现负载均衡

一、通过proxy实现负载均衡

1、创建proxy_server服务

创建完成后,proxy_server关联计算机machine,这样可以通过节点管理器启动该服务.

2、创建proxy_server应用

proxy_server应用很简单,就一个web.xml和一个weblogic.xml
web.xml
HttpClusterServlet会将请求负载分发到127.0.0.1:47001|127.0.0.1:47002|127.0.0.1:47003上.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>proxy_server</display-name> <servlet>
<servlet-name>session_test</servlet-name>
<servlet-class>weblogic.servlet.proxy.HttpClusterServlet</servlet-class>
<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>127.0.0.1:47001|127.0.0.1:47002|127.0.0.1:47003</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>session_test</servlet-name>
<url-pattern>/session_test</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>session_test</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>session_test</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>session_test</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>session_test</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping> </web-app>

weblogic.xml

<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic
810-web-jar.dtd">
<weblogic-web-app>
<context-root>/</context-root>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>GBK</java-charset-name>
</input-charset>
</charset-params>
</weblogic-web-app>

将其打包成war,部署到proxy_server服务器上.

部署完成后如下所示:
3、 测试负载均衡
当服务都启动之后,浏览器输入http://127.0.0.1:47008/redis/
然后刷新浏览器
可以发现,session的创建时间和第一个感叹号之前的值也没有变化,说明:session得到了复制,每次请求被分发到其中的某一个server上,降低了服务器的压力.
当我们把托管服务server1关闭时
我们再次刷新浏览器时,
由上图可以发现,session并没有发生变化(只是感叹号之后的值变化了),而且后来每次刷新时感叹号之间的值506820286和68952051来回调换位置而已.
这也表示服务器只有2个了.
由以上几点,我们验证了weblogic的负载均衡.

二、通过Nginx实现负载均衡

还记得我的另篇博文中写的关于nginx+tomcat实现的负载均衡么,nginx+tomcat负载均衡和session复制,原理其实差不多. 只需要更改下其中的IP地址就可以了.
    #weblogic的三个服务
upstream mysite {
server 127.0.0.1:47001 weight=5;
server 127.0.0.1:47002 weight=5;
server 127.0.0.1:47003 weight=5;
}

完整的内容如下

#user  nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 10; #gzip on; #weblogic的三个服务
upstream mysite {
server 127.0.0.1:47001 weight=5;
server 127.0.0.1:47002 weight=5;
server 127.0.0.1:47003 weight=5;
} server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
proxy_pass http://mysite;
#添加如下3个配置后,当一台server宕机,切换速度会很快,此时配置是1秒
proxy_connect_timeout 1;
proxy_send_timeout 1;
proxy_read_timeout 1;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
} # another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias; # location / {
# root html;
# index index.html index.htm;
# }
#} # HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost; # ssl_certificate cert.pem;
# ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on; # location / {
# root html;
# index index.html index.htm;
# }
#} }

为了避免proxy和nginx相互影响,我们先把proxy_server服务关闭,server1服务再次启动.

启动nginx,浏览器输入http://127.0.0.1/redis/
刷新浏览器后,session创建时间和那个值(你懂的)也不会变.
如果将server1 和server2 都关闭后,会怎么样呢? 
我们再次刷新浏览器,而且每次刷新后Session ID 整体的值都不会变化,因为我们只有一个服务了,不会把请求切换到其他服务上.
由上图可以发现,session的创建时间并没有变化,但是第2个感叹号后的值变成了NONE,由此我们想到了什么呢?是不是代表这个值表示某个服务的ID值呢?(具体答案大家可以百度自行寻找答案,想必对weblogic 的sessionID值构成有更深刻的认识.)

Weblogic 12c 负载均衡和session复制的更多相关文章

  1. nginx+tomcat负载均衡和session复制

    本文介绍下传统的tomcat负载均衡和session复制. session复制是基于JVM内存的,当然在当今的互联网大数据时代,有更好的替代方案,如将session数据保存在Redis中. 1.安装n ...

  2. Apache_proxy负载均衡和Session复制

    今天上网查了查资料,之前使用apache的jk模块做负载均衡.后来觉得jk的负载配置有点死板,只能按照负载权重值来进行请求的分发,没有做到比较智能的负载平衡,并且使用mod_jk访问页面发现确实比较慢 ...

  3. Tomcat6+nginx集群,达到负载均衡和session复制

    nginx+tomcat做web项目集群,达到负载均衡.故障转移.session复制功能. 1.nginx配置文件见上一篇“nginx配置文件(反向代理+集群+动静分离)” 2.tomcat集群,修改 ...

  4. nginx+tomcat集群负载均衡(实现session复制)

    转自:http://talangniao.iteye.com/blog/341512 架构描述 前端一台nginx服务器做负载均衡器,后端放N台tomcat组成集群处理服务,通过nginx转发到后面( ...

  5. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  6. Apache+Tomcat +mod_proxy集群负载均衡及session

      序言: 在玩Apache+Tomcat +mod_jk集群负载均衡及session的时候发现,还有一种方式可以实现,就是网上各位大牛们说的mod_proxy反向代理. 实在弄的我的知识细胞洋洋.实 ...

  7. 通过Nginx+tomcat+redis实现反向代理 、负载均衡及session同步

    一直对于负载均衡比较陌生,今天尝试着去了解了一下,并做了一个小的实验,对于这个概念有一些认识,在此做一个简单的总结 什么是负载均衡 负载均衡,英文 名称为Load Balance,指由多台服务器以对称 ...

  8. windows使用nginx+memcached实现负载均衡和session或者缓存共享

    windows使用nginx+memcached实现负载均衡和session或者缓存共享 两台server server1:115.29.186.215 windows2008 64位操作系统 ser ...

  9. 玩转spring boot——负载均衡与session共享

     前言 当项目上线后,如果要修复bug或扩充功能,都需要重启tomcat服务.此时,正在使用应用的用户们就需要等待服务器的重启,而这就会造成不好的用户体验.还有,当仅仅只有一台tomcat服务时,如果 ...

随机推荐

  1. Docker 基础技术之 Linux namespace 源码分析

    上篇我们从进程 clone 的角度,结合代码简单分析了 Linux 提供的 6 种 namespace,本篇从源码上进一步分析 Linux namespace,让你对 Docker namespace ...

  2. Spring Cloud学习笔记-009

    API网关服务:Spring Cloud Zuul API网关是一个更为智能的应用服务器,它的定义类似于面向对象设计模式中的Façade模式,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户 ...

  3. [项目推荐] Corcel 让你在 WordPress 中使用 Laravel

    你想过可以在 WordPress 中使用 Laravel 或者任意一种 PHP 框架吗? Corcel 可以帮你实现! 开发网站应用就应该是快捷并有趣的.当然了,每个应用都会有它自己的需求和生命周期. ...

  4. Linux之centos系统常用命令总结

    1.查看系统版本 cat /etc/redhat-release 文件与目录操作 命令 解析 cd /home 进入 '/home' 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 ...

  5. Python 字符串常见的27个操作

    有字符串 mystr = "hello world itcast and itcastcpp",以下是常见的操作: 1. mystr.find(str, start=0, end= ...

  6. js保留整数

    1.丢弃小数部分,保留整数部分parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.fl ...

  7. ognl版本错误

    错误信息: 2014-2-6 21:20:10 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() fo ...

  8. [CQOI 2010]扑克牌

    Description 你有n种牌,第i种牌的数目为ci.另外有一种特殊的 牌:joker,它的数目是m.你可以用每种牌各一张来组成一套牌,也可以用一张joker和除了某一种牌以外的其他牌各一张组成1 ...

  9. 【luogu2161】【SHOI2009】Booking会场预约

    原题传送门 题意简析:你需要写一个数据结构,维护一个时间轴,支持如下操作: 1)插入1个新区间,删除所有时间轴上与它有交的区间并输出个数. 2)查询当前时间轴上的区间个数. 解题思路:裸的无旋trea ...

  10. 2015 多校联赛 ——HDU5363(快速幂)

    Problem Description soda has a set S with n integers {1,2,…,n}. A set is called key set if the sum o ...