我想知道Tomcat Session Cluster解决方案的任何经验.是生产水平吗?它是否规模?我可以在服务器场中使用它吗?您是否为会话群集推荐任何其他解决方案?(例如:数据库,terracota,jgroups等)
我在现有的Red Hat服务器上运行了一个运行JBoss 4.2.2的网站.我正在设置第二台服务器,以便拥有一个群集对(然后将进行负载平衡).但是,我无法让它们成功集群.
现有服务器启动JBoss:
run.sh -c default -b 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
(我知道'默认'配置不支持开箱即用的集群 - 我正在使用它的修改版本,其中包括集群支持.)当我用相同的命令启动第二个JBoss实例时,它形成了自己的集群没有注意到第一个.两者都使用相同的分区名称和多播地址和端口.
我尝试了McastReceiverTest和McastSenderTest程序来检查机器是否可以通过多播进行通信; 他们可以.
然后我注意到http://docs.jboss.org/jbossas/docs/Clustering_Guide/beta422/html/ch07s07s07.html上的信息,说JGroups不能绑定到所有接口,而是绑定到默认接口; 所以大概是它绑定到127.0.0.1,从而没有得到消息.所以我设置实例来告诉JGroups使用内部IP:
run.sh -c default -b 0.0.0.0 -Djgroups.bind_addr=10.51.1.131
run.sh -c default -b 0.0.0.0 -Djgroups.bind_addr=10.51.1.141
Run Code Online (Sandbox Code Playgroud)
(.131是现有服务器,.141是新服务器).
节点现在互相注意并形成一个集群 - 首先.但是,在尝试部署.ear时,服务器日志会说:
2010-08-07 22:26:39,321 DEBUG [org.jgroups.protocols.FD] sending are-you-alive msg to 10.51.1.131:46294 (own address=10.51.1.141:47629)
2010-08-07 22:26:45,412 WARN [org.jgroups.protocols.FD] I was suspected by 10.51.1.131:48733; ignoring the SUSPECT message and sending back a HEARTBEAT_ACK
2010-08-07 22:26:49,324 DEBUG [org.jgroups.protocols.FD] sending are-you-alive msg to 10.51.1.131:46294 (own address=10.51.1.141:47629)
2010-08-07 22:26:49,324 DEBUG [org.jgroups.protocols.FD] …Run Code Online (Sandbox Code Playgroud) 从最纯粹的角度来看,他们感觉就像是相同的概念.它们都管理一组reosurces /节点,并控制它们对外部组件的访问.
使用池,您可以在池中借用和返回这些资源/节点.
对于群集,您有一个位于资源/节点前面的负载均衡器,您可以通过请求命中负载均衡器.
在这两种情况下,您都无法控制请求/借用映射到哪个资源/节点.
所以我提出了一个问题:"池"模式和负载均衡集群之间的根本区别是什么?
我正在尝试使用批处理脚本启动大量作业步骤.不同的步骤可以是完全不同的程序,并且每个步骤只需要一个CPU.首先,我尝试使用--multi-prog参数来执行此操作srun.不幸的是,当以这种方式使用分配给我的作业的所有CPU时,性能会大幅降低.运行时间几乎增加到序列化值.通过订阅我可以改善这一点.我在网上找不到关于这个问题的任何内容,所以我认为它是我正在使用的集群的配置问题.
所以我试着走另一条路.我实现了以下脚本(通过启动sbatch my_script.slurm):
#!/bin/bash
#SBATCH -o $HOME/slurm/slurm_out/%j.%N.out
#SBATCH --error=$HOME/slurm/slurm_out/%j.%N.err_out
#SBATCH --get-user-env
#SBATCH -J test
#SBATCH -D $HOME/slurm
#SBATCH --export=NONE
#SBATCH --ntasks=48
NR_PROCS=$(($SLURM_NTASKS))
for PROC in $(seq 0 $(($NR_PROCS-1)));
do
#My call looks like this:
#srun --exclusive -n1 bash $PROJECT/call_shells/call_"$PROC".sh &
srun --exclusive -n1 hostname &
pids[${PROC}]=$! #Save PID of this background process
done
for pid in ${pids[*]};
do
wait ${pid} #Wait on all PIDs, this returns 0 if ANY process fails
done
Run Code Online (Sandbox Code Playgroud)
我知道,--exclusive …
我根据其官方文档在这里运行了一个本地集群.我按照步骤操作,它正常工作,直到我设置副本并试图暴露它.我的意思是:
./kubectl expose rc nginx --port=80
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
NAME LABELS SELECTOR IP(S) PORT(S)
nginx run=nginx run=nginx 80/TCP
Run Code Online (Sandbox Code Playgroud)
当我再次尝试时,它说同一个服务正在运行.我该如何找出IP?
我的目的是从同一台计算机/服务器上的R内启动两个或多个h2o集群/实例(不是两个或更多节点!),以使多个用户能够同时与h2o连接.此外,我希望能够单独关闭和重新启动集群,也可以从R内部.
我已经知道我无法简单地从R中控制多个h2o集群,因此我尝试从Windows 10中的命令行启动两个集群:
java -Xmx1g -jar h2o.jar -name testCluster1 -nthreads 1 -port 54321
java -Xmx1g -jar h2o.jar -name testCluster2 -nthreads 1 -port 54323
Run Code Online (Sandbox Code Playgroud)
这对我来说很好:
library(h2o)
h2o.init(startH2O = FALSE, ip = "localhost", port = 54321)
Connection successful!
R is connected to the H2O cluster:
H2O cluster uptime: 4 minutes 8 seconds
H2O cluster version: 3.8.3.2
H2O cluster name: testCluster
H2O cluster total nodes: 1
H2O cluster total memory: 0.87 GB
H2O cluster total cores: 4
H2O cluster allowed cores: …Run Code Online (Sandbox Code Playgroud) 我正在尝试为具有1个主节点和2个工作节点的Kubernetes集群创建模板。我已经安装了所有必备软件,并在主节点上运行了kubeadmn init。但是当我尝试运行作为初始化命令输出的kubeadmn连接时,出现了错误。
[发现]尝试连接到API服务器“ 10.31.2.33:6443” [发现]创建集群信息发现客户端,从“ https://10.31.2.33:6443 ”请求信息[发现]从“ https:/ /10.31.2.33:6443再次针对固定的公钥[发现]验证TLS群集信息签名和内容有效,并且针对固定根的TLS证书进行验证,将使用API服务器“ 10.31.2.33:6443” [发现]与API服务器“ 10.31成功建立连接.2.33:6443“ [kubelet]从kube-system命名空间中的” kubelet-config-1.12“ ConfigMap下载kubelet的配置[kubelet]将kubelet配置写入文件” /var/lib/kubelet/config.yaml“ [ kubelet]将带有标志的kubelet环境文件写入文件“ /var/lib/kubelet/kubeadm-flags.env” [预检]激活kubelet服务[tlsbootstrap]等待kubelet执行TLS Bootstrap ... [patchnode]上传“ CRI套接字信息” / var / run / dockershim。sock”到节点API对象“”,作为注释错误上传crisocket:等待条件超时
我在workdernode2上运行此命令之前已经完成了swapoff -a
我能够运行一次连接,但是在脚本的一部分之后,我先运行了kubeadmn重置,然后执行了init并加入了几次,直到它开始出现。
无法弄清楚我在做什么或在哪里做错了。
我的主要目的是将所有命令以shell脚本的形式(在masternode上)放置,以便可以在群集上运行以创建网络。
如果在Mongo中仅使用两个节点设置副本集,则需要添加仲裁器以确保对新主节点的投票总是占多数.仲裁者本身永远不会成为主人,只是在其他方面进行选举时提供投票.
将客户端(在我的Java中)连接到MongoDB集群时,我们应该在连接配置中指定集群的所有节点:
List addrs = new ArrayList();
addrs.add( new ServerAddress( "localhost" , 27017 ) );
addrs.add( new ServerAddress( "localhost" , 27018 ) );
Mongo mongo = new Mongo(addrs);
Run Code Online (Sandbox Code Playgroud)
仲裁器是否应包含在连接配置中?我猜不会像他们一样:
没有数据的副本,永远不会成为主要节点(甚至是可读的次要节点)
(摘自这里)
...但我只想仔细检查!
所以我正在开发Node.js中的一个项目,我想打开一些额外的线程来更有效地处理处理负载.但是我正在使用带有函数定义的类,当我尝试将这些对象发送到工作线程时,对象中定义的函数会消失,而我只剩下对象中的其他字段.有没有办法向worker发送一个对象并保留这些函数,以便可以在worker中调用它们?
var cluster = require('cluster');
if(cluster.isMaster){
Monster = function(species){
this.attack = function(){
console.log('CHOMP');
};
this.name = species;
};
var vamp = new Monster('vampire'),
worker = cluster.fork();
worker.send({'monster' : vamp});
}
else{
process.on('message', function(msg) {
console.log(msg.monster); //this logs "{ name: 'vampire' }"
msg.monster.attack(); //TypeError: Object #<Object> has no method 'attack'
});
}
Run Code Online (Sandbox Code Playgroud) 我正在研究由node.js + express + socket.io提供支持的1-1聊天室应用程序.我正在关注文章:Socket.IO - 房间和命名空间
在文章中,他们演示了如何启动io.adapter使用模块socket.io-redis:
var io = require('socket.io')(3000);
var redis = require('socket.io-redis');
io.adapter(redis({ host: 'localhost', port: 6379 }));
Run Code Online (Sandbox Code Playgroud)
pubClient和subClient.我应该提供吗?有什么不同?谢谢.