通向架构师的道路之weblogic的集群与配置
一、Weblogic的集群
还记得我们在第五天教程中讲到的关于Tomcat的集群吗?
两个tomcat做node即tomcat1, tomcat2,使用Apache HttpServer做请求派发。
现在看看WebLogic的集群吧,其实也差不多。

区别在于:
² Tomcat的集群的实现为两个物理上不同的tomcat,分别就是两个node,没有总控端,没有任何控制台可言(只有通过比较简陋的http://localhost:8080/manager/html,或者是http://localhost:9090/manager/html)来对每个tomcat节点进行监视(此处只有monitor没有control);
如果我们要布署我们的Web应用,需要分别手工往每个Tomcat的webapp目录里拷贝文件。
² Weblogic的集群必须设立一个总控端,可从上图中看出,然后这个总控端我们把它称为AdminServer,然后在其下可以挂weblogic的集 群的node,这个node不是物理上不同的两个weblogic,而是不同的domain,我们假设domain1, domain2为两个weblogic的集群的节点。
如果我们要布署我们的Web应用,只需要在总控端布署一次,然后挂在这个总控端下的节点将会自动将我们的web应用发布到每一个节点。
因此,要实现weblogic的集群必须:
ü 安装Weblogic
ü 创建一个AdminServer的domain
ü 在AdminServer上建立集群总控端
ü 分别创建每一个要加入此集群总控端的node,也是一个个的domain
二、创建Weblogic集群前的规划
根据第一节中的内容,我们将我们用于实验的Weblogic规划成3个domain,每个domain都包含有下列的必不可少的属性:
ü AdminConsole(总控端)
l 逻辑名
l 物理名(domain的系统路径)
l 端口号
l 计器名(IP)
l 登录信息(username/password)
ü Cluster node1(集群节点1)
l 逻辑名
l 物理名(domain的系统路径)
l 端口号
l 计器名(IP)
l 登录信息(username/password)
ü Cluster node2(集群节点2)
l 逻辑名
l 物理名(domain的系统路径)
l 端口号
l 计器名(IP)
l 登录信息(username/password)
我们用表格列出我们将要创建的集群中总控端与每个节点的集息:
| 物理名 | 逻辑名 | 端口号 | 主机名(IP) | 登录信息 |
| \bea\user_projects\domains\adminserver | AdminServer | 7001 | localhost | weblogic/password_1 |
| \bea\user_projects\domains\server1 | mycluster1 | 7011 | localhost | weblogic/password_1 |
| bea\user_projects\domains\server2 | mycluster2 | 7012 | localhost | weblogic/password_1 |
规划好了,就可以开始来创建我们的集群了。
三、开始创建我们的Weblogic集群
3.1 创建集群的总控制端(aminserver)
Windows:
Windows下通过菜单->OracleWeblogic->Weblogic Server 11gR1->Tools->Configuration Wizard来启动创建domain的wizard。

Unix/Linux:
Unix/Linux下通过
| cd /bea/wlserver/common/bin ./config.sh |
来启动创建domain的wizard。

选择“创建新的Weblogic域”,选下一步(下面全部跟着我的操作步骤与界面填选的参数走,所有的用户名啦、密码啦、端口号啦、IP啦,都请根据第一节中的那个表格里的参数填写)





下一步后界面类似,但是是有区别的,注意了哦,不要下手太快了

上面这个配的就叫集群广播地址的界面。
因为集群是通过广播(有unicast和multicast两种)来同步集群中的节点,并且把每个节点中的session通过这个广播地址来进行复制和同步,即主控域不断的时时刻刻的会和它下面的子节点间保持通讯、经常去询问各个子节点的。
ü 名称:
可以任意
ü 集群信息传送模式:
有unitcast与multicast两种,在11G版本前都是multicast10G后开始支持unicast协议。
如果指定了multicast,就必须指定一个“多点传送地址”,此地址和端口都可以采用weblogic默认的。
如果在域环境,还需要在防火墙中配置这个“多点传送地址”与“多点传送端口”,使其在防火墙中被打开,协议为both of tcp and udp。


Look, 右边这块我们把它称为“集群的逻辑拓卜图”。

此处是对每个集群里的节点指定相应的“计算机名/IP”,由于我们的实验是建立在同一台机器上的即纵向集群,因此这步什么都不需要填,直接下一步。


完成后可以启动adminserver

然后通过http://localhost:7001/console来查看我们的集群规划,如下图:

这样,我们就完成了创建一个新的domain并且将且扩展成为了集群的总控制端服务器,同时在这上面我们制作了一个“集群拓卜图”,那么下面要做的就是:
² 创建该集群拓卜图中的节点1
² 创建该集群拓卜图中的节点2
3.2 创建集群中的节点(mycluster1, mycluster2)
启动Weblogic的Configuration Wizard
按照普通的域,就是一个普通的域来创建(为了实验方便我们的用户名与密码全部为weblogic/password_1):
l user_projects\domains\server1(逻辑名为:mycluster1,端口:7011)
l user_projects\domains\server2(逻辑名为:mycluster2,端口:7012)





下一步,下一步,创建,完成。
依上面的相同步骤可以自行创建server2(逻辑名为mycluster2,端口:7012)。

3.3 如何启动集群
| 物理名 | 逻辑名 | 端口号 | 主机名(IP) | 登录信息 |
| \bea\user_projects\domains\adminserver | AdminServer | 7001 | localhost | weblogic/password_1 |
| \bea\user_projects\domains\server1 | mycluster1 | 7011 | localhost | weblogic/password_1 |
| bea\user_projects\domains\server2 | mycluster2 | 7012 | localhost | weblogic/password_1 |
我们看着上面这个表格来输入命令吧。
1. 启动主控域(必须永远先启动主控域)

2.启动节点1(间点间的启动顺序无所谓)

3. 启动节点2(间点间的启动顺序无所谓)

全部启动完毕后就可以通过主控制域的admin console即http://localhost:7001/console来管理这个集群了。

四、jdbc集群
有了集群,我们就可以布署我们的JDBC了,只是这个JDBC的布署和以前单机版的JDBC布署稍稍有点不一样,前面我们引用第八天中的建立JDBC的步骤:





好好好,停,到了这边,不一样的地方来了。

嘿嘿,千万不要把这个JDBC连接池的“target”即作用域设错了哈,我们现在是集群,要把这个JDBC连接池的作用域设在我们的集群上的哈!

我们来测试一下我们建立的数据源吧。

两个cluster上的数据源全部部署成功。
这边再提一句:
集群布署的话AdminServer只是一个控制器,通过它布署的war程序是自动同步到挂在它下面的所有的节点中去的,因此JDBC数据源,或者JMS或者是EJB都要在绑定是把target即作用域设成cluster而不是AdminServer本身,因为AdminServer本身不会布署任何任何东西的。
五、把工程布署到集群环境中去
ü 确保我们将要布署的工程中的web.xml的最后一行含有:
ü 在将要布署的工程的WEB-INF目录下新建一个weblogic.xml的文件,其内容如下:
| true replicated true /cbbs |
该内容使得你的工程可以在Weblogic集群环境下进行Session复制。
然后就可以开始布署了

下面又来了,和在集群中布署JDBC是一样的,请看:

下一步,下一步一直到[完成]按钮亮起来后,点[完成]。

点[保存]并[激活更改]。
大家来看看两个cluster即mycluster1与mycluster2下是否被布署了工程,即相当于我们手工要在两个tomcat节点的webapps目录里拷入我们的WAR工程,而weblogic只需要通过主控制域,自动将war工程布署在其下的所有子节点内。

是的,果然,它自动布署了。就算我下面有10几个子节点,它也一样只需要在AdminServer上布署一次,自动同步。
我们把这个工程启动起来吧。

当你一点“为所有请求提供服务,再来看两个字节点的后台console,都可以同步启动了:

布署成功

打开两个IE:
一个输入: http://localhost:7011/cbbs
一个输入: http://localhost:7012/cbbs

Weblogic集群布署成功,接下去就是在Apache里进行派发了
六、使用Apache与Weblogic集群整合
打开httpd.conf,把下面这段就是我们在“第九天”中加入的,去掉:
| LoadModule weblogic_module modules/mod_wl_22.so WebLogicHost localhost WebLogicPort 7001 MatchExpression /cbbs/WEB-INF MatchExpression /cbbs/*WEB-INF MatchExpression /cbbs/*.action MatchExpression /cbbs/servlet/* MatchExpression /cbbs/*.jsp MatchExpression /cbbs/*fckeditor/editor/filemanager/connectors/*.* MatchExpression /cbbs/fckeditor/editor/filemanager/connectors/* WLLogFile logs/wlproxy.log |
换成下面这一段
| LoadModule weblogic_module modules/mod_wl_22.so Include conf/weblogic.conf |
然后在apache安装的conf目录下手工建立weblogic.conf文件,其内容如下:
| WeblogicCluster localhost:7011,localhost:7012
MatchExpression /cbbs/WEB-INF MatchExpression /cbbs/*WEB-INF MatchExpression /cbbs/*.action MatchExpression /cbbs/servlet/* MatchExpression /cbbs/*.jsp MatchExpression /cbbs/*fckeditor/editor/filemanager/connectors/*.* MatchExpression /cbbs/fckeditor/editor/filemanager/connectors/* |
重启你的Apache,输入:http://localhost/cbbs/index.jsp

Apache加Weblogic集群,搞定!
七、JMS集群
这是我在用Weblogic集群布署PEGA Rulz的详细步骤,供各为参考。因为网上关于JMS在Weblogic下如何作集群不是太多,因此把步骤记录下来Share给大家。
JMS集群和JDBC集群不一样,就是不能够直接建立JMS源,然后把它target到我们的myclusterbroadcast上去。
ü 而是需要分别为每个cluster单独建一个jms的server如下图。

ü 然后建立jmsmodule


将module 的作用范围即target到我们的cluster(myclusterbroadcast)上去。
建立完了module你就要建立topic, queue以及相应的topic connection factory或者是queue connectionfactory了是吧?
因为我们这边给PEGA Rulz做集群用的是topic方式来发布集群的,因此我们以topic为例,queue的建立也就一样了。
ü 单击刚才我们建立的KTJmsModule

点[New]
先建connection factory

ü 在新建connectionfactory的界面中有一个[高级定位]的按钮


ü 点[新建子部署]
填入完子布署的名称后,按照如下图来“target”

点完成后跳出如下的界面

此时我们可以开始真正建立我们的topic或者是queue了
前面说了不能够直接建立JMS源,然后把它target到我们的myclusterbroadcast上去。那么我们要对JMS进行集群即对Topic或者是Queue进行集群,但是我们可以建立一个Distribute Topic,然后分别建两个一边的topic,一个topic连向jmsserver1一个topic连向jmsserver2,然后把这个Distribute Topic定位(Target)到这两条topic上即是我们的“集群下的jms topic”。
ü 在jmd module里点[新建]按钮
选择“主题”(不是分布式主题)

每个子部署(sub deployment)需要定位(target)到一个jms server上。
依此分别建立:
l topic1 subtop1->jmsserver1
l topic2 subtop2->jmsserver2
现在,我们的jms module里的内容因该如下图所示:

ü 建立 “分布式主题”(DistributeTopic)
在jms module里点新建按钮,选“分布式主题”

一定要记得把“Destination Type”改成“Weighted”。
这边的分布式Topic的JNDI Name: 就是我们真正的需要用来做集群的JMS的Topic或者是Queue的jndi名,比如说我的产品PEGA Rulz需要在集群环境下用到RamTopicJNDI,这个JNDI Name就必须填产品说明书上的那个Topic或者是Queue的名字哦。
点下一步后将刚才两个新建的topic全部分配给这个distribute topic

点[完成]按钮
这样,一个集群环境下的JMS分布式主题(Topic)就全建完了,最后不要忘了点左边菜单上方的“激活更改”,保存您刚才的所有的更改。

相关文章:
通向架构师的道路之weblogic的集群与配置
一、Weblogic的集群 还记得我们在第五天教程中讲到的关于Tomcat的集群吗? 两个tomcat做node即tomcat1, tomcat2,使用Apache HttpServer做请求派发。 现在看看WebLogic的集群吧,其实也差不多。 区别在于: Tomcat的集群的实现为两个物理上…...
SpringBoot 项目创建与运行
一、Spring Boot 1、什么是Spring Boot?为什么要学 Spring Boot Spring 的诞生是为了简化 Java 程序的开发的,而 Spring Boot 的诞生是为了简化 Spring 程序开发的。 Spring Boot 翻译一下就是 Spring 脚手架 盖房子的这个架子就是脚手架,…...
FOHEART H1数据手套:连接虚拟与现实,塑造智能交互新未来
在全新交互时代背景中,数据手套无疑是一种重要的科技产物。它不仅彻底改变了我们与虚拟世界的互动方式,更为我们提供了一种全新、更为直观的交互形式。 FOHEART H1数据手套结合了虚拟现实、手势识别等高新技术,用先进的传感技术和精准的数据…...
MyBatis学习笔记3
日志 1.日志工厂 如果一个数据库的操作,出现了异常,我们需要排错。日志就是最好的工具。 日志工厂:SLF4JLOG4J(掌握)LOG4J2JDK_LOGGINGCOMMONS_LOGGINGSTDOUT_LOGGING(掌握)NO_LOGGING 2.分页 减少数据…...
ES6学习-Symbol
Symbol 数据类型Symbol,表示独一无二的值。 对象的属性名可有两种类型,一种是原来的字符串,另一种是新增的 Symbol 类型 可以保证不与其他属性名产生冲突。 let s1 Symbol() let s2 Symbol() console.log(s1, s2, s1 s2)//Symbol() Sy…...
【Redis】使用Docker镜像配置集群时的Operation timed out问题
不知道有没有小伙伴跟我一样是使用的Docker镜像进行Redis集群案例模拟的(三台虚拟机确实带不动 ),然后我遇到了一个问题:Could not connect to Redis at 172.17.0.2:6379: Operation timed out 172.17.0.2是我其中一个Redis实例的…...
Java 生产初学常用注解
目录 0. 基础语法逻辑运算符继承抛出异常获取数据方式泛型 1. 接收前端数据(controller)mybatis1. QueryWrapper获取和赋值 2. service 层注解 3. Dao 层(与数据库交互)3.1 mybatis-plus中BaseMapper 4. ELK框架es配置sql参数logs…...
mousedown拖拽功能(vue3+ts)
因为项目有rem适配,使用第三方插件无法处理适配问题,所有只能自己写拖拽功能了 拖拽一般都会想到按下,移动,放开,但是本人亲测,就在div绑定一个按下事件就行了(在事件里面写另外两个事件&#x…...
【论文阅读】基于深度学习的时序异常检测——TransAD
系列文章链接 数据基础:多维时序数据集简介 论文一:2022 Anomaly Transformer:异常分数预测 论文二:2022 TransAD:异常分数预测 论文链接:TransAD.pdf 代码库链接:https://github.com/imperial…...
NLPCC 出版部分相关源码记录
目录 Download Unzip Author Title Affiliation Check number of tex Zip Rename Delete Download import requests from bs4 import BeautifulSoup# 登录网站并获取登录后的 session def login(username, password):login_url https://example.com/loginsession re…...
【Windbg】通过网络调试windows内核
环境 windows版本:win10_x64 1901 windbg版本:1.2306.12001.0 HOST 1、windbg软件设置。 点击菜单文件,然后如下图操作。 2、等待连接。 ************* Waiting for Debugger Extensions Gallery to Initialize **************>>&…...
代码随想录算法训练营之JAVA|第二十四天| 93. 复原 IP 地址
今天是第24天刷leetcode,立个flag,打卡60天。 算法挑战链接 93. 复原 IP 地址https://leetcode.cn/problems/restore-ip-addresses/ 第一想法 题目理解:将一串数字字符串变成正确的ip格式的字符串。 这类题目是切分字符串,ip一…...
网络安全 Day30-运维安全项目-堡垒机部署
运维安全项目-堡垒机部署 1. 运维安全项目-架构概述2. 运维安全项目之堡垒机2.1 堡垒机概述2.2 堡垒机选型2.3 环境准备2.4 部署Teleport堡垒机2.4.1 下载与部署2.4.2 启动2.4.3 浏览器访问teleport2.4.4 进行配置2.4.5 安装teleport客户端 2.5 teleport连接服务器 1. 运维安全…...
电脑文件夹备份命令
电脑文件夹备份 cmd窗口输入shell:startup 将备份.bat文件放到,自启动文件夹下 bat文件内容写以下就可以了 Xcopy "D:\文件\" "F:\文件备份\" /E/H/C/I/y...
RocketMQ Learning(一)
目录 一、RocketMQ 0、RocketMQ的产品发展 1、RocketMQ安装 1.1、windows下的安装 注意事项 1.2、Linux下的安装 1.3、源码的安装 1.4、控制台 2、消息发送方式 2.1、发送同步消息 2.2、发送异步消息 2.3、单向发送 3、消息消费方式 3.1、负载均衡模式࿰…...
libmpv使用滤镜处理视频进行播放
一、前言 作为一个功能强大的多媒体框架,libmpv为开发者提供了广泛的功能和灵活的控制权。滤镜是libmpv的一个重要特性,允许开发者对视频进行各种实时处理和增强,从而满足用户对于个性化、创意化和高质量视频体验的需求。 滤镜是一种在视频渲染过程中应用特定效果的技术。…...
Harbor.cfg 配置文件参数详解
目录 Harbor.cfg 配置文件参数详解 所需参数: hostname: ui_url_protocol: max_job_workers: db_password: customize_crt: ssl_cert: ssl_cert_key: secretkey_path&#…...
模仿火星科技 基于cesium+ 贴地测量+可编辑
当您进入Cesium的编辑贴地测量世界,下面是一个详细的操作过程,帮助您顺利使用这些功能: 1. 创建提示窗: 启动Cesium应用,地图场景将打开,欢迎您进入编辑模式。在屏幕的一角,一个友好的提示窗将…...
模仿火星科技 基于cesium+角度测量+高度测量+可编辑
1. 创建提示窗: 启动Cesium应用,地图场景将打开,欢迎您进入编辑模式。 在屏幕的一角,一个友好的提示窗将呈现,随着您的操作,它会为您提供有用的信息和指导。 2. 绘制面积: 轻轻点击鼠标左键&a…...
Codeforces の 动态规划
Codeforces Round 785 (Div. 2) - C. Palindrome Basis dp(9/100) 题目链接 思路:整数划分基础上加一个判断回文的条件 整数划分思路:背包容量为n,物品有体积为1~n n种,每种无数个,求使背包恰好装满的方案数——完全背…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
