[分享]集群LVS+GFS+ISCSI+TOMCAT
LVS是中国人发起的项目,真是意外呀!大家可以看<a target=_blank href=http://www.douzhe.com/linuxtips/1665.html>http://www.douzhe.com/linuxtips/1665.html</a> <br>我是从最初的HA(高可用性)开始的,别人的例子是用VMWARE,可以做试验但不能实际应用,我又 <br>没有光纤卡的Share Storage,于是就选用ISCSI,成功后又发现ISCSI+EXT3不能用于LVS,倒最后发 <br>
现GFS可用,我最终成功配成可实际应用的LVS,前后断断续续花了四个月,走了很多弯路。我花了 <br>
三天时间写下这篇文章,希望对大家有用。 <br>这里要感谢linuxfans.org、linuxsir.com、chinaunix.com以及其它很多网站,很多资料都是从 <br>
他们的论坛上找到的。 <br>
参考文档及下载点 <br>
a.<a target=_blank href=http://www.gyrate.org/misc/gfs.txt>http://www.gyrate.org/misc/gfs.txt</a> <br>
b.<a target=_blank href=http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/cluster-suite/index.html>http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/cluster-suite/index.html</a> <br><a target=_blank href=http://www.redhat.com/docs/manuals/csgfs/admin-guide/index.html>http://www.redhat.com/docs/manuals/csgfs/admin-guide/index.html</a> <br>
c.<a target=_blank href=ftp://ftp.redhat.com/pub/redhat/linux/updates/enterprise/3ES/en/RHGFS/SRPMS>ftp://ftp.redhat.com/pub/redhat/linux/updates/enterprise/3ES/en/RHGFS/SRPMS</a> <br>
d.<a target=_blank href=http://distro.ibiblio.org/pub/linux/distributions/caoslinux/centos/3.1/contrib/i386/RPMS/>http://distro.ibiblio.org/pub/linux/distributions/caoslinux/centos/3.1/contrib/i386/RPMS/</a> <br><br>LVS结构图: <br>eth0=10.3.1.101 <br>eth0:1=10.3.1.254 <br>Load Balance <br>Router <br>eth1=192.168.1.71 <br>eth1:1=192.168.1.1 <br>| | <br>| | <br>Real1 Real2 <br>eth0=192.168.1.68 eth0=192.168.1.67 <br>(eth0 gateway=192.168.1.1) <br>eth1=192.168.0.1---eth1=192.168.0.2 <br>(双机互联线) <br>| <br>| <br>GFS <br>ISCSI <br>Share storage <br>eth0=192.168.1.124 <br><br>
1.Setup ISCSI Server <br>Server: PIII 1.4,512M, Dell 1650,Redhat 9,IP=192.168.1.124 <br>从<a target=_blank href=http://iscsitarget.sourceforge.net/>http://iscsitarget.sourceforge.net/</a>下载ISCSI TARGET的Source code <br>(<a target=_blank href=http://sourceforge.net/project/showfiles.php?group_id=108475&package_id=117141)>http://sourceforge.net/project/showfiles.php?group_id=108475&package_id=117141)</a> <br>我选了iscsitarget-0.3.8.tar.gz,要求kernel 2.4.29 <br>从kernel.org下载kernel 2.4.29,解开编译重启后编译安装iscsitarget-0.3.8: <br>#make KERNELSRC=/usr/src/linux-2.4.29 <br>#make KERNELSRC=/usr/src/linux-2.4.29 install <br>#cp ietd.conf /etc <br>#vi /etc/ietd.conf <br># Example iscsi target configuration <br># <br># Everything until the first target definition belongs <br># to the global configuration. <br># Right now this is only the user configuration used <br># during discovery sessions: <br># Users, who can access this target <br># (no users means anyone can access the target) <br>User iscsiuser 1234567890abc <br>Target iqn.2005-04.com.my:storage.disk2.sys1.iraw1 <br>User iscsiuser 1234567890abc <br>Lun 0 /dev/sda5 fileio <br>Alias iraw1 <br>Target iqn.2005-04.com.my:storage.disk2.sys1.iraw2 <br>User iscsiuser 1234567890abc <br>Lun 1 /dev/sda6 fileio <br>Alias iraw2 <br>Target iqn.2005-04.com.my:storage.disk2.sys2.idisk <br>User iscsiuser 1234567890abc <br>Lun 2 /dev/sda3 fileio <br>Alias idisk <br>Target iqn.2005-04.com.my:storage.disk2.sys2.icca <br>User iscsiuser 1234567890abc <br>Lun 3 /dev/sda7 fileio <br>Alias icca <br>说明:password 长度必须不小于12个字符, Alias是别名, 不知为何这个别名在 <br> Client端显示不出来. <br>分区:我只有一个SCSI盘,所以: <br>/dev/sda3: Share storage,容量越大越好 <br>/dev/sda5: raw1, 建Cluster要的rawdevice, 我给了900M <br>/dev/sda6: raw2, 建Cluster要的rawdevice, 我给了900M <br>/dev/sda7: cca, 建GFS要的,我给了64M <br>(/dev/sda4是Extended分区,在其中建了sda5,6,7) <br>#Reboot,用service iscsi-target start启ISCSI server(我觉得比建议的好,可以 <br>用service iscsi-target status看状态) <br>
2.Setup ISCSI Client(on two real server) <br>Server: PIII 1.4,512M, Dell 1650,Redhat AS3U4(用AS3U5更好),2.4.21-27.EL <br>#vi /etc/iscsi.conf <br>DiscoveryAddress=192.168.1.124 <br>OutgoingUsername=iscsiuser <br>OutgoingPassword=1234567890abc <br>Username=iscsiuser <br>Password=1234567890abc <br>LoginTimeout=15 <br>IncomingUsername=iscsiuser <br>IncomingPassword=1234567890abc <br>SendAsyncTest=yes <br>#service iscsi restart <br>#iscsi-ls -l <br>..., 精简如下: <br>/dev/sdb:iraw2 <br>/dev/sdc:iraw1 <br>/dev/sdd:idisk <br>/dev/sde:icca <br>注意: 在real server中ISCSI device的顺序很重要,两个real server中一定要一样,如不一样 <br> 就改ISCSI Server中的设置,多试几次 <br>
3.Install Redhat Cluster suite <br>先下载Cluster Suite的ISO, AS3的我是从ChinaUnix.net找到的下载点, 安装clumanager和 <br>redhat-config-cluster。没有Cluster Suite的ISO也没关系,从 <br><a target=_blank href=ftp://ftp.redhat.com/pub/redhat/linux/updates/enterprise/3ES/en/RHCS/SRPMS/>ftp://ftp.redhat.com/pub/redhat/linux/updates/enterprise/3ES/en/RHCS/SRPMS/</a>下载 <br>clumanager-1.2.xx.src.rpm,redhat-config-cluster-1.0.x.src.rpm,编译后安装,应该更好: <br>#rpm -Uvh clumanager-1.2.26.1-1.src.rpm <br>#rpmbuild -bs /usr/src/redhat/SPECS/clumanager.spec <br>#rpmbuild --rebuild --target i686 /usr/src/redhat/SRPMS/clumanager-1.2.26.1-1.src.rpm <br>还有redhat-config-cluster-1.0.x.src.rpm,也装好 <br>
4.Setup Cluster as HA module <br>详细步骤我就不写了,网上有很多文章,我也是看了别人的文章学会的,不过人家是用VMWARE, <br>而我是用真的机子+ISCSI,raw device就是/dev/sdb,/dev/sdc, 然后就 <br>mount /dev/sdd /u01, mkfs.ext3 /u01 ...... <br>设好后会发现ISCSI有问题:同时只能有一个Client联接写盘,如果 <br>两个Client同时联ISCSI的Share Storge,一个Client写,另一个Client是看不到的,而且此时文 <br>件系统已经破坏了,Client重联ISCSI时会发现文件是坏的,用fsck也修复不了。 <br>
ISCSI真的是鸡肋吗? <br>
NO!从GOOGLE上我终于查到ISCSI只有用Cluster File System才能真正用于Share Storage! <br>而Redhat买下的GFS就是一个! <br>
5.Setup GFS on ISCSI <br>GFS只有Fedora Core4才自带了,而GFS又一定要用到Cluster Suite产生的/etc/cluster.xml文件, <br>我没见FC4有Cluster Suite,真不知Redhat给FC4带GFS干嘛,馋人吗? <br>好,闲话少说,下载:c处的GFS-6.0.2.20-2.src.rpm, 按a处的gfs.txt编译安装,不过关于 <br>cluster.ccs,fence.ccs,nodes.ccs的设置没说,看b的文档,我总算弄出来了,都存在 <br>/root/cluster下,存在别的地方也行,不过我不知道有没有错,我没有光纤卡,文档又没讲ISCSI <br>的例子,不过GFS能启动的。 <br>#cat cluster.ccs <br>cluster { <br>name = "Cluster_1" <br>lock_gulm { <br>servers = ["cluster1", "cluster2"] <br>heartbeat_rate = 0.9 <br>allowed_misses = 10 <br>} <br>} <br>注:name就是Cluster Suite设置的Cluster name, servers就是Cluster member的Hostname,别忘 <br>了加进/etc/hosts;allowed_misses我开始设为1,结果跑二天GFS就会死掉,改为10就没死过了。 <br>#cat fence.ccs <br>fence_devices{ <br>admin { <br>agent = "fence_manual" <br>} <br>} <br>#cat nodes.ccs <br>nodes { <br>cluster1 { <br>ip_interfaces { <br>hsi0 = "192.168.0.1" <br>} <br>fence { <br>human { <br>admin { <br>ipaddr = "192.168.0.1" <br>} <br>} <br>} <br>} <br>cluster2 { <br>ip_interfaces { <br>hsi0 = "192.168.0.2" <br>} <br>fence { <br>human { <br>admin { <br>ipaddr = "192.168.0.2" <br>} <br>} <br>} <br>} <br>} <br>注:ip就是心跳线的ip <br>这三个文件建在/root/cluster下,先建立Cluster Configuration System: <br>a.#vi /etc/gfs/pool0.cfg <br>poolname pool0 <br>minor 1 subpools 1 <br>subpool 0 8 1 gfs_data <br>pooldevice 0 0 /dev/sde1 <br>b.#pool_assemble -a pool0 <br>c.#ccs_tool create /root/cluster /dev/pool/pool0 <br>d.#vi /etc/sysconfig/gfs <br>CCS_ARCHIVE="/dev/pool/pool0" <br><br>再Creating a Pool Volume,就是我们要的共享磁盘啦, <br>a.#vi /etc/gfs/pool1.cfg <br>poolname pool1 <br>minor 2 subpools 1 <br>subpool 0 128 1 gfs_data <br>pooldevice 0 0 /dev/sdd1 <br>b.#pool_assemble -a pool1 <br>c.#gfs_mkfs -p lock_gulm -t Cluster_1:gfs1 -j 8 /dev/pool/pool1 <br>d.#mount -t gfs -o noatime /dev/pool/pool1 /u01 <br>下面是个GFS的启动脚本,注意real1和real2必须同时启动lock_gulmd进程,第一台lock_gulmd <br>会成为Server并等Client的lock_gulmd,几十秒后没有响应会fail,GFS启动失败。Redhat建议 <br>GFS盘不要写进/etc/fstab。 <br>#cat gfstart.sh <br>#!/bin/sh <br>depmod -a <br>modprobe pool <br>modprobe lock_gulm <br>modprobe gfs <br>sleep 5 <br>service iscsi start <br>sleep 20 <br>service rawdevices restart <br>pool_assemble -a pool0 <br>pool_assemble -a pool1 <br>service ccsd start <br>service lock_gulmd start <br>mount -t gfs /dev/pool/pool1 /s02 -o noatime <br>service gfs status <br>
6. Setup Linux LVS <br>LVS是章文嵩博士发起和领导的优秀的集群解决方案,许多商业的集群产品,比如RedHat的 <br>Piranha,Turbolinux公司的Turbo Cluster等,都是基于LVS的核心代码的。 <br>我的系统是Redhat AS3U4,就用Piranha了。 <br>从rhel-3-u5-rhcs-i386.iso安装piranha-0.7.10-2.i386.rpm,ipvsadm-1.21-9.ipvs108.i386.rpm <br>(<a target=_blank href=http://distro.ibiblio.org/pub/linux/distributions/caoslinux/centos/3.1/contrib/i386/RPMS/)>http://distro.ibiblio.org/pub/linux/distributions/caoslinux/centos/3.1/contrib/i386/RPMS/)</a> <br>装完后service httpd start & service piranha-gui start,就可以从<a target=_blank href=http://xx.xx.xx.xx:3636>http://xx.xx.xx.xx:3636</a>管理或 <br>设置了,当然了,手工改/etc/sysconfig/ha/lvs.cf也一样。 <br>#cat /etc/sysconfig/ha/lvs.cf <br>serial_no = 80 <br>primary = 10.3.1.101 <br>service = lvs <br>rsh_command = ssh <br>backup_active = 0 <br>backup = 0.0.0.0 <br>heartbeat = 1 <br>heartbeat_port = 1050 <br>keepalive = 6 <br>deadtime = 18 <br>network = nat <br>nat_router = 192.168.1.1 eth1:1 <br>nat_nmask = 255.255.255.0 <br>reservation_conflict_action = preempt <br>debug_level = NONE <br>virtual lvs1 { <br>active = 1 <br>address = 10.3.1.254 eth0:1 <br>vip_nmask = 255.255.255.0 <br>fwmark = 100 <br>port = 80 <br>persistent = 60 <br>pmask = 255.255.255.255 <br>send = "GET / HTTP/1.0\r\n\r\n" <br>expect = "HTTP" <br>load_monitor = ruptime <br>scheduler = wlc <br>protocol = tcp <br>timeout = 6 <br>reentry = 15 <br>quiesce_server = 1 <br>server Real1 { <br>address = 192.168.1.68 <br>active = 1 <br>weight = 1 <br>} <br>server Real2 { <br>address = 192.168.1.67 <br>active = 1 <br>weight = 1 <br>} <br>} <br>virtual lvs2 { <br>active = 1 <br>address = 10.3.1.254 eth0:1 <br>vip_nmask = 255.255.255.0 <br>port = 21 <br>send = "\n" <br>use_regex = 0 <br>load_monitor = ruptime <br>scheduler = wlc <br>protocol = tcp <br>timeout = 6 <br>reentry = 15 <br>quiesce_server = 0 <br>server ftp1 { <br>address = 192.168.1.68 <br>active = 1 <br>weight = 1 <br>} <br>server ftp2 { <br>address = 192.168.1.67 <br>active = 1 <br>weight = 1 <br>} <br>} <br>设置完后service pulse start, 别忘了把相关的client加进/etc/hosts <br>#iptables -t mangle -A PREROUTING -p tcp -d 10.3.1.254/32 --dport 80 -j MARK --set-mark 100 <br>#iptables -t mangle -A PREROUTING -p tcp -d 10.3.1.254/32 --dport 443 -j MARK --set-mark 100 <br>#iptables -A POSTROUTING -t nat -p tcp -s 10.3.1.0/24 --sport 20 -j MASQUERADE <br>运行以上三行命令并存入/etc/rc.d/rc.local,用ipvsadm看状态: <br>#ipvsadm <br>IP Virtual Server version 1.0.8 (size=65536) <br>Prot LocalAddress:Port Scheduler Flags <br>-> RemoteAddress:Port Forward Weight ActiveConn InActConn <br>TCP 10.3.1.254:ftp wlc <br>-> cluster2:ftp Masq 1 0 0 <br>-> cluster1:ftp Masq 1 0 0 <br>FWM 100 wlc persistent 60 <br>-> cluster1:0 Masq 1 0 0 <br>-> cluster2:0 Masq 1 0 0 <br>注意:a.Firewall Mark可以不要,我反正是加了,文档说有https的话加上,值我选了100, <br>b.Virtual IP别加进/etc/hosts,我上过当,80端口时有时无的, <br>c.eth0:1,eth1:1是piranha产生的,别自己手工设置,我干过这画蛇添足的事,网上有 <br>些帖子没说清,最后是看Redhat的文档才弄清楚的。 <br>d.The LVS router can monitor the load on the various real servers by using <br>either rup or ruptime. If you select rup from the drop-down menu, each real <br>server must run the rstatd service. If you select ruptime, each real server <br>must run the rwhod service.Redhat的原话,就是如选rup的监控模式real server上 <br>都要运行rstatd进程,如选ruptime就要运行rwhod进程。 <br>e.Real Server同Router相联的网卡的Gateway必须是Router的那块网卡的VIP,举本例: <br>Router的eth1同两个real server的eth0相联,如VIP eth1:1=192.168.1.1,则real <br>server 的eth0的Gateway=192.168.1.1 <br>
re:7.Setup TOMCAT5.59+J...
7.Setup TOMCAT5.59+JDK1.5(用Redhat自带的Apache) <br>a.#tar xzvf jakarta-tomcat-5.5.9.tar.gz <br>#mv jakarta-tomcat-5.5.9 /usr/local <br>#ln -s /usr/local/jakarta-tomcat-5.5.9 /usr/local/tomcat <br>b.#jdk-1_5_0_04-linux-i586.bin <br>#mv jdk1.5.0_4 /usr/java <br>#ln -s /usr/java/jdk1.5.0_4 /usr/java/jdk <br>c.#vi /etc/profile.d/tomcat.sh <br>export CATALINA_HOME=/usr/local/tomcat <br>export TOMCAT_HOME=/usr/local/tomcat <br>d.#vi /etc/profile.d/jdk.sh <br>if ! echo ${PATH} | grep "/usr/java/jdk/bin" ; then <br>JAVA_HOME=/usr/java/jdk <br>export JAVA_HOME <br>export PATH=/usr/java/jdk/bin:${PATH} <br>export CLASSPATH=$JAVA_HOME/lib <br>fi <br>e.#chmod 755 /etc/profile.d/*.sh <br>f.重新用root登录,让tomcat.sh和jdk.sh起作用, <br>#tar xzvf jakarta-tomcat-connectors-jk2-src-current.tar.gz <br>#cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/ <br>#./configure --with-apxs2=/usr/sbin/apxs --with-jni --with-apr-lib=/usr/lib <br>#make <br>#libtool --finish /usr/lib/httpd/modules <br>#cp ../build/jk2/apache2/mod_jk2.so ../build/jk2/apache2/libjkjni.so /usr/lib/httpd/modules/ <br>g.#vi /usr/local/tomcat/bin/catalina.sh <br>在# Only set CATALINA_HOME if not already set后加上以下两行: <br>serverRoot=/etc/httpd <br>export serverRoot <br>h.#vi /usr/local/tomcat/conf/jk2.properties <br>serverRoot=/etc/httpd <br>apr.NativeSo=/usr/lib/httpd/modules/libjkjni.so <br>apr.jniModeSo=/usr/lib/httpd/modules/mod_jk2.so <br>i.#vi /usr/local/tomcat/conf/server.xml, <br>在</Host>前加上以下几行,建了两个VirtualPath:myjsp和local,一个指向share storage, <br>一个指向real server本地 <br><Context path="/myjsp" docBase="/u01/www/myjsp" debug="0"/> <br><Logger className="org.apache.catalina.logger.FileLogger" directory="/var/log/httpd" <br>prefix="cluster.log." suffix=".txt" timestamp="true" /> <br><Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log/httpd" <br>prefix="cluster_access.log." suffix=".txt" pattern="common" resolveHosts="false" /> <br><Context path="/local" docBase="/var/www/html" debug="1" reloadable="true" crossContext="true" /> <br>j.#vi /etc/httpd/conf/workers2.properties <br># <br>#level=DEBUG <br> <br>file=/var/log/httpd/shm.file <br>size=1048576 <br> <br>tomcatId=localhost:8009 <br>keepalive=1 <br>info=Ajp13 forwarding over socket <br> <br>channel=channel.socket:localhost:8009 <br> <br>info=Status worker, displays runtime informations <br> <br>worker=ajp13:localhost:8009 <br>context=/ <br>k.#vi /etc/httpd/conf/httpd.conf <br>改:DocumentRoot "/u01/www" <br>加: <br>在LoadModule最后加: <br>LoadModule jk2_module modules/mod_jk2.so <br>JkSet config.file /etc/httpd/conf/workers2.properties <br>在#<VirtualHost *>之前加: <br><Directory ~ "/WEB-INF/"> <br>Order allow,deny <br>Deny from all <br></Directory> <br>l:#mkdir /u01/ftproot <br>#mkdir /u01/www <br>#mkdir /u01/www/myjsp <br>m:在每个real server上生成index.jsp <br>#vi /var/www/html/index.jsp <br><%@ page import="java.util.*,java.sql.*,java.text.*" contentType="text/html" <br>%> <br><% <br>out.println("test page on real server 1"); <br>%> <br>在real server2上就是"test page on real server 2" <br>n:下载jdbc Driver <br><a target=_blank href=http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html>http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html</a> <br>可惜只有for JDK1.4的,在两台real server上分别 <br>#cp -R /usr/local/tomcat/webapps/webdav/WEB-INF /u01/www/myjsp <br>#cp ojdbc14.jar ojdbc14_g.jar ocrs12.zip /u01/www/myjsp/WEB-INF/lib <br>o:假设我有一台OracleServer,ip=10.3.1.211,sid=MYID,username=my,password=1234,并有Oracle <br>的例子employees的read权限,或干脆把这个table拷过来,我是Oracle9i中的 <br>#vi /u01/www/myjsp/testoracle.jsp <br><%@ page contentType="text/html" %> <br><%@ page import="java.sql.*"%> <br><?xml version="1.0"?> <br><html"> <br><head> <br><meta http-equiv="Content-Type" content="text/html" /> <br><title>Test ORACLE Employees</title> <br></head> <br><br><body> <br><% <br>String OracleDBDriver="oracle.jdbc.driver.OracleDriver"; <br>String DBUrl="jdbc:oracle:thin:@10.3.1.211:1521:MYID"; <br>String UserID="my"; <br>String UserPWD="1234"; <br><br>Connection conn=null; <br>Statement stmt=null; <br>ResultSet rs=null; <br>try <br>{ <br>Class.forName(OracleDBDriver); <br>} <br>catch(ClassNotFoundException ex) <br>{ <br>System.out.println("Class.forname:"+ex); <br>} <br>conn=DriverManager.getConnection(DBUrl,UserID,UserPWD); <br>stmt=conn.createStatement(); <br>String sql="select * from EMPLOYEES"; <br>rs = stmt.executeQuery(sql); <br><br>out.print("<table border>"); <br>out.print("<tr>"); <br>out.print("<th width=100>"+"EMPLOYEE_ID"); <br>out.print("<th width=50>"+"FIRST_NAME"); <br>out.print("<th width=50>"+"LAST_NAME"); <br>out.print("<th width=50>"+"EMAIL"); <br>out.print("<th width=50>"+"PHONE_NUMBER"); <br>out.print("<th width=50>"+"HIRE_DATE"); <br>out.print("<th width=50>"+"JOB_ID"); <br><br>out.print("<tr>"); <br>try <br>{ <br>while(rs.next()) <br>{ <br>out.print("<tr>"); <br>int n=rs.getInt(1); <br>out.print("<td>"+n+"</td>"); <br>String e=rs.getString(2); <br>out.print("<td>"+e+"</td>"); <br>//String e=rs.getString(3); <br>out.print("<td>"+rs.getString(3)+"</td>"); <br>out.print("<td>"+rs.getString(4)+"</td>"); <br>out.print("<td>"+rs.getString(5)+"</td>"); <br>out.print("<td>"+rs.getString(6)+"</td>"); <br>out.print("<td>"+rs.getString(7)+"</td>"); <br><br>out.print("</tr>"); <br>} <br>} <br>catch(SQLException ex) <br>{ <br>System.err.println("ConnDB.Main:"+ex.getMessage()); <br>} <br><br>out.print("</table>"); <br>rs.close(); <br>stmt.close(); <br>conn.close(); <br>%> <br></body> <br></html> <br>p:#vi /u01/www/index.html <br><p> <br><META HTTP-EQUIV="Refresh" CONTENT="10; URL=http://10.3.1.254/myjsp/testoracle.jsp"> <br></BODY> <br><p> <br><a href="<a target=_blank href=http://10.3.1.254/local/index.jsp">http://10.3.1.254/local/index.jsp"</a>;>WEB Local</a> <br><p> <br><a href="<a target=_blank href=http://10.3.1.254/myjsp/testoracle.jsp">http://10.3.1.254/myjsp/testoracle.jsp"</a>;>Test Oracle WEB</a> <br></HTML> <br><br>q:在两台real server上分别 <br>#vi /usr/local/tomcat/conf/tomcat-users.xml <br>加下面一行,允许页面管理: <br><user username="manager" password="tomcat" roles="manager"/> <br>r:在两台real server上分别 <br>#service httpd restart <br>#/usr/local/tomcat/bin/startup.sh <br>s:打开<a target=_blank href=http://1092.168.1.68:8080>http://1092.168.1.68:8080</a>和<a target=_blank href=http://1092.168.1.67:8080>http://1092.168.1.67:8080</a>,选Tomcat Manager,用 <br>manager/tomcat登录,虚拟目录/myjsp和/local应该Start了 <br>在两台机子上分别打开网页<a target=_blank href=http://10.3.1.254>http://10.3.1.254</a>,选WEB Local,可以看到一台显示: <br>"test page on real server 1",另一台为"test page on real server 2",同时在Router上 <br>ipvsadm可以看到每个real server的联接数 <br>8.设置FTP服务 <br>#vi /etc/vsftpd/vsftp.conf,在两台real server上分别加入以下几行: <br>anon_root=/u01/ftproot <br>local_root=/u01/ftproot <br>setproctitle_enable=YES <br>#service vsftpd start <br>
现在LVM+GFS+ISCSI+TOMCAT就设置好了,我们可以用Apache Jmeter来测试LVM的性能,两台机子上 <br>
分别运行jmeter,都指向10.3.1.254/myjsp/testoracle.jsp,各200个threads同时运行,在Router <br>
上用ipvsadm可以监控,Oracle Server的性能可要好,否则大量的http进程会hang在real server <br>
上,ipvsadm也会显示有个real server失去了。测试时real server的CPU idle会降到70%,而Router <br>
的CPU idle几乎不动。<br>
页:
[1]

