1、Apache web伺服器+weblogic集群,集群中的一台伺服器宕機後的問題
Apache與weblogic只需要庫文件,再配置好連接的超時時間和轉發的伺服器地址,建議你把apache的配置文件發出來看看。
2、Apache+Tomcat負載均衡和集群
apache 為前端,多個tomcat為後台伺服器,apache向tomcat分發請求~!
3、如何搭建apache+tomcat集群
搭建apache+tomcat集群的方法:
1、安裝tomcat+apache+mysql。
2、修改的埠,即修改server.xml中的配置,並修改 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_8084">
3、修改httpd.conf,解注釋Include conf.d/*.conf
4、在conf.d文件夾中加入xxx.conf文件,在該文件中添加如下配置:
#LoadMole proxy_http_mole moles/mod_proxy_http.so
ProxyRequests Off
ProxyPass / balancer://chinatrial-cluster/ stickysession=JSESSIONID nofailover=Off
ProxyPassReverse / http://127.0.0.1:8084/
ProxyPassReverse / http://127.0.0.1:8184/
#ProxyPassReverse / http://127.0.0.1:8380/
<Proxy balancer://chinatrial-cluster>
BalancerMember http://127.0.0.1:8084/ max=800 loadfactor=10 route=tomcat_8084
BalancerMember http://127.0.0.1:8184/ max=800 loadfactor=10 route=tomcat_8184
# BalancerMember http://127.0.0.1:8380/ max=800 loadfactor=10 route=chinatrial_8080
</Proxy>
其中route後面的值是和tomcat的server.xml中的<Engine>中的jvmRoute相對應
5、實現session共享
在資料庫中建session共享表:
CREATE DATABASE `session`
USE `session`;
DROP TABLE IF EXISTS `session`.`tomcat_sessions`;
CREATE TABLE `session`.`tomcat_sessions` (
`session_id` varchar(100) NOT NULL,
`valid_session` char(1) NOT NULL,
`max_inactive` int(11) NOT NULL,
`last_access` bigint(20) NOT NULL,
`app_context` varchar(255) default NULL,
`session_data` mediumblob,
PRIMARY KEY (`session_id`),
KEY `kapp_context` (`app_context`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6、在項目的context.xml中進行Manager的配置:
<Manager className="org.apache.catalina.session.PersistentManager"
debug="99" saveOnRestart="true" maxActiveSessions="-1"
minIdleSwap="30" maxIdleSwap="600" maxIdleBackup="0">
<Store className="org.apache.catalina.session.JDBCStore"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://172.16.100.229/session?user=root&password=nazca123&useUnicode=true&characterEncodeing=utf-8"
sessionTable="tomcat_sessions" sessionIdCol="session_id"
sessionDataCol="session_data" sessionValidCol="valid_session"
sessionMaxInactiveCol="max_inactive"
sessionLastAccessedCol="last_access" sessionAppCol='app_context'
checkInterval="60" debug="0" />
</Manager>
4、Apache apollo 怎麼實現集群部署
Apache Apollo是一個代理伺服器,主要用於消息的請求轉發,下面是其常用的一些配置文件的介紹
一、users.properties:
用來配置可以使用伺服器的用戶以及相應的密碼。
其在文件中的存儲方式是:用戶名=密碼,如:
lily=123456
表示新增一個用戶,用戶名是:lily,密碼是:123456
二、groups.properties:
持有群體的用戶映射,可以通過組而不是單個用戶簡化訪問控制列表。
可以為一個定義的組設置多個用戶,用戶之間用「|」隔開,如:
admins=admin|lily
表示admins組中有admin和lily兩個用戶
三、black-list.txt:
用來存放不允許連接伺服器的IP地址,相當於黑名單類似的東西。
例如:
10.20.9.147
表示上面IP不能夠連接到伺服器。
四、login.config:
是一個伺服器認證的配置文件,為了安全apollo1.6版本提供了認證功能,只有相應的用戶名和正確的密碼才能夠連接
伺服器。
五、伺服器主配置文件apollo.xml:
該配置文件用於控制打開的埠,隊列,安全,虛擬主機設置等。
1、認證:可以使用<authenticationdomain="internal" />來配置是否需要連接認證,如果將其屬性enable設置為false表示不用認證,任何人都可以連接伺服器,默認為true
2、access_rule:可以在broker或者virtual_host中用於定義用戶對伺服器資源的各種行為。如:
<access_rule allow="users" action="connect create destroy send receive consume"/>表示群組users裡面的用戶可以對伺服器資源進行的
5、apache伺服器使用ajp連接tomcat集群
把你worker.tomcat1和2的配置也發出來
6、apache在集群當中起什麼作用
一般用來做負載均衡器,像tomcat做的群集就可以用apache放在群集前面做負載均衡,將應用上來的請求分到群集中的各個伺服器
7、Apache + Tomcat 做集群,和 專門的集群軟體有什麼區別
你的集群配置是指什麼,apache和tomcat配置不需要tomcat做任何事,在apache上配置多個tomcat就好了。
apache啟用tomcat的插件後,可回以保證答相同的請求送到相同的tomcat伺服器。這樣可以保證session的持久性。
有時為了防止apache伺服器的故障,還會使用多個apache伺服器。多個可以用相同的配置,前面的交換機無論轉到哪個apache,最終都會到相同的tomcat。
8、請問有誰安裝過linux的apache的httpd集群的?
環境:
操作系統均為:CentOS 5.1
Apache2.X伺服器一台:IP地址192.168.232.4;安裝路徑/usr/local/apache;
Tomcat6伺服器一台:IP地址192.168.232.5;安裝路徑/usr/local/tomcat;
Tomcat6伺服器一台:IP地址192.168.232.6;安裝路徑/usr/local/tomcat;
配置:
Apache安裝:
#./configure --prefix=/usr/local/apache --enable-moles=so --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite
注釋:激活tomcat集群需要的 enable-proxy,enable-proxy-http,enable-proxy-connect,enable-proxy-ajp和enable-proxy-balancer,其中proxy-ajp和proxy-balancer必須依賴proxy,如果是自定義的編譯除了以上幾個必須的模塊外,mod_status也要編譯進去,切記。enable-proxy-ftp可以不編譯。
#make;make install
製作Apache啟動項:
#cp support/apachectl /etc/rc.d/init.d/httpd
#vi /etc/rc.d/init.d/httpd
添加以下內容:(包括#號)
# Startup script for the Apache Web Server
# chkconfig: 2345 85 15
# description: Apache is a World Wide Web server .It is used to server
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/log/httpd.pid
# config: /usr/local/apache/conf/httpd.conf
增加服務項
#chkconfig --add httpd
#chmod 755 /etc/rc.d/init.d/httpd
#chkconfig --level 345 httpd on
JDK安裝:
#chmod a+x jdk-6u4-linux-i586-rpm.bin
#./jdk-6u4-linux-i586-rpm.bin
JAVA環境變數設置:
#vi /etc/profile
在文件最後添加以下內容:
JAVA_HOME=/usr/java/jdk1.6.0_04
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CLASSPATH PATH CATALINA_HOME
執行如下命令使環境變數生效:
source /etc/profile
測試配置是否成功:
java –version
Tomcat安裝:
#wget [url]http://apache.mirror.phpchina.com/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.tar.gz[/url]
#tar zxvf apache-tomcat-6.0.16.tar.gz
#mv apache-tomcat-6.0.16 /usr/local/tomcat
Tomcat隨機啟動:
#vi /etc/rc.local
添加以下內容:
/usr/local/tomcat/bin/startup.sh
tomcat6配置文件server.xml:
把
<!-- You should set jvmRoute to support load-balancing via AJP ie :
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
-->
<Engine name="Catalina" defaultHost="localhost">
改成
<!-- You should set jvmRoute to support load-balancing via AJP ie :
-->
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcatX">
<!--
<Engine name="Catalina" defaultHost="localhost">
-->
說明:
第一台tomcat就把jvmRoute="tomcat1"
第二台tomcat就把jvmRoute="tomcat2"
把
<!--
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
-->
去掉注釋變為
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
***群集詳細配置***
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session."/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
配置應用的web.xml:
在每個webapps應用中,修改配置文件web.xml文件 添加元素<distributable/>
在web.xml文件中<web-app>元素下增加以下內容:
<!--此應用將與群集伺服器復制Session-->
<distributable/>
具體修改如下:
修改前:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="[url]http://java.sun.com/xml/ns/javaee[/url]"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]"
version="2.5">
</web-app>
修改後:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="[url]http://java.sun.com/xml/ns/javaee[/url]"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee [url]http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd[/url]"
version="2.5">
<!--此應用將與群集伺服器復制Session-->
<distributable/>
</web-app>
配置apache的ajp負載均衡功能:
確保將以下Mole的注釋去掉
LoadMole proxy_mole moles/mod_proxy.so
LoadMole proxy_connect_mole moles/mod_proxy_connect.so
LoadMole proxy_ftp_mole moles/mod_proxy_ftp.so
LoadMole proxy_http_mole moles/mod_proxy_http.so
LoadMole proxy_ajp_mole moles/mod_proxy_ajp.so
LoadMole proxy_balancer_mole moles/mod_proxy_balancer.so
LoadMole status_mole moles/mod_status.so
增加以下內容:
# Proxypass Config
Include conf/extra/httpd-modproxy.conf
建立文件httpd-modproxy.conf輸入內容:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
</Location>
<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
ProxyRequests Off
ProxyPass / balancer://tomcatcluster stickysession=jsessionid nofailover=On
<Proxy balancer://tomcatcluster>
BalancerMember [url]http://192.168.232.5:8080[/url] loadfactor=1
BalancerMember [url]http://192.168.232.6:8080[/url] loadfactor=2
</Proxy>
注釋:
ProxyRequests Off 表示啟用反向代理,必須開啟;
ProxyPass為代理轉發的Url,即將所有訪問/的請求轉發到群集balancer://tomcatcluster,這里為/即將所有訪問/的請求轉發到群集balancer://tomcatcluster的/test目錄;
BalancerMember為群集的成員,即群集伺服器1或2,負載均衡伺服器會根據均衡規則來將請求轉發給BalancerMember;
調試負載均衡集群系統:
訪問apache伺服器的web服務:[url]http://192.168.232.4/balancer-manager[/url]
如果顯示負載均衡有關信息則說明成功了,接著可以訪問[url]http://192.168.232.4/[/url]即訪問到了tomcat的應用
***必須先啟動Tomcat服務再啟動Apache服務!***
參考文檔:
[url]http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html[/url]
[url]http://tomcat.apache.org/tomcat-6.0-doc/balancer-howto.html[/url]
[url]http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy.html[/url]
[url]http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy_balancer.html[/url]
9、如何使用Apache伺服器配置負載均衡集群
Internet 的快速增長,特別是電子商務應用的發展,使Web應用成為目前最重要最廣泛的應用,Web伺服器動態內容越來越流行。目前,網上信息交換量幾乎呈指數增長,需要更高性能的Web伺服器提供更多用戶的Web服務,因此,Web伺服器面臨著訪問量急劇增加的壓力,對其處理能力和響應能力等帶來更高的要求,如果Web 伺服器無法滿足大量Web訪問服務,將無法為用戶提供穩定、良好的網路應用服務。
由於客觀存在的伺服器物理內存、CPU 處理速度和操作系統等方面的影響因素,當大量突發的數據到達時,Web伺服器無法完全及時處理所有的請求,造成應答滯後、請求丟失等,嚴重的導致一些數據包因延時而重發,使傳輸線路和伺服器的負擔再次增加。傳統的方法是提高Web 伺服器的CPU 處理速度和增加內存容量等硬體辦法但無論如何增加Web 伺服器硬體性能,均無法滿足日益增加的對用戶的訪問服務能力。
面對日漸增加的Web 訪問服務要求,必須對Web 伺服器按一定策略進行負載分配。利用負載均衡[1]的技術,按照一定策略將Web 訪問服務分配到幾台伺服器上,負載處理對用戶透明,整體上對外如同一台Web 伺服器為用戶提供Web服務。
2 Web負載均衡結構
2.1 負載均衡
負載是一個抽象的概念,是表示系統繁忙程度,系統在一段時間空閑,該系統負載輕,系統在一段時間空忙,該系統負載重,影響系統負載的各種因數較多如果存在很多的數據包同時通過網路連向一台Web伺服器,也就是網路的速度比網路所連接的設備速度快的情況下,系統負載不斷增加,直到最大。
目前提高Web 伺服器性能,使其具有較強負載能力,主要有兩種處理思想[2]:
1)單機思想
不斷升級伺服器硬體性能,每當負載增加,伺服器隨之升級。這隨之將帶來一些問題,首先,伺服器向高檔升級,花費資金較多;其次,升級頻繁,機器切換造成服務中斷,可能會導致整個服務中斷;最後,每種架構的伺服器升級總有一個極限限制。
2)多機思想
使用多台伺服器提供服務,通過一定機制使它們共同分擔系統負載,對單一的伺服器沒有太高的性能要求,系統負載增加,可以多增加伺服器來分擔。對用戶而言,整個系統彷彿是一台單一的邏輯伺服器,這樣的系統能夠提供較強的可擴展性和較好的吞吐性能。
為了適應當前急劇增長的Web訪問,有別於傳統的單機思想,解決單機思想帶來的一系列問題,本文提出了一種基於權值的策略分配負載。
2.2 負載均衡實現設備[2]
目前實現負載均衡需要兩類的設備:伺服器和分配器。
1)伺服器(Server)
為用戶提供真正的服務,也就是指給用戶提供負載均衡服務的計算機設備,有關該設備的一些性能數據是負載均衡的主要依據之一。
2)分配器(Dispatcher)
由用戶瀏覽器、Web 伺服器組成兩層結構Web 系統[2],如所示,實際是基於客戶端的負載均衡。
負責給用戶服務分配伺服器,分配器的主要功能是根據客戶和伺服器的各種情況(這些情況要能反映伺服器的負載狀況或性能狀況)通過一定的演算法進行調動和分配工作,從而提高由伺服器整體構成的網站的穩定性、響應能力。它主要是集中所有的HTTP 請求,然後分配到多台Web伺服器上處理,來提高系統的處理效率。
2.3 負載均衡系統結構
2.3.1 兩層結構的負載均衡系統
在伺服器上運行一個特定的程序,該程序相當一個客戶端,它定期的收集伺服器相關性能參數,如CPU、I/O、內存等動態信息,根據某種策略,確定提供最佳服務的伺服器,將應用請求轉發給它。如果採集負載信息程序發現伺服器失敗,則找其它伺服器作為服務選擇。這是一種動態負載均衡技術,但是每台伺服器上必須安裝特定的客戶端程序,同時,為保證應用程序的透明性,需要對每個應用進行修改,能夠將訪問請求通過該客戶端程序轉發到其它伺服器上,重定向方式進行,修改每一個應用程序,工作量十分大。
2.3.2 三層結構的負載均衡系統
由用戶瀏覽器、負載均衡和Web伺服器組成三層結構Web系統[2],如所示。實際是基於伺服器的負載均衡。如果將基於客戶端的負載均衡中客戶端的負載均衡部分移植到一個中間平台,形成一個應用伺服器,構成請求、負載均衡和伺服器的三層結構,客戶端應用不需要做特殊修改,透明的中間層將請求均衡的分布到不同的伺服器。
據伺服器直接連到Internet 與否有兩種多Web 伺服器結構:隔離式(Separation) 和非隔離式(Unseparation)。隔離式是伺服器不直接連到Internet,如所示,非隔離式是伺服器直接連到Internet,如所示。 隔離式中只有負載均衡器對外有一個IP 地址,所有的請求由負載均衡器分配到不同的Web Server,所有Web Server 的返回結果也經過負載均衡器傳回給用戶。非隔離式中每一台Web Server 都有一個IP地址,用戶請求經過負載均衡器分配到Web Server,而請求的應答不經過負載均衡器,直接傳回用戶。為了減輕均衡器的負載,本文中採用了三層結構中的隔離方式。
2.4 負載均衡實現的方法
Web 負載均衡常見演算法有[3]:循環調度演算法(Round-Robin Scheling)、加權循環調度演算法(Weighted Round-Robin Scheling) 、最小連接調度演算法(Least-Connection Scheling)、目標地址散列調度演算法(Destination Hashing Scheling)、源地址散列調度演算法(Source Hashing Scheling)。
本文採用基於權值的調度演算法,也就是說權值大的伺服器優先得到調度,本文在實現時是基於靜態的權值,就是在開始的時候給每一個伺服器配置一個默認的權值。當然也可以根據實際運行情況再對每一個伺服器的權值進行調整。但是這需要實時的搜集每一個伺服器的信息,如伺服器的內存實用情況,響應速度等一些信息。
10、apache tomcat集群,求幫助
Nginx 的負載均衡配置看上去很簡單。以下是 Nginx 官方給的一個簡單的負載均衡的例子:
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name
location / {
proxy_pass
}
}
}
參見官方鏈接。而本文則會從工作機制以及指令解釋上對此示例做較為詳細的解釋。以下是作者正文:
關於負載均衡
負載均衡是一種用於在幾個虛擬專用伺服器分配應用程序的傳入流量的機制。被分配到多台機器的處理機制,確保容錯和高度穩定。負載均衡的循環演算法將訪問發送到一組 IP 中。沒有考慮更多比如伺服器響應時間以及訪問者的地理區域等細節,在很容易實現的基本層面上進行循環,分發伺服器負載。
設置
本教程中的步驟要求用戶在你的 VPS 中具有 root 許可權。你可以在用戶指南中查看如何設置。
在設置 Nginx 負載均衡之前,你得先把 Nginx 安裝在你的 VPS 上。你可以使用 apt-get 命令進行快速安裝:
sudo apt-get install nginx
Upstream 模塊
我們需要使用 upstream 模塊來設置一個循環試負載均衡。我們將把這些配置包含到 Nginx 的設置中去。
然後打開你的網站配置(在我的例子中我只演示一下一般默認虛擬主機):
nano /etc/nginx/sites-available/default
我們將會把負載均衡配置加入到這個文件中去。
首先我們需要將 upstream 模塊包含進來,類似於這個:
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com;
}
然後我們在(Nginx 的)其他配置中引用該模塊:
server {
location / {
proxy_pass
}
}
重啟 Nginx:
sudo service nginx restart
一旦你的所有虛擬專用主機全部就緒,你會發現負載均衡器開始將訪問流量平均地分配到那些鏈接主機上。
指令
以上部分介紹了如何將負載平均分配到一些虛擬主機上去。但是,會有一些原因導致這不是最有效的處理數據的方法。我們可以使用一些指令來使我們的應用更加高效。
Weight
一種更精密地分配用戶到各個主機上的方法就是為某些機器指定權重。Nginx 允許我們分配一個數字來說明需要轉發到每個伺服器的流量的比例。
一個具有伺服器權重的負載均衡設置如下:
upstream backend {
server backend1.example.com weight=1;
server backend2.example.com weight=2;
server backend3.example.com weight=4;
}
默認權重為 1。權重為 2 的 backend2.example 會被發送 backend1 的兩倍的流量,而權重為 4 的 backend3 則將會處理 backend2 流量的兩倍相當於 backend1 流量的四倍的流量。
Hash
IP 散列允許主機根據用戶的 IP 地址來響應客戶端,將用戶的每次訪問分發給同一台 VPS(除非該台主機已經 down 掉)。如果一台主機被認為是不活躍的,它將被標記為 down 掉。所有應該路由到這台 down 掉的主機的 IP 將會被轉發到另一台替代主機上去。
下面的配置提供了一個示例:
upstream backend {
ip_hash;
server backend1.
server backend2.
server backend3.
}
Max Fails
根據默認的循環負載設置,Nginx 將會持續地向 VPS 主機發送數據,即使這些主機沒有任何響應。最大失敗次數可以自動通過呈現一段時間內無響應的主機來防止這種情況。最大失敗次數具有兩個要素:max_fails 和 fall_timeout。
max_fails 指示出在這台主機被認為是不活躍狀態之前連接到這台主機時出現的失敗次數。
fail_timeout 指示出這台主機被認為不活動的狀態的持續時間。一旦時間到了,Nginx 會重新嘗試連接該主機。默認超時值為 10 秒鍾。
一個配置示例:
upstream backend {
server backend1.example.com max_fails=3 fail_timeout=15s;
server backend2.example.com weight=2;
server backend3.example.com weight=4;