一、实验环境介绍
- 系统 :CentOS 5.5
- JDK : java-1.6.0-openjdk.x86_64,java-1.6.0-openjdk-devel-1.6.0.41-1.13.13.1.el5_11
- Mysql :mysql-5.0.95-5.el5_9、mysql-server-5.0.95-5.el5_9
- PHP :php-cli-5.1.6-45.el5_11、php-5.1.6-45.el5_11、php-pdo-5.1.6-45.el5_11、 php-common-5.1.6-45.el5_11、php-mysql-5.1.6-45.el5_11、 php-ldap-5.1.6-45.el5_11
- Apache :httpd-2.2.3-92.el5.centos
- Sysstat :sysstat-7.0.2-13.el5
- Gnuplot:gnuplot-4.0.0-14.el5
- RUBiS : RUBiS-1.4.3.tgz
- 部署apache服务器B ip:192.168.0.2 部署mysql数据库 A ip:192.168.0.1 部署client客户端 C ip:192.168.0.3
- RUBiS位置:/home/RUBiS
二、部署过程
CentOS的yum源的服务器一般在国外,下载速度极慢,需要进行安装镜像源地址进行更改
- mysql数据库-服务器 A
a. 安装mysql数据库
yum install mysql-server-5.0.95-5.el5_9 -yyum install mysql.i386 0:5.0.95-5.el5_9 -y
b. 安装监控软件sysstat
yum install sysstat -y
c. 配置mysql用户远程访问权限
#查看mysql状态service mysqld status#启动mysql服务service mysqld start#第一次安装mysql需要设置密码#PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !#To do so, start the server, then issue the following commands:#/usr/bin/mysqladmin -u root password 'new-password'/usr/bin/mysqladmin -u root password 'new-password'mysql -u root -p
创建新用户rubis,并使其可以远程或者本地连接mysql服务器:
命令:CREATE USER 'username'@'host' IDENTIFIED BY 'your_password';
>> CREATE USER 'rubis'@'%' IDENTIFIED BY 'your_password';>> CREATE USER 'rubis'@'localhost' IDENTIFIED BY 'your_password';>> GRANT ALL PRIVILEGES ON *.* TO 'rubis'@'%';>> GRANT ALL PRIVILEGES ON *.* TO 'rubis'@'localhost';
d. 初始化rubis数据库
cd /home/RUBiS/databasemysql -urubis -pYour_password < rubis.sqlmysql -urubis -pYour_password rubis < regions.sqlmysql -urubis -pYour_password rubis < categories.sql
2. apache服务器 B
a. 安装apache、php、sysstat模块
#安装 apacheyum install httpd-2.2.3-92.el5.centos -y#安装 php、php-mysqlyum install php-5.1.6-45.el5_11 -yyum install php-mysql-5.1.6-45.el5_11 -y#安装 sysstatyum install sysstat -y
b. 通过建立连接的方式,将RUBiS的PHP代码放置在apache服务器里
ln -s /home/RUBiS/PHP /var/www/html/PHP
c.修改PHP目录中 .php 文件里已废弃的命令,主要是:$HTTP_POST_VARS 改为 $_POST,$HTTP_GET_VARS 改为 $_GET
cd /home/RUBiS/PHP/grep -ci "HTTP_POST_VARS" *.phpgrep -ci "HTTP_GET_VARS" *.phpsed -i "s/HTTP_POST_VARS/_POST/g" *.phpsed -i "s/HTTP_GET_VARS/_GET/g" *.php
d. 配置数据库参数,打开/home/RUBiS/PHP/PHPPrinter.php文件,修改getDatabaseLink函数:
将mysql_pconnect()里面的三个参数依次填为apache服务器ip、mysql用户名及其密码e.开启apache服务,检查是否配置成功,关闭或设置防火墙(一般情况下,centos 防火墙只开启端口22)
service httpd startchkconfig httpd on#关闭防火墙,不然80端口不可访问service iptables stopchkconfig iptables off#apache 访问权限问题setenforce 0
浏览器:http://192.168.0.2/PHP/index.html若出现下图,则服务配置成功:
3.Client服务器 C
client主要负责 发起模拟请求,监控各节点数据,生成测试报告;以及初始化数据库
a. 安装监控以及绘图软件
yum install sysstatyum install gnuplot
b.修改配置文件, /home/RUBiS/Client/rubis.properties
# HTTP server informationhttpd_hostname = 192.168.0.2 #修改1:改为PHP服务器B的IPhttpd_port = 80+# C-JDBC server informationcjdbc_hostname = 192.168.0.1 #修改1:改为数据库服务器A的IP# Precise which version to use. Valid options are : PHP, Servlets, EJBhttpd_use_version = PHP #修改2:改为PHP版本ejb_server = sci20ejb_html_path = /ejb_rubis_webejb_script_path = /ejb_rubis_web/servletservlets_server = sci21servlets_html_path = /Servlet_HTMLservlets_script_path = /servletphp_html_path = /PHPphp_script_path = /PHP# Workload: precise which transition table to useworkload_remote_client_nodes = workload_remote_client_command = /usr/local/java/jdk1.3.1/bin/java -classpath /home/RUBiS/ edu.rice.rubis.client.ClientEmulator#修改3:修改jdk路径#修改4:修改RUBiS 模拟器路径workload_number_of_clients_per_node = 240workload_transition_table = /home/RUBiS/workload/transitions.txt #修改5:修改对应路径workload_number_of_columns = 27workload_number_of_rows = 29workload_maximum_number_of_transitions = 1000workload_number_of_items_per_page = 20workload_use_tpcw_think_time = yesworkload_up_ramp_time_in_ms = 120000workload_up_ramp_slowdown_factor = 2workload_session_run_time_in_ms = 900000workload_down_ramp_time_in_ms = 60000workload_down_ramp_slowdown_factor = 3#Database informationdatabase_server = 192.168.0.1 #修改6:改为数据库服务器A的IP# Users policydatabase_number_of_users = 10000# Region & Category definition filesdatabase_regions_file = /home/RUBiS/database/ebay_regions.txt #修改7:修改对应路径database_categories_file = /home/RUBiS/database/ebay_simple_categories.txt #修改8:修改对应路径# Items policydatabase_number_of_old_items = 10000 database_percentage_of_unique_items = 80database_percentage_of_items_with_reserve_price = 40database_percentage_of_buy_now_items = 10database_max_quantity_for_multiple_items = 10database_item_description_length = 1024 #修改9:改为小一点,1024# Bids policydatabase_max_bids_per_item = 20# Comments policydatabase_max_comments_per_user = 20database_comment_max_length = 2048# Monitoring Informationmonitoring_debug_level = 0monitoring_program = /usr/bin/sarmonitoring_options = -n DEV -n SOCK -rubcwmonitoring_sampling_in_seconds = 1monitoring_rsh = /usr/bin/sshmonitoring_scp = /usr/bin/scpmonitoring_gnuplot_terminal = jpeg
c.修改配置文件,/home/RUBiS/config.mk
############################### Environment variables ###############################JAVA_HOME=/usr/local/java/jdk1.3.1 #修改1:设置JAVA_HOMEJAVA = $(JAVA_HOME)/bin/javaJAVAC = $(JAVA_HOME)/bin/javac#JAVAC = /usr/bin/jikesJAVACOPTS =# +E -deprecationJAVACC = $(JAVAC) $(JAVACOPTS)RMIC = $(JAVA_HOME)/bin/rmicRMIREGISTRY= $(JAVA_HOME)/bin/rmiregistryCLASSPATH = .:/usr/local/java/jdk1.3.1/jre/lib/rt.jar:$(PWD)#修改2:改为java路径JAVADOC = $(JAVA_HOME)/bin/javadocJAR = $(JAVA_HOME)/bin/jarGENIC = ${JONAS_ROOT}/bin/unix/GenICMAKE = gmakeCP = /bin/cpRM = /bin/rmMKDIR = /bin/mkdir# EJB server: supported values are jonas or jbossEJB_SERVER = jonas# DB server: supported values are MySQL or PostgreSQLDB_SERVER = MySQL%.class: %.java ${JAVACC} -classpath ${CLASSPATH} $<
d.编译客户端
#到该步骤,应该可以编译成功cd /home/RUBiSmake client
e. 初始化数据库
cd /home/RUBiSmake initDB PARAM='all'
需要注意的几点:
1) make initDB后边的PARAM一共有5种选择:all,生成所有数据;users,只生成用户;items,只生成物品;bids,生成竞拍;comments,生成注释。 2) 如果前面讲到的PHP代码中需要修改的地方已经更正了的话,数据是可以写入到数据库中的。 3) 在配置rubis.properties的时候,如果database_item_description_length的数值太大的话。会出现Unable to Open URL http://....的错误。文件默认给的值就太大,建议修改为1024即可。初始化正常运行如下图:
初始化后,网站会正常 显示出 商品信息
f.启动模拟器,生成的报告会出现在/home/RUBiS/bench/目录下,需要做下免密登录
cd /home/RUBiSmake emulator