日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > 框架設(shè)計(jì) > [置頂] JBOSS EAP實(shí)戰(zhàn)(2)-集群、NGINX集成、隊(duì)列與安全

[置頂] JBOSS EAP實(shí)戰(zhàn)(2)-集群、NGINX集成、隊(duì)列與安全

來源:程序員人生   發(fā)布時間:2016-08-15 08:40:04 閱讀次數(shù):6239次

JBOSS HTTP的Thread Group概念


JBOSS是1個企業(yè)級的J2EE APP Container,因此它和任何1種成熟的企業(yè)級中間件1樣具有Thread Group的概念。
所謂Thread Group就是1個HTTP隊(duì)列機(jī)制,利用Thread Group在JBOSS內(nèi)可以設(shè)置如“阻斷”,“升級”,“降級”等機(jī)制。
來看1個這樣的實(shí)際利用場景:
當(dāng)你的JBOSS連著1堆核心利用時,此時突然你的HTTP的并發(fā)要求在某1個點(diǎn)激增,如果把這些HTTP要求都放進(jìn)后臺,那末將意味著你所有的核心模塊將會遭到嚴(yán)重的影響,因此1般來講對這樣的場景我們會采取以下的幾種措施:

  1. 阻斷,除去定額的要求,其它要求進(jìn)不進(jìn)來,即拋棄策略
  2. 隊(duì)列,除去定額的要求,其它要求排隊(duì),排隊(duì)排到前端超時,出錯
  3. 自動擴(kuò)大,即給定1個定額的最大要求數(shù),當(dāng)超過這個要求數(shù)后Container會根據(jù)本身服務(wù)器的能力自動擴(kuò)大

JBOSS的Thread Group的種類


在JBOSS里使用的正是Thread Group來支持這幾種機(jī)制的,我們來看1下這幾種機(jī)制在JBOSS中的實(shí)現(xiàn):

  • unbounded-queue-thread-pool
  • bounded-queue-thread-pool
  • blocking-bounded-queue-thread-pool
  • queueless-thread-pool
  • blocking-queueless-thread-pool
  • scheduled-thread-pool

做過開發(fā)的相信1眼就看出來,其實(shí)這6種JBOSS提供的HTTP Thread Group正是JAVA多線程內(nèi)ConcurrentThreadPool的線程種類。


本文對6種線程不做逐一探討,他們的區(qū)分從字面上相信讀者可以馬上理解,在配置時參數(shù)略有不同,對每一個不同種類的Thread Group讀者可以自行通過JBOSS官方文檔(以下URL)獲得它們的區(qū)分:
https://developer.jboss.org/wiki/ThreadPoolConfiguration


本文只作JBOSS EAP6中如何進(jìn)行Thread Group的配置。


動手配置1個Thread Group



打開$JBOSS_HOME/standalone/configuration/standalone.xml文件


找到<subsystem xmlns=”urn:jboss:domain:threads:1.1“>這句,把它改成:


<subsystem xmlns="urn:jboss:domain:threads:1.1"> <thread-factory name="http-connector-factory" group-name="jboss1-thread-pool" thread-name-pattern="HTTP-%t" priority="9"/> <unbounded-queue-thread-pool name="jboss1-thread-pool"> <max-threads count="250"/> <keepalive-time time="20" unit="seconds"/> <thread-factory name="http-connector-factory"/> </unbounded-queue-thread-pool> </subsystem>


找到<subsystem xmlns=”urn:jboss:domain:web:2.2“ default-virtual-server=”default-host“ native=”false“>這句,再往下找到:
<connector name=“http” protocol=“HTTP/1.1”這1句,把這1句改成:


<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" executor="jboss1-thread-pool" max-connections="250"/>

重啟JBOSS便可



用Security Domain保密認(rèn)證信息




為何要加密? 我們來看下面這個例子:


<datasource jndi-name="java:/comp/env/jdbc/jbpm" pool-name="DroolsDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://192.168.0.101:3306/guvnor</connection-url> <driver>mysql</driver> <pool> 。。。 </pool> <user-name>drools</user-name> <password>password_1</password> </datasource>


雖然,你可以說這個配置文件是位于企業(yè)內(nèi)網(wǎng)的,內(nèi)網(wǎng)就安全了?萬1有有心人。。。由于安全的主旨是“寧可信其有(小偷),不可信其無”。


因此1般來講在生產(chǎn)環(huán)境我們是需要對這個配置文件中的敏感信息進(jìn)行加密的。


JBOSS對配置文件中的加密有兩種方式:


1.  Picketbox(推薦全部用這類方式)
2.  Vault(不合適于DOMAIN模式、很繁瑣)



用Security Domain保密認(rèn)證信息-Picketbox方式




確保你使用的是JBOSS EAP6.2⑹.4或更高版本,在Linux中啟動1個shell,敲入以下命令行:


export JBOSS_HOME=/opt/jboss export CLASSPATH=${JBOSS_HOME}/modules/system/layers/base/org/picketbox/main/picketbox⑷.1.1.Final-redhat⑴.jar:${JBOSS_HOME}/modules/system/layers/base/org/jboss/logging/main/jboss-logging⑶.1.4.GA-redhat⑵.jar:$CLASSPATH java org.picketbox.datasource.security.SecureIdentityLoginModule EncryptedPassword


此處的”EncryptedPassword”就是我們需要加密的“明文”,接下去它會輸出如:


Encoded password: ⑹e9c0a6a3bb1e4c0


這邊的“Encoded password:”后的就是被加密后的密文


然后,我們需要建立1個Security-Domain,我們在<profile name=“full”>段下找到


 <subsystem xmlns="urn:jboss:domain:security:1.2">
                <security-domains>


由于我們用的是domain模式啟動的jboss,因此,你不能找到1個”security-domains”就去改,由于domain模式是根據(jù)profile name來辨別配置段的,如果你的security-domain加在default下,而啟動使用的是full模式那末你的配置是無效的。

我們在
<subsystem xmlns="urn:jboss:domain:security:1.2">
                <security-domains>


段下加入

<security-domain name="encrypted-ds" cache-type="default"> <authentication> <login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required"> <module-option name="username" value="drools"/> <module-option name="password" value="⑹e9c0a6a3bb1e4c0"/> </login-module> </authentication> </security-domain>



有了security-domain我們就能夠在我們的配置中利用它了,如我們在datasource配置處使用security-domain


<datasource jndi-name="java:/comp/env/jdbc/jbpm" pool-name="DroolsDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://192.168.0.101:3306/guvnor> <driver>mysql</driver> <pool> 。。。 </pool> <security> <security-domain>encrypted-ds</security-domain> </security> </datasource>


用Security Domain保密認(rèn)證信息-vault模式


使用vault模式要求我們先需要在JBOSS中建立自己的VAULT,我們使用以下命令:


$JBOSS_HOME/bin/vault.sh

出現(xiàn)以下字符界面:


JBoss Vault
JBOSS_HOME: /Volumes/Disk01/appservers/center/jboss-eap⑹.1
JAVA: java
============================================================
**********************************
****  JBoss Vault  ***************
**********************************
Please enter a Digit::   
0: Start Interactive Session  1: Remove Interactive Session  2: Exit


按選0


Enter directory to store encrypted files:[輸入] ../vault/


Enter Keystore URL:[輸入] ../vault/ymkeyes.keystore
Enter Keystore password: [輸入]aaaaaa
Enter Keystore password again: [輸入]aaaaaa
Enter 8 character salt: [輸入]12345678
Enter iteration count as a number (Eg: 44): [輸入]44
Enter Keystore Alias: [輸入] ymkeyes


Initializing Vault
2013⑺⑴8 11:08:02 org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
Vault Configuration in AS7 config file:
********************************************
</extensions>
 <vault>
        <vault-option name="KEYSTORE_URL" value="../vault/ymkeyes.keystore"/>
        <vault-option name="KEYSTORE_PASSWORD" value="MASK⑴TWrTaqRsEC"/>
        <vault-option name="KEYSTORE_ALIAS" value="ymkeyes"/>
        <vault-option name="SALT" value="11136231"/>
        <vault-option name="ITERATION_COUNT" value="8"/>
        <vault-option name="ENC_FILE_DIR" value="../vault/"/>
    </vault>
...
********************************************
Vault is initialized and ready for use
Handshake with Vault complete
Please enter a Digit::   
0: Store a secured attribute  1: Check whether a secured attribute exists  2: Exit


按選0
把上面從<vault>開始到</valult>這1塊復(fù)制進(jìn)standalone.xml文件中,放于</extensions>段后
對屏幕中輸出的以下信息,注意紅色加粗字體即是你用vault加密后的加密串
Secured attribute value has been stored in vault. 
Please make note of the following:
********************************************
Vault Block:ds_MegaeyesDS
Attribute Name:password
Shared Key:MjY5Nzc0OWItMmI2OS00NWMyLTlkZTYtOWY0MWE5YzAyOGMwTElORV9CUkVBS21lZ2FleWVz
Configuration should be done as follows:
VAULT::ds_oracleds::password::MjY5Nzc0OWItMmI2OS00NWMyLTlkZTYtOWY0MWE5YzAyOGMwTElORV9CUkVBS21lZ2FleWVz
********************************************

有了VAULT,你就能夠在你的配置文件中如我們在<datasource>中,以下配置:


<datasources> <datasource jndi-name="java:/comp/env/jdbc/jbpm" pool-name="DroolsDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://192.168.0.101:3306/guvnor</connection-url> <driver>mysql</driver> <pool> <min-pool-size>10</min-pool-size> <max-pool-size>25</max-pool-size> <flush-strategy>IdleConnections</flush-strategy> </pool> <security> <user-name>drools</user-name> <password>${VAULT::ds_oracleds::password::1}</password> </security> </datasource>

注意加密串還要前后加上${加密串}才可生效


可以看出,使用這類方式的加密,太繁瑣,而且它不支持DOMAIN模式即不可以使用在集群環(huán)境中。


JBOSS集群



啊。。。集群,又是集群。


JBOSS集群是從3.X開始那差不多是在14年前就開始支持集群了。


目前的JBOSS EAP6.2⑹.4或是JBOSS8.0(WILDFLY)對集群的支持已到了登峰造極的地步了,而且最主要的是JBOSS的集群具有以下特點(diǎn):


  • 任意橫向、縱向折分
  • JBOSS VM-JBOSS自己可以虛擬出1堆的JBOSS來
  • 集中管控,即Controller,利用這1點(diǎn)它可以做到1點(diǎn)布署多點(diǎn)利用,這類集中統(tǒng)1布署的功能只有在IBM的WAS中才具有,即Domain Management的功能



JBOSS集群-橫向縱向折分


試想1下這類架構(gòu):





如果在這個架構(gòu)中任何1個SLAVE產(chǎn)生了宕機(jī),那末對全部集群來講用戶的訪問是照舊可以用的。


但是,我們試想1下,如果JBOSS MASTER都宕機(jī)了呢?




因而,我們有了以下的架構(gòu):




這樣,在任意1點(diǎn)產(chǎn)生不可預(yù)感的宕機(jī)時,我們的全部集群的服務(wù)還是延續(xù)可用的只要不是所有的節(jié)點(diǎn)都宕掉。


所謂橫向、縱向




JBOSS可以縱橫交錯,任意劃分出無數(shù)臺“JBOSS虛擬機(jī)”從而構(gòu)成1個“網(wǎng)狀”結(jié)構(gòu)


由于JBOSS采取了類似于IBM WAS的域控理念,因此它可以做到“集中統(tǒng)1布署”,即只要在主控端發(fā)布1個程序,該主控端下屬所有的MASTER、SLAVER全部會自動布署。而這個自動化“分發(fā)”的進(jìn)程,是不需要人為干涉的。它意味著我們的運(yùn)維開發(fā)不需要1個個手工COPY war包到每一個J2EE APP SERVER上去了。






JBOSS虛擬機(jī)



JBOSS也引入了時下最時興的“VM”技術(shù),即你可以啟動1個JBOSS Instance,然后在這個JBOSS的Instance中為每個不同的JBOSS子Container指定它們的參數(shù)、乃至JVM核心參數(shù)





JBOSS集群搭建



說了這么多,我們就來搭建1個JBOSS集群吧!


先來計(jì)劃我們的JBOSS集群,在我們的例子中我們不使用JBOSS虛擬機(jī),我們使用2個真實(shí)的JBOSS Instance即啟動兩個不同JVM進(jìn)程的JBOSS來實(shí)現(xiàn)MASTER-SLAVER的模式。


我們先來計(jì)劃我們的JBOSS集群。




我們建立兩個JBOSS實(shí)例,使其分別名為:


JBOSS_MASTER1
JBOSS_SLAVE1




JBOSS集群1定用的是DOMAIN模式來去運(yùn)行的,即$JBOSS_HOME/bin/domain.sh來運(yùn)行的,因此我們記得把兩個JBOSS的$JBOSS_HOME/domain/configuration/host.xml文件中的下面這段:

<management-interfaces> <native-interface security-realm="ManagementRealm"> <socket interface="management" port="${jboss.management.native.port:9999}"/> </native-interface> <http-interface security-realm="ManagementRealm"> <socket interface="management" port="${jboss.management.http.port:9990}"/> </http-interface> </management-interfaces>

以上配置中的9999與9990確保兩個JBOSS Instance中的這兩個端口1定不能1樣,如我的slave中的此處配置為:


<management-interfaces> <native-interface security-realm="ManagementRealm"> <socket interface="management" port="${jboss.management.native.port:19999}"/> </native-interface> </management-interfaces>

你也能夠把slave中的host.xml文件COPY1份然后使用host-slave.xml改名成host.xml文件


MASTER和SLAVE的host.xml文件的區(qū)分還有1點(diǎn),來看SLAVE的host.xml文件下面這1處:


<domain-controller> <remote host="${jboss.domain.master.address:192.168.0.101}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/> </domain-controller>


從這邊可以看到slave中有1個<domain-controller>段,在這個段內(nèi)所指向的 ManagementRealm的IP與端口必須是它的master即Master主機(jī)中host.xml文件中的ManagementReal所設(shè)的IP與PORT。


注意host.xml文件中的頭部信息


<?xml version='1.0' encoding='UTF⑻'?> <host name="slave1" xmlns="urn:jboss:domain:1.7">

不要忘了把<host后加入1個”name”,這邊的name很重要!!!


JBOSS集群有1個很重要的步驟,即:


加入每一個MASTER的SLAVE,是以JBOSS中的用戶名和密碼來“認(rèn)證”的,即每一個SLAVE要加入Master,Master必須允許。


因此,此處的host name=“”就是SLAVE 用戶名,那末密碼呢?


請?jiān)贘BOSS MASTER所在的目錄中運(yùn)行add-user.sh命令,然后建1個用戶名,這個用戶名必須=host后的name,另外,在建完用戶后把該用戶的密碼(顯示為MD5值)記下,然后在slave所在的host.xml文件中把密碼設(shè)進(jìn)去,依照以下例子:





由于JBOSS是以GROUP的概念來管理它的集群的,以下圖:




所以我們需要把我們的8080與8081這兩臺主機(jī)加入到1個GROUP中去。


在slave的host.xml文件中增加入下內(nèi)容


<servers> <server name="slave1" group="kie-server-group" auto-start="true"> <socket-bindings socket-binding-group="full-sockets" port-offset="1"/> </server> <servers>



這邊幾個地方需要注意的:


  • group,如果不同的host屬于同1個group,那末它們將同屬于1個master管理
  • full-sockets:JBOSS中有ha, full, full-ha 3種profile,我們在此使用的是full模式,相對應(yīng)的socket為full-sockets
  • port-offset 為端口偏移量,在剛才的步驟中我們對ManagementRealm中的兩個端口是手設(shè)的,可是還有其它1堆的端口,多達(dá)10幾個,我們總不至于1個個去手改吧,因此這邊的port-offset為“除去managementreal”中的端口號其它所有端口號(固然不包括1些利用自己在內(nèi)部開設(shè)的1些端口)+1,比如說:master的web端口為8080,那末slave1的web端口就會變成8081, slave2設(shè)成port-offset=2那末slave2的web端口就為8082了,是否是很方便?

相應(yīng)的,在master機(jī)上的host.xml文件中也需要有這么1句:


<servers> <server name="master1" group="kie-server-group" auto-start="true"> </server> </servers>



配置domain.xml文件,你可以把slave上的domain.xml備份1下,然后把domain-slave.xml文件改名成domain.xml文件來作修改(如果你不是1個熟手的話),事實(shí)上JBOSS對domain.xml和host.xml文件分別提供了master, slave模式供你使用,如果你改壞了,你也能夠通過JBOSS對修改過保存過的配置文件自動進(jìn)行備份和版本控制這個功能來回退。




其實(shí)domain.xml文件中主要的是對JBOSS“資源”的配置,如:
datasource,system properties, jvm。


由于JBOSS使用的是Domain Controller模式,因此對JBOSS中1切資源的使用只需要在Controller上配置便可。


你可以把JBOSS的controller相像成1個“獅子座”,它的占有欲極強(qiáng)。


由于在本例中我們使用的是1臺MASTER,1臺SLAVE,因此這臺MASTER又同時是CONTROLLER,固然在機(jī)器富足的情況下你也能夠斟酌CONTROLLER掛1臺MASTER,然后MASTER下再掛1臺或是多臺SLAVE。


此處還需要注意的是domain.xml文件很長,它里面有這樣的開頭:


<profiles> <profile name="default">

而這樣的profile會有3處重復(fù),所不同的是profile name=“full”, profile name=“full ha”,因此你的<server group>設(shè)的是甚么profile,你的需要設(shè)置的資源也需要在domain.xml文件中放在哪一個profile段。 此例中我們使用的是full,因此我們的DataSource, System Properties等就都放在了這個段里。  


我們之前在MASTER和SLAVE的host.xml文件中分別把2臺主機(jī)都加入到了1個叫kie-server-group的段,因此我們需要在domain.xml文件中加入1個server group的聲明段,以下示例:


<server-groups> <server-group name="kie-server-group" profile="full"> <socket-binding-group ref="full-sockets"/> </server-group> </server-groups>


此處需要注意的是,如果使用domain模式啟動,各group中的jboss實(shí)例雖然都各自使用domain.sh命令啟動,并且你在domain.sh所調(diào)用的環(huán)境配置命令domain.conf中設(shè)置了如: -Xms6144m -Xmx6144m 這樣的JVM參數(shù),但其實(shí)你還需要在domain中劃分出的不同的jboss實(shí)例中再次作1下聲明,為何?


由于JBOSS啟動實(shí)例用的是domain.sh+domain.conf中JVM所設(shè)的JVM參數(shù),而JBOSS真正運(yùn)行起來后用于RUN相干的布署的利用用的卻是JBOSS內(nèi)的“Domain JVM”,而你在domain.conf中設(shè)置的JVM參數(shù)只是給JBOSS啟動時所使用的,其實(shí)不是這個JBOSS實(shí)例如:運(yùn)行某個布署的.war包時所使用的真實(shí)的JVM,而1旦該JBOSS實(shí)例加入了某個group時,當(dāng)這個實(shí)例開始布署或是運(yùn)行某個.war包或是.ear包時,如果你沒有設(shè)過domain jvm參數(shù),那末它的實(shí)際可用JVM堆默許只有256MB。


這就是為何外面很多人說,JBOSS集群1旦啟動,發(fā)覺本來在單節(jié)點(diǎn)運(yùn)行的好好的web利用在集群環(huán)境下卻會報out of memory或是gc overhead limit。


讓我們在MASTER和SLAVE上的host.xml文件中為我們的2個JBOSS實(shí)例配置虛擬JVM參數(shù)吧


Master上的host.xml文件中的設(shè)置


<server name="master1" group="kie-server-group" auto-start="true"> <jvm name="master1" debug-enabled="false"> <heap size="6144m" max-size="6144m"/> <permgen size="512m" max-size="768m"/> <jvm-options> <option value="-XX:-UseGCOverheadLimit"/> </jvm-options> </jvm> <socket-bindings socket-binding-group="full-sockets" port-offset="0"/> </server>

Slave上的host.xml文件中的設(shè)置


<server name="slave1" group="kie-server-group" auto-start="true"> <socket-bindings socket-binding-group="full-sockets" port-offset="1"/> <jvm name="slave1" debug-enabled="false"> <heap size="6144m" max-size="6144m"/> <permgen size="512m" max-size="768m"/> <jvm-options> <option value="-XX:-UseGCOverheadLimit"/> </jvm-options> </jvm> </server>


全部配完后分別使用:


/opt/jboss_master1/bin/domain.sh


/opt/jboss_slave1/bin/domain.sh


命令把master和slave啟動起來吧。


啟動后我們打開主控真?zhèn)€WEB管理界面http://192.168.0.101:9990,可以看到以下網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。



其實(shí),嘿嘿!


剛才那1段繁瑣枯燥的配置,你也完全可以把MASTER先啟動起來后通過http://192.168.0.101:9990界面進(jìn)入后可視化進(jìn)行操作,看到這兒有人可能會想“打我”了,可是。。。如果你拿圖形界面配過無數(shù)次后也能像我1樣手配XML文件了,而且手配XML文件。。。速度更快!




在JBOSS集群中布署利用


布署1個利用,在這邊我也想用xml文件來說解。。。可是又怕有人“打我”,但是在集群環(huán)境下的布署分為:


.war包


.war格式的目錄(exploded war)


而JBOSS的自帶的http://192.168.0.101:9990只支持圖形化布署.war包。。。不支持布署.war格式的目錄,因此我們還是用xml文件配置的方式來講吧(你們終究反正是要把我打1頓的,?)


先來講1下集群環(huán)境下的.war包的布署吧,我們以petstore.war來舉例,我們把master-slave結(jié)構(gòu)搭完后,直接依照以下步驟操作




JBOSS會把這個變成1個兩進(jìn)制文件并以GUID的方式重命名該文件,并把它置于MASTER的/domain/servers/master_name/data目錄。


我們注意這個$MASTER_JBOSS_HOME/domain/server目錄,這下面還會有1個slave1的目錄,這是JBSOS自動生成的,因此MASTER所掛集群下所有節(jié)點(diǎn)的日志、啟動信息、布署都必須在此目錄內(nèi)尋覓,而不是再手工跑到每一個JBOSS節(jié)點(diǎn)中去尋覓了。這也正是JBOSS的domain controller集中管控思想的體現(xiàn)。


在此步驟,你只是把需要deploy的文件上傳到了主控域上且并未開始布署,為了完成真實(shí)的布署,你需要點(diǎn)擊【Assign】按鈕


1旦你點(diǎn)擊了Assign按鈕后,你會得到1個彈出界面,在此界面內(nèi)會提示你要把這個.war Assign給哪個group,此時,1旦當(dāng)你把1個war Assign給了某個group并點(diǎn)擊了【肯定】后,JBOSS會作以下的事情:


  • 從Controller開始先布署MASTER
  • 再布署該Controller下所掛的SLAVER、SLAVER中的MASTER,S`SLAVE

如果你的Controller下掛的節(jié)點(diǎn)是1顆很復(fù)雜的“樹”,它也會1鍵完成所有節(jié)點(diǎn)的deploy。


布署完后,我們來查看1下我們的集群利用:



看,2個地址都可以訪問了。


使用NGINX來對JBOSS集群作“分發(fā)”


網(wǎng)上很多教程使用的都是Apache的mod_模塊,相當(dāng)?shù)姆爆崱?br />

與Nginx相比Apache弱到爆了,我們來看1下Nginx是怎樣完成對jboss集群的分發(fā)的吧。


http { rewrite_log on; default_type application/octet-stream; charset utf⑻; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; client_header_buffer_size 4k; large_client_header_buffers 4 32k; server_names_hash_bucket_size 128; upstream j2eeserver { server 192.168.0.101:8080; server 192.168.0.101:8081; } include mime.types; log_format main '$remote_addr $remote_user [$time_local] "$request" $http_host ' '$status $upstream_status $body_bytes_sent "$http_referer"' '"$http_user_agent" $ssl_protocol $ssl_cipher $upstream_addr' '$request_time $upstream_response_time'; access_log logs/access.log main; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; server { listen 80; server_name 192.168.0.101 localhost; charset utf⑻; #access_log logs/host.access.log main; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://j2eeserver; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

我們來實(shí)驗(yàn)1下吧。


cd /usr/local/nginx
./nginx –c /usr/local/nginx.conf


啟動后訪問:http://192.168.0.101/petstore (此時不用加端口號了)




然后我們在后臺,隨便殺掉master或是slave進(jìn)程




我們來殺master進(jìn)程吧




重新訪問http://192.168.0.101/petstore, look,還是跑得剛剛的!我們的集群成功了。




這邊我們也不用作甚么消息分離了,就讓NGINX全部轉(zhuǎn)發(fā)JBOSS的要求便可,由于你公司也不差這點(diǎn)內(nèi)存、CPU,做甚么消息分離。。。non sense!



JBOSS集群中如何布署exploded war



所謂exploded war即“打碎了的war”,意思就是1個文件目錄,它是以.war結(jié)尾的并且要符合war的目錄結(jié)構(gòu)標(biāo)準(zhǔn)。


要布署這樣的文件目錄情勢其實(shí)很簡單,你只要打開主控域上的domain.xml文件,在其中加入這樣的語句,.war目錄可以隨意置放在何處, wherever u want:


<deployments> <deployment name="petstore.war" runtime-name="petstore.war"> <fs-exploded path="/opt/jboss_master1/domain/data/petstore.war"/> </deployment> </deployments>

然后回到http://ip:9990 這個圖形化界面中就會看到在主控域上有1個.war已被Deploy,但還沒有被Assign,此時你只要做相應(yīng)的Assign操作便可完成全部JBOSS集群的布署了。


附上Nginx的安裝


Nginx需要依賴下面3個包


1. gzip 模塊需要 zlib 庫 ( 下載: http://www.zlib.net/  )  zlib⑴.2.8.tar.gz
2. rewrite 模塊需要 pcre 庫 ( 下載: http://www.pcre.org/  )  pcre⑻.21.tar.gz
3. ssl 功能需要 openssl 庫 ( 下載: http://www.openssl.org/  )  openssl⑴.0.1.tar.gz


注意:如果用源碼安裝的話,后面nginx安裝的時候需要指定 --with-pcre 對應(yīng)的緊縮包路徑


openssl:

tar -xzvf openssl⑴.0.1.tar.gz cd openssl⑴.0.1 ./config(注意) && make && make install


    
pcre:
tar -xzvf pcre⑻.21.tar.gz cd pcre⑻.21 ./configure && make && make install


    
zlib:
tar -xzvf zlib⑴.2.8.tar.gz cd zlib⑴.2.8 ./configure && make && make install


通過 http://nginx.org/download/ 下載nginx最新版,本例中使用的是nginx⑴.8.1.tar.gz,下載解壓落后入nginx源碼目錄使用下面命令進(jìn)行1鍵式編譯安裝:

./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=../pcre⑻.38 --with-zlib=../zlib⑴.2.8 --with-openssl=../openssl⑴.0.2g --with-http_stub_status_module --user=nginx --group=nginx


全部成功后,在/usr/local目錄下就會生成1個nginx目錄,nginx就安裝在此目錄內(nèi)了。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 午夜精品一区 | 国产一区二区三区久久悠悠色av | 国产日韩欧美日韩 | 99视频一区二区 | 亚洲美女视频 | 成人精品一区二区三区中文字幕 | 亚洲欧美日韩国产综合 | 久9re热视频这里只有精品 | 精品一区二区三区四区五区 | 国产午夜精品福利 | 欧美日韩电影一区二区 | 精品久久久久久久久久久院品网 | 国产小视频在线播放 | 成人免费大片黄在线播放 | 成人精品视频99在线观看免费 | 国产综合区 | 一区二区三区在线视频播放 | 国产黄色在线播放 | 一区久久久 | 久久精品国产色蜜蜜麻豆 | 九九亚洲 | 精品久久久网站 | 国产日韩一区二区三区 | 一区二区三区国产视频 | 欧美成人在线免费 | 日本国产精品视频 | 亚洲一区二区三区四区免费观看 | 亚洲久久| 久久人视频| 亚洲免费网站 | 欧美午夜精品一区二区蜜桃 | 中文字幕视频在线观看 | 在线视频91 | 亚洲福利 | 黄色网zhan| 日韩精品视频观看 | 美女国产精品视频 | 91久久久久久久久久 | 久久久国产精品一区二区三区 | 日韩免费一二三区 | 日本特级片 |