yum install httpd # 完成後 須要在 /etc/httpd/conf/httpd.conf 中添加一句 # ServerName localhost
若是想要使用 apachectl status 命令 須要 elinks yum install elinks -y 和 mod_status, 通常 mode_status 是默認加載的,可是還要一點配置. git
在 httpd.conf 中添加以下配置 github
ExtendedStatus on <IfModule mod_status.c> # Allow server status reports generated by mod_status, # with the URL of http://servername/server-status # Change the ".example.com" to match your domain to enable. # <Location /server-status> SetHandler server-status Order deny,allow Allow from all </Location> </IfModule>
若是配置後還有 /server/status 錯誤, 參考這裏 apache
# 使用的時候最新版本爲 1.2.40 # 能夠查看其餘版本 http://www.apache.org/dist/tomcat/tomcat-connectors/jk/ # 這裏有點扯淡的是 1.2.40的腳本都是 dos 格式的, 須要先 dos2unix # 因此我直接換了個版本 使用的 1.2.39 的, 代碼格沒問題 wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.39-src.zip unzip tomcat-connectors*.zip cd tomcat-connectors* cd native yum install -y httpd-devel ./configure --with-apxs=/usr/sbin/apxs make make install
新建 /etc/httpd/conf/mod_jk.conf, 寫入以下內容 tomcat
# 加載mod_jk Module # /usr/lib64/httpd/modules/mod_jk.so LoadModule jk_module modules/mod_jk.so # 指定workers.properties文件路徑 JkWorkersFile conf/workers.properties # 指定那些請求交給tomcat處理 # "controller"爲在workers.propertise裏指定的負載分配控制器名 JkMount /* controller
新建 /etc/httpd/conf/workers.properties, 寫入以下內容 session
#server worker.list = controller #========cloud03======== #ajp13端口號,在tomcat下server.xml配置,默認 8009 worker.cloud03.port=8009 #tomcat的主機地址,如不爲本機,請填寫ip地址 worker.cloud03.host=cloud03 #協議類型 worker.cloud03.type=ajp13 # server的加權比重,值越高,分得的請求越多。 # lbfactor是負載平衡因數(Load Balance Factor) worker.cloud03.lbfactor=1 #========cloud02======== worker.cloud02.port=8009 worker.cloud02.host=cloud02 worker.cloud02.type=ajp13 worker.cloud02.lbfactor=1 #========cloud04======== worker.cloud04.port=8009 worker.cloud04.host=cloud04 worker.cloud04.type=ajp13 worker.cloud04.lbfactor=1 #========controller,負載均衡控制器======== #負載均衡控制器類型,lbfactor是負載平衡因數(Load Balance Factor) worker.controller.type=lb #指定分擔請求的tomcat列表 worker.controller.balanced_workers=cloud03,cloud02,cloud04 # 粘性session(默認是打開的) # 當該屬性值=true(或1)時,表明session是粘性的, # 即同一session在集羣中的同一個節點上處理, # session不跨越節點。在集羣環境中,通常將該值設置爲false worker.controller.sticky_session=false # 設置用於負載均衡的server的session能否共享 worker.controller.sticky_session_force=1
修改/etc/httpd/conf/httpd.conf,在最後添加: 負載均衡
Include conf/mod_jk.conf
安裝 tomcat 只須要下載解壓就能夠了, 沒什麼特殊的.如下的配置都是在 server.xml 中進行的. 該配置文件在 tomcat 安裝目錄中 conf 目錄下. dom
搜索 Engine 節點, 添加 jvmRoute 屬性爲以前 worker.properties 配置的名字.由於我在配置 worker.propertis 時都是使用的主機名,因此 cloud02 修改後就是 ssh
<Engine name="Catalina" defaultHost="localhost" jvmRoute="cloud02">
cloud03, cloud04 也這樣修改. jvm
而後在 </Engine> 前, 加入以下內容. tcp
<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.ClusterSessionListener"/> </Cluster>
# 在 cloud01 中操做 ssh cloud01 # 啓動 apache 須要 root 權限 sudo apachectl restart # 啓動全部節點 # 注意: 下面 tomcat 的路徑須要根據我的的安裝來修改 for i in $(echo 02 03 04); do ssh "cloud$i" /opt/tomcat/bin/startup.sh; done; # 查看運行狀態, 確保有 BootStrap 進程 for i in $(echo 02 03 04); do echo ====$i====;ssh "cloud$i" jps; done;
集羣配置完成後能夠經過刷新 http://cloud01/manager/status 這個頁面, 觀察 IP address 來判斷是否成功.
有的 tomcat 配置提到 <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>, 該類在 tomcat8 中已經移除了.參看