记一次客户测试环境运维
好久没有更新博客了,主要是最近有点忙,主要忙着两件事,一个是系统性能测试及调优,另一个忙着在客户测试环境部署服务,今天就来聊一聊环境部署相关的内容,下一期像讲一讲关于性能优化的问题。
在正式开始前先来看下这篇博客是如何完成的:
首先,我是在家远程公司的电脑,取一些素材,大概是这样的,中间小窗口是远程公司电脑桌面:
然后是需要远程到客户端机器上,由于都是证券公司,服务都是部署在内网,所以我需要远程到客户电脑,然后连接客户服务器,在上面进行项目的部署和测试。估计是有很多服务通过一台电脑远程,所以这个桌面上跑了无数个进程,图标开的满满的,就是下面这样的(声明:图中无用户隐私内容):
现在呢,我就是开着两边的连接在三台电脑上来回切换,完成这篇文章。
接下来进入正题。
1. 项目打包由于在公司自己的开发和测试环境是自己公司内网,项目是使用gitlab+jenkins+Nexus Maven仓库。所以在在开发测试环境时,只需要配置好各个环境的配置文件,提交代码,在jenkins上配置好各个环境的信息,只需一键构建即可完成项目的部署和运行,当然还有一个前提是写好服务的启停脚本
但是由于项目发布到客户的机器上,没法使用这种自动化工具,只能手动将项目所有的服务,依赖,配置文件等等一起打包。
首先是各个Service包,更改好配置文件中active的环境,使用Maven package插件即可。
然后是各种中间件,的安装包,比如使用的什么注册中心,配置中心,消息中间件,cache等等,当然不排除用户服务器上没有jdk和数据库,所以所有的安装包一起打包。
2. 传输服务到客户机器使用远程桌面,一键拖过去即可,但是由于万恶的资本,在每购买vip的情况下,传输速度急速,300k/s。oh,天呐。1个GB的压缩包需要传输一个小时。。。无语,害!兜里没钱,要忍受这种速度,不过没关系,慢慢传呗。
3. 客户服务器配置在这里说一点很神奇的事,客户服务器的用户名和密码是我们的产品传达给到我这里,然后我在客户机器上连接服务器,结果密码错误。。。
真的是坎坷,最终成功拿到了正确的密码,接下来就进入到正式的部署环节了。
4. 服务部署 4.1 JDK按照正常流程安装配置即可,把JDK的安装包传到服务器上,解压后配置环境变量,之后刷新生效即可,这里没啥幺蛾子。perfect,next。
4.2 数据库安装我们使用的是Mysql,这里说一下拿到一台新的服务器安装配置数据库时的注意事项吧。
4.2.1 卸载删除原有机器上的mysql,mariadb等相关的安装和注册文件反正个人觉得是删掉重新安装更放心,具体方法可以某度,如下:
4.2.2 下载安装Mysql安装包一般使用rpm -ivh获取下载,yum安装,简单的在服务器上执行如下指令即可
rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum -y install mysql-community-server
但是,但是,这里,万一服务器没有联网,或者域名域名解析服务,那就获取不到安装了,怎么办?怎么办?
下载好传到服务器上安装呗!
大概需要这几个包,按照一定的顺序,使用yum -y install …安装即可,遇到需要其他的依赖包是,会有提示,不用担心:
4.2.3 初始化数据库用户名,密码,权限等等 4.2.4 初始化数据库表直接将ddl语句传入服务器,source xxx.sql 语句执行即可。
4.3 服务部署当然,项目部署在root用户下,需要创建用户,并在该用户的工作目录下部署服务,这里也记录下创建用户,初始化密码的指令吧,这里以app用户为例:
新建用户,初始化密码
adduser app passwd app
之后输入密码,并再次输入后确认
4.3.1 中间件,cache安装,启动 4.3.2 各服务解压缩,启动当然,可以编辑shell脚本运行,省去逐个服务安装运行的烦恼
部署完成后的家目录是这样的:
具体服务内部目录是长这样的:
其中,bin目录下是startup.sh 和shutdown.sh脚本,config目录下是配置文件,lib下是服务依赖。
4.3.3 最后检查下各服务正常启动执行提前准备好的脚本即可
OK,大功告成。
5. 关于查看机器配置的一些指令 5.1 查看机器版本由于这里使用的是redhat的linux发行版本,查看命令如下
cat /etc/redhat-release5.2 使用numactl
查看cpu信息
关于numactl的具体介绍和功能,将在下一篇关于性能调优的文章展开描述
5.3 使用 tuned主要是配置一些调优参数,将在下一篇关于性能调优的文章展开描述
感受这也是我做开发以来第一次进客户的机器上整个环境部署服务,其实正常来讲这些工作都是由运维的同事进行的,但是我们的项目还处于初版的开发测试环节,需要由开发产生部署文档,之后给到运维的同事执行。
之前也在公司内部新机器上部署过,但是由于客户的机器没有域名解析服务,安装mysql服务时折腾了很久,害。
下一篇讲一讲关于性能测试和性能优化的一些事,之后介绍下一种证券交易用的比较多的协议-FIX协议。再之后写什么呢?暂时还没想好,估计继续聊一聊JVM相关的内容吧,OK,下期再会。



