在日常的压测过程中,不同服务可能部署在不同的机房,为了避免网络因素,通常会在同网络环境下部署相应的压力机。理解原理才能做到《千山同一月,万户尽皆春。千江有水千江月,万里无云万里天》
因为现在用的ngrinder系统,集成的是所有机房的Agent,所以当对服务器集群进行压测时,ngrinder系统的Controller会随机从集群中选取压力机,这样就有可能会出现压测其他机房的服务使用的是另一个服务群压力机,因为两个机房的带宽并不足以支撑压测,可能会导致压测结果失真。
为了解决以上的问题,引入ngrinder系统区域的概念,即压测XX服务集群,只会用本身机房的5台压力机,压测其他服务集群,只会使用本身的5台压力机,实现结果如下:
通过在场景中简单的配置解决以上问题。
将ngrinder的war包上传到服务器(/usr/local),为了方便访问我们这里将war包重命名
启动control服务: java -XX:MaxPermSize=200m-jar ROOT.war
出现2018-11-30 12:01:56.326:INFO:oejs.Server:main: Started @18683ms即表示服务启动成功,ps:这里启动服务是为了解压,如果不启动则不会有下一步的h2-1.3.168.jar包生成。
因为之前ngrinder使用了中间件tomcat启动,tomcat启动的数据库模式是使用的内嵌模式,而配置region需要使用Server模式,所以我们需要把内嵌模式改成Server模式。
1、将数据库jar包复制一份至/usr/local下
cp -R /root/.ngrinder/tmp/webapp/WEB-INF/lib/h2-1.3.168.jar /usr/local/
2、在usr/local下启动数据库,这里为了便于复用,我们将启动数据库的命令放到一个shell文件里
vim h2start.sh
nohup java -cp "h2-1.3.168.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Server -tcpAllowOthers -webAllowOthers -baseDir /root/.ngrinder -webPort 9092 -tcpPort 9083 "$@" &
chmod 777 h2start.sh //赋予权限
./h2start.sh //启动数据库
在nohup.out里出现如下信息表示数据库启动成功
ps: tcpAllowOthers表示允许其他成员连接
webPort:数据库web页面的端口号,可通过ip+端口号访问数据库的web页面
tcpPort:数据库连接端口号
加载环境变量:
sudo su
source /etc/profile
启动服务,这里为了便于复用,同样也是放到一个shell文件里
vim lugu8080.sh
nohup java -jar -XX:MaxPermSize=500m -jar ROOT.war -p 8080 -cm easy -clp 10010 -r lugu -cp 9001 -dh XX.XX.XX.XXX -dp 9083 &
chmod 777 lugu8080.sh //赋权限
./lugu8080.sh
再启动阿里云的区域,同上
vim aliyun8081.sh
nohup java -jar -XX:MaxPermSize=500m -jar ROOT.war -p 8081 -cm easy -clp 10011 -r aliyun -cp 9002 -dh XX.XX.XX.XXX -dp 9083 &
chmod 777 aliyun8081.sh //赋权
./aliyun8081.sh //启动应用程序
-p:web访问端口号,不同的region对应不同的端口号
-cm:control模式,这里配置的是简易集群模式
-r:区域名称
-dh:连接数据库的地址
-dp:连接数据库的端口号,这里的端口号与上一步数据库的tcpPort保持一致
-cp:控制端口,这个后续Agent配置里会用到该端口
至此region区域配置完成
由于之前一直使用的是内嵌数据库,应用程序会将数据存储在/root/.ngrinder/db/ h2.h2.db数据库中,而使用Server模式则会存放在/root/.ngrinder/db/ngrinder.h2.db目录下,所以需要保存之前的压测数据。
cd /root/.ngrinder/db
mv ngrinder.h2.db ngrinder.h2.db.bak
mv h2.h2.db ngrinder.h2.db
验证:
从上图可知,场景和脚本中的数据均未丢失,数据保持完整性。
Agent的默认存放位置为/usr/local
sudo su //切换超级用户
source /etc/profile //加载环境变量
/usr/local/ngrinder-agent //进入到该目录下
vim __agent.conf //编辑Agent的配置文件
修改agent.controller_port与agent.region和第三步启动应用时设置的端口号、区域一致
./run_agent_bg.sh -o //启动Agent并加载配置文件
使用admin用户登录,在代理管理下看到该Agent表示启动成功
至此lugu区域Agent配置完成。
长江后浪推前浪,世上新人赶旧人,
江山代有人才出,下一句是各领风骚数百年。