linux 配置 8280 端口,wildfly四种集群方式的配置

笔者之前对wildfly的集群进行学习,现整理资料如下:

standalone集群搭建

standalone模式下的集群有以下条件:

(1) 必须使用同一配置的profile,且是ha profile;

(2) 必须设定相同的多播地址;

(3) 确保集群中的各节点在同一局域网中。

该模式下的集群集群分为同机多节点集群和多机多节点集群。

同机多节点集群

http://www.tuicool.com/articles/IfuQjq

image2013-9-29%2016%3A16%3A30.png?version=1&modificationDate=1380442626908&api=v2

对于该方式的集群,具体的配置如下所示(以两个节点为例进行说明)。

(1) 环境搭建

将下载的wildfly-8.0.0.Alpha4.rar解压到IP地址为10.22.4.46机器的指定文件夹,同时将文件夹下面的standalone文件夹复制一份,并将它们分别命名为standalone-node1和standalone-node2,如下所示。

image2013-9-24%2020%3A32%3A8.png?version=1&modificationDate=1380027230971&api=v2

(2)部署应用

在这两个文件夹下都部署web.xml文件中包含标签的Web应用,即将对应的.war文件拷贝到两个节点对应的deployments目录下。

(3)启动服务

分别在命令行下启动:

节点1:

./standalone.bat -c standalone-ha.xml -b 10.22.4.46  -u 230.0.0.4

-Djboss.server.base.dir=../standalone-node1 -Djboss.node.name=node1 -Djboss.socket.binding.port-offset=100

节点2:

./standalone.bat -c standalone-ha.xml -b 10.22.4.46 -u 230.0.0.4

-Djboss.server.base.dir=../standalone-node2 -Djboss.node.name=node2  -Djboss.socket.binding.port-offset=200

注:-c 指启动时所使用的服务器配置文件

-b 指绑定的地址

-u 指多播地址

-Djboss.server.base.dir 指server节点所在的位置

-Djboss.node.name 指server节点的名字

-Djboss.socket.binding.port-offset 指server节点运行时的端口偏移值

启动起来,若如下图,则说明该模式的同机多节点集群配置成功:

image2013-9-24%2020%3A40%3A42.png?version=1&modificationDate=1380027231018&api=v2

(4)测试集群

访问web应用,如下所示:

image2013-9-29%2016%3A35%3A5.png?version=1&modificationDate=1380443742627&api=v2

image2013-9-29%2016%3A34%3A25.png?version=1&modificationDate=1380443701877&api=v2

至此,standalone模式的同机多节点集群配置完毕。

多机多节点集群

image2013-9-29%2016%3A17%3A21.png?version=1&modificationDate=1380442678315&api=v2

对于该方式的集群,具体的配置方式如下所示(以两台机器为例予以说明):

(1) 环境搭建

下载wildfly-8.0.0.Alpha4.rar分别在两台机器(IP地址分别为10.22.4.46和192.168.7.128)上进行解压,同时将解压后文件夹下面的standalone文件夹分别命名为standalone-node1及standalone-node2,其中10.22.4.46机器为windows环境,192.168.7.128为linux环境。

(2)部署应用

在这两个文件夹下都部署web.xml文件中包含标签的Web应用,即将对应的.war文件拷贝到两个节点对应的deployments目录下。

(3)启动服务

在两台机器上分别运行下面的命令启动服务器:

在10.22.4.46机器上启动以下命令:

standalone.bat -c standalone-ha.xml -b 10.22.4.46  -u 230.0.0.4

-Djboss.server.base.dir=../standalone-node1 -Djboss.node.name=node1  -Djboss.socket.binding. port-offset=100

在192.168.7.128机器上启动以下命令:

./standalone.sh -c standalone-ha.xml -b 192.168.7.128  -u 230.0.0.4

-Djboss.server.base.dir=../standalone-node2 -Djboss.node.name=node2  -Djboss.socket.binding. port-offset=400

注:-c 指启动时所使用的服务器配置文件

-b 指绑定的地址

-u 指多播地址

-Djboss.server.base.dir 指server节点所在的位置

-Djboss.node.name 指server节点的名字

-Djboss.socket.binding.port-offset 指server节点运行时的端口偏移值

(4)警告信息

启动服务器之后,你可能会遇到如下警告:

17:37:56,367 WARN  [org.jgroups.protocols.UDP] (ServerService Thread Pool -- 55) [JGRP00015]

the receive buffer of socket MulticastSocket was set to 25MB, but the OS only allocated 20.97MB.

This might lead to performance problems. Please set your max receive buffer in the OS correctly (e.g. net.core.rmem_max on Linux)

这个警告是由于linux操作系统设置的receive buffer of scoket 过小,只需要调整os的receive buffer of scoket值大小就可以解决。

解决办法:

->打开linux系统根目录/下的etc下面的配置文件:vi /etc/sysctl.conf

->往sysctl.conf添加如下内容:

net.core.rmem_max = 2097152

net.core.wmem_max = 2097152

其中net.core.wmem_max是发送缓冲区上限,net.core.rmem_max 是接收缓冲区上限。

->执行配置:sysctl -p

(5)测试集群

在两台机器上分别访问,如下所示:

image2013-9-29%2016%3A35%3A5.png?version=1&modificationDate=1380443742627&api=v2

image2013-9-29%2016%3A51%3A52.png?version=1&modificationDate=1380444749127&api=v2

至此,standalone模式的多机多节点集群配置完毕。

domian集群搭建

domain模式下的集群有以下条件:

(1) 有且只能有一个Domain Controller;

(2) Host Controller主机上的Server节点根据Domain Controller主机上的domain.xml配置启动;

(3) 确定集群中的各节点在同一局域网中。

该模式下的集群分为同机多节点集群和多机多节点集群。

同机多节点集群

image2013-9-29%2016%3A18%3A24.png?version=1&modificationDate=1380442741236&api=v2

WildFly 一个很重要的特性是Domain Mode能够从单个的控制点管理多个服务器实例,这样的一组server作为一个整体由Domain Controller进程统一管理,在同机状态下以domain模式启动时,会在系统中同时启动5个进程:

3个server实例;一个Domain Controller(Domain控制器),这个进程用来集中控制所有属于这个“domain”的server;一个轻量的Process Controller,负责管理其他的4个进程并监听它们的生命周期。

对于该方式的集群,具体的配置如下所示(以三个节点为例进行实验)。

(1) 环境搭建

下载wildfly-8.0.0.Alpha4.rar并解压到指定文件夹。

(2)修改配置

->在domain.xml配置文件中提供了两个群组,默认情况下我们使用“main-server-group”群组。其中的profile指定我们要使用的配置文件,socket-binding-group指定我们所依赖的协议,要配置该模式下的集群环境就需要将profile

的值设定为"ha",ref的值设定为" ha-sockets ",如下所示:

>

/>

-> 在设定群组之后,修改host.xml文件中的片段,添加要操作集群的节点,如下所示:

/>

/>

/>

此处注意server-one、server-two都属于main-server-group,它们的端口偏移值分别为100、200、300,即它们对应的端口号分别为8180、8280、8380。

(3)启动服务

启动服务器,控制台显示如下:

image2013-9-29%2016%3A22%3A8.png?version=1&modificationDate=1380442965143&api=v2

此刻启动服务器之后不会显示出集群成功的信息,通过在控制台部署web.xml文件中包含标签的Web应用可以查看配置结果。

(4)部署应用

部署war应用步骤:

->添加应用:

image2013-9-24%2020%3A50%3A47.png?version=1&modificationDate=1380027231080&api=v2

->分配群组:

image2013-9-24%2020%3A51%3A13.png?version=1&modificationDate=1380027231096&api=v2

(5)访问war应用

8180端口节点:

image2013-9-29%2016%3A35%3A5.png?version=1&modificationDate=1380443742627&api=v2

8280端口节点:

image2013-9-29%2016%3A34%3A25.png?version=1&modificationDate=1380443701877&api=v2

8380端口节点:

image2013-9-29%2016%3A35%3A47.png?version=1&modificationDate=1380443784518&api=v2

都能进行访问,至此,说明domain模式的同机多节点集群配置成功。

小结:要实现该模式下的集群需要注意以下三点:

1)  各节点的命名不能相同

2)  各节点必须处在同一个群组内

3)  各节点必须有不同的端口偏移值

多机多节点集群

image2013-9-29%2016%3A23%3A37.png?version=1&modificationDate=1380443054377&api=v2

对于该方式的集群,具体的配置如下所示(以两台机器为例进行实验)。

(1) 环境搭建

下载wildfly-8.0.0.Alpha4.rar并分别在两台机器(IP地址分别为10.22.4.46和192.168.7.128)上解压到指定文件夹,同时设定IP地址为10.22.4.46的机器为主控制器(master),另一机器为从机(salve)。

(2) 配置主控制器

1)设定一个群组。打开domain.xml文件,找到其中的标签,如下所示(这里我们选择main-server-group作为默认的群组),profile的值设定为“ha”,ref的值设定为"ha-sockets",如下所示:

>

/>

2) 在指定的群组中增加server节点。打开host.xml文件,找到标签,为不同的节点指定相同的群组,即group值设定为"main-sever-group",如下所示:

/>

/>

/>

此处注意server-one、server-two、server-three的端口偏移值分别为100、200、300,即它们对应的端口号分别为8180、8280、8380。

3) 配置接口信息

默认状况下,host.xml文件中端口配置为127.0.0.1,如下所示:

为了能让从机找到主控制器,需将127.0.0.1改成主控制器实际的IP,如下所示:

(3) 配置从机

1)角色配置

在集群中从机不再充当主控制器的角色,因此可以将自己的domain.xml文件可以删掉或重命名,只需在host.xml文件修改配置即可。将host.xml文件中的host名修改为“slave”,并将主控制器修改为之前设定的主控制器的IP地址,如下所示:

xmlns="urn:jboss:domain:2.0">

port="9999" security-realm="ManagementRealm"/>

2) 增加服务器节点

在host.xml文件中增加节点信息,同时群组名必须与主控制器规定的相同,如下所示:

group= "main-server-group"

>

/>

group= "main-server-group"

auto-start="true">

/>

group= "main-server-group"

auto-start="true">

/>

此处注意server-four、server-five、server-six的端口偏移值分别为400、500、600,即他们对应的端口号为8480、8580、8680。

3) 修改接口配置

与主控制器相同,我们也需要将host.xml文件中的接口地址修改为从机的实际IP地址,如下所示:

(4) 安全配置

1)添加用户

为主控制器增加管理员用户admin及slave,同时为从机添加用户slave,具体的添加用户操作可以参考本文中添加管理用户一节(笔者在添加slave用户时使用的密码是sn@12345)

2)修改主控制器配置

成功添加管理员用户之后,在主控制器和从机的host.xml文件中分别添加如下配置(其中c25AMTIzNDU是sn@12345的base64码值,用户可以根据实际设定的密码值进行适当的修改,相对应的base64码值在添加用户的界面上会给出)。

3)警告信息

至此,整个domian的多机多节点集群配置结束,windows下直接运行bin下面的domain.bat命令,linux下到bin目录下执行./domain.sh即可,但是启动服务器之后,你可能会遇到如下警告:

警告1:

17:37:56,367 WARN  [org.jgroups.protocols.UDP] (ServerService Thread Pool -- 55) [JGRP00015]

the receive buffer of socket MulticastSocket was set to 25MB, but the OS only allocated 20.97MB.

This might lead to performance problems. Please set your max receive buffer in the OS correctly (e.g. net.core.rmem_max on Linux)

这个警告是由于操作系统os 设置的receive buffer of scoket 过小,只需要调整os的receive buffer of scoket值大小就可以解决。

解决办法:

->打开linux系统根目录/下的etc下面的配置文件:vi /etc/sysctl.conf

->往sysctl.conf添加如下内容:

net.core.rmem_max = 2097152

net.core.wmem_max = 2097152

其中net.core.wmem_max是发送缓冲区上限,net.core.rmem_max 是接收缓冲区上限。

->执行配置:sysctl -p

警告2:

ARJUNA016009: Caught:: java.lang.ClassCastException: org.infinispan.transaction. TransactionTable cannot be cast to org.infinispan.transaction.xa.XaTransaction

at org.jboss.as.clustering.infinispan.subsystem.CacheService$InfinispanXAResourceRecovery.getXAResources(CacheService. java:112

)

at com.arjuna.ats.internal.jbossatx.jta.XAResourceRecoveryHelperWrapper.getXAResources(XAResourceRecoveryHelperWrapper.java:51) [narayana-jts-integration-5.0.0.M3. jar:5.0.0.M3

(revision: ${buildNumber})]

at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecoveryForRecoveryHelpers(XARecoveryModule. java:503

) [narayana-jts-jacorb-5.0.0.M3. jar:5.0.0.M3

(revision: ${buildNumber})]

at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkFirstPass(XARecoveryModule. java:159

) [narayana-jts-jacorb-5.0.0.M3. jar:5.0.0.M3

(revision: ${buildNumber})]

at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery. java:743

) [narayana-jts-jacorb-5.0.0.M3. jar:5.0.0.M3

(revision: ${buildNumber})]

at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery. java:371

) [narayana-jts-jacorb-5.0.0.M3. jar:5.0.0.M3

(revision: ${buildNumber})]

解决方法:

打开主控制器的domain.xml文件找到如下配置,增加红色字段配置即可,如下所示:

(5)测试集群

1)启动两机服务器(先主后从)

主机上出现如下图所示,则表示集群部署成功:

image2013-9-29%2016%3A31%3A57.png?version=1&modificationDate=1380443554065&api=v2

2)访问主机上wildfly web控制台

看到如下结果则表示集群部署成功:

image2013-9-29%2016%3A45%3A58.png?version=1&modificationDate=1380444395565&api=v2

3)部署war应用

点击“Add”添加项目,再点击“Assign",选择main-server-group,如下所示:

image2013-9-24%2020%3A50%3A47.png?version=1&modificationDate=1380027231080&api=v2

image2013-9-24%2020%3A51%3A13.png?version=1&modificationDate=1380027231096&api=v2

4)访问应用

待应用部署到master和slave上的各个节点上去之后,通过浏览器来访问之前部署的应用,因为笔者在主从机各个节点之间设置的偏移量间隔是100,所以访问的端口也是从第一个server节点(server-one)8180(原8080+100)一直到8680都是可以访问的(注意主控制器和从机的IP不一致,访问的URL中的IP也要按照对应的)测试结果如下:

主控制器8180端口:

image2013-9-29%2016%3A35%3A5.png?version=1&modificationDate=1380443742627&api=v2

主控制器8280端口:

image2013-9-29%2016%3A34%3A25.png?version=1&modificationDate=1380443701877&api=v2

主控制器8380端口:

image2013-9-29%2016%3A35%3A47.png?version=1&modificationDate=1380443784518&api=v2

注意:在没有设置linux系统的相关配置的情况下,从机上的应用是不能访问的,提示192.168.7.128连接失败。

具体问题如下:

在主控制器的控制台中部署好项目并且主从服务器都启动的情况下,主控制器可以访问部署的项目,但是却无法访问从机上的应用,但是同时主机和从机之间可以ping的通,网上查阅资料后,解决方法是关闭虚拟机中的防火墙服务。linux在命令行模式下启动和停止防火墙的命令如下:

service iptables stop --停止

service iptables start --启动

根据资料介绍,笔者将linux的防火墙关闭,如下所示:

image2013-9-29%2016%3A37%3A0.png?version=1&modificationDate=1380443857596&api=v2

将可以访问,如下所示:

image2013-9-29%2016%3A51%3A52.png?version=1&modificationDate=1380444749127&api=v2

但是在实际应用中,关闭防火墙降低的服务器的安全性,不能关闭防火墙,因此修改防火墙设置即可,具体设置步骤如下:

->打开/etc/sysconfig/iptables 文件;

->如果要开放8680端口,在里面添加一条 (其余类似)

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8680 -j ACCEPT

->最终开放了8480、8580、8680端口,如下所示:

image2013-9-29%2016%3A41%3A58.png?version=1&modificationDate=1380444155127&api=v2

->开启防火墙,如下所示:

image2013-9-29%2016%3A43%3A19.png?version=1&modificationDate=1380444236065&api=v2

最终能正常访问,如下:

从机的8480端口:

image2013-9-29%2016%3A51%3A52.png?version=1&modificationDate=1380444749127&api=v2

从机的8580端口:

image2013-9-29%2016%3A52%3A35.png?version=1&modificationDate=1380444791971&api=v2

同样访问192.168.7.128:8680也是可以的。

至此,wildfly的两种模式的四种集群方式的配置已经完成,希望能给读者带来帮助,若发现不当,欢迎您批评指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值