1背景

本次项目将在某鞋业购买的阿里云清单上面的ECS服务器上面部署tomcat的系统应用环境,并采用阿里云上的RDSOSSSLB等技术来实现高可用的系统架构。

2上云后的系统架构

2.1架构描述:

1. 使用阿里云的VPC服务,在VPC内部建立建议1VPC2个虚拟交换机,分别提供给业务系统和SLB使用; 2. 前端使用专有网络的SLB负载均衡(SLB提供的转发策略),将外部访问分发到VPC内的有内网应用的tomcat服务器上; 3. 相同的业务模块采用不同的ECS避免服务器单点故障,也为将来大流量访问的横向扩展在架构上打下基础; 4. 数据库采用高可用高安全的RDS云数据库,选择MySQL5.6数据库; 5. 采用消息队列MQ实现内部消息通讯; 6. 采用API网关、CDN和log service技术实现应用网关安全和网站加速。 ## 2.2系统架构图: 某鞋业云上案例分享 - 图1 # 3 实施内容 ## 3.1 创建VPC网络: 使用阿里云的VPC服务,在VPC内部建立二个虚拟交换机,将各个tomcat业务系统部署在同一个虚拟交换机内。

3.2 创建专有网络SLB负载均衡:

前端使用专有网络的SLB负载均衡,将某鞋业业务系统的外部访问分发到VPC内的对应的tomcat系统上,详细SLB请见资源清单列表。

3.3 创建专有网络RDS数据库:

使用阿里云的RDS服务,在VPC内部建立5个生产系统数据库,为某鞋业业务系统提供数据库服务,详细RDS数据库列表可参见资源清单列表。

3.4 tomcat实施部署:

(1) tomcat部署路径: Tomcat部署在/data/tomcat下,详细路径如下:

某鞋业云上案例分享 - 图2

其中bin为执行目录,包括tomcat的启动脚本、关闭脚本和环境变量 conf tomcat配置文件、webapps为代码部署的目录,logstomcat日志目录。 关于webapps中的应用程序日志文件保存在/data/app_logs下,对应的日志目录为:

某鞋业云上案例分享 - 图3

(2)tomcat 优化参数: 1、在/data/tomcat/bin配置 setenv.sh文件优化tomcat内存参数 CATALINA_OPTS=”$CATALINA_OPTS -Xms4096m -Xmx4096m” 2、配置${TOMCAT_HOME}/webapps/manager/META-INF/context.xml文件 允许manager应用被远程主机访问,用于jenkins部署 3、配置${TOMCAT_HOME}/conf/tomcat-users.xml文件配置用户、角色,用于jenkins部署 4、配置/data/tomcat/conf/context.xml,替换到${TOMCAT_HOME}/conf/context.xml 文件,配置cache参数,避免因为cache不足,启动不了war应用(现设置为200MB)。 5、配置tomcat监控参数,jconsole进行性能监控 CATALINA_OPTS=”$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=8199 -Dcom.sun.management.jmxremote.rmi.port=8199 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=xx.xx.xx.xx 6、调整/data/tomcat/conf/server.xml,对下列参数进行优化配置: connectionTimeout=”20000” redirectPort=”8443” maxThreads=”2000” minSpareThreads=”100” maxSpareThreads=”1000” acceptCount=”1000” /> 其中 acceptCount部分机器根据实际情况参数调整为2000

3.5 创建API网关、CDN和log service:

将在验证和测试后正式部署生产环境。

3.6 搭建gitlab服务

在测试环境搭建gitlab 服务器,为天创全渠道项目涉及到的各个应用模块,提供分布式源代码版本控制服务。

3.6.1 gitlab实施部署

3.6.1.1 gitlab安装介质

https://about.gitlab.com/downloads/#centos7

3.6.1.2 gitlab部署情况

测试环境的ECS:xx.xx.xx.xx

部署路径:/opt/gitlab

详细路径如下:

某鞋业云上案例分享 - 图4

其中bin目录为执行目录,包括gitlab的可执行脚本如gitlab-ctl、gitlab-psql等

embedded目录为gitlab内嵌的web服务器、postgresql数据库等后台服务

service、sv、init是gitlab相关后台服务目录

etc是配置文件目录

var是临时文件目录

gitlab配置文件,见:/etc/gitlab/gitlab.rb。配置文件说明,可参考:

https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

3.6.1.3 gitlab常用命令

1.访问内嵌的postgresql数据库

gitlab-psql -d gitlabhq_production

2.查看gitlab后台服务运行情况

gitlab-ctl status

3.启动gitlab后台服务

gitlab-ctl start

4.停止gitlab后台服务

gitlab-ctl stop

5.重启gitlab后台服务

gitlab-ctl restart

6.修改配置文件后,重新配置gitlab后台服务

gitlab-ctl reconfigure

4.6.1.4 gitlab访问地址

http://xx.xx.xx.xx:9000/

某鞋业云上案例分享 - 图5

如上图,目前gitlab服务,已服务1个项目组、24个用户、26个项目。

3.7 搭建jenkins服务

在测试环境搭建jenkins 服务器,为天创全渠道项目涉及到的各个应用模块,提供持续构建、打包、部署到测试环境的服务。 在生产环境搭建jenkins 服务器,为天创全渠道项目涉及到的各个应用模块,提供部署到生产环境的服务。

3.7.1 测试环境jenkins实施部署

3.7.1.1 jenkins安装介质

http://pkg.jenkins-ci.org/redhat-stable/

3.7.1.2 jenkins部署情况

测试环境的ECS:xx.xx.xx.xx

部署路径: /data/jenkins

jenkins主目录:/data/jenkins/.jenkins

jenkins配置文件:/etc/sysconfig/jenkins

maven安装目录:/data/jenkins/apache-maven-3.3.9

m2 主目录:/data/jenkins/.m2

3.7.1.3 jenkins常用命令

1.查看jenkins服务状态

service jenkins status

2.启动jenkins服务

service jenkins start

3.停止jenkins 服务

service jenkins stop

4.重启jenkins服务

service jenkins restart

3.7.1.4 jenkins访问地址

http://xx.xx.xx.xx:8001/

某鞋业云上案例分享 - 图6

如上图,共实施了26个项目的build构建作业,其中member-admin_build因应用未开发完,暂时不需上线、持续集成。

某鞋业云上案例分享 - 图7

共实施了21个应用模块的deploy2test部署到测试环境的作业。

3.7.2 生产环境jenkins实施部署

3.7.2.1 jenkins安装介质

http://pkg.jenkins-ci.org/redhat-stable/

3.7.2.2 jenkins部署情况

测试环境的ECS:xx.xx.xx.xx

部署路径: /data/jenkins

jenkins主目录:/data/jenkins/.jenkins

jenkins配置文件:/etc/sysconfig/jenkins

3.7.2.3 jenkins常用命令

1.查看jenkins服务状态

service jenkins status

2.启动jenkins服务

service jenkins start

3.停止jenkins 服务

service jenkins stop

4.重启jenkins服务

service jenkins restart

3.7.2.4 jenkins访问地址

http://xx.xx.xx.xx:8001/

某鞋业云上案例分享 - 图8

如上图,共实施了23个pull作业,从测试环境中的jenkins拉取用于生产部署的应用包。

某鞋业云上案例分享 - 图9

如上图,共实施了22个deploy2prod部署到生产环境的作业,其中member-admin_deploy2prod应用模块未开发完成,不需部署上线。

某鞋业云上案例分享 - 图10

如上图,共实施了16个monitor站点监控作业,用于监控内网应用的http服务的可用性。

3.8 创建opensearch服务

OpenSearch基于阿里巴巴自主研发的大规模分布式搜索引擎平台,该平台承载了阿里巴巴全部主要搜索业务,包括淘宝、天猫、一淘、1688 ICBU、神马搜索等业务。OpenSearch以平台服务化的形式,将专业搜索技术简单化、低门槛化和低成本化,让搜索引擎技术不再成为业务瓶 颈,以低成本实现产品搜索功能并快速迭代。主要包括包括: 1. 创建应用。 一个应用可以理解为一个独立的搜索服务,简单理解就是一个搜索框。OpenSearch是结构化的搜索服务,我们需要定义表的结构,这里的字段一般是要用来查询、过滤、统计、展示的字段,其他无关字段无需进入OpenSearch中。 2. 数据上传。 这里有两种选择,一种是后续通过API/SDK方式上传,一种是通过数据源的方式导入,目前支持RDS\ODPS\OSS 3. 搜索结果排序。 搜索引擎找到查询数据后,会对查询到的文档进行排序,并按照排序后的顺序返回给用户,用户可以采用翻页的方式来进行数据展示。目前OpenSearch支持sort多维排序,目前系统提供了两轮的排序规则:粗排与精排。 4. 搜索结果展示。 可以配置片段个数、片段长度以及片段连接符,片段选取跟查询词有关,通常选取关键词所在的一个或者多个句子。而且提供了飘红功能,用来做查询词的高亮显示。 5. 查询分析。 查询分析主要是为了做查询优化的,为了深度解析查询词意图,并智能改写。 6. 搜索。 系统提供了丰富的搜索语法:查询、过滤、统计、排序、打散等。 7. 数据统计。 应用的访问PV、文档数的运营数据指标都可以通过数据统计来展示,方便随时掌握应用变化情况。 OpenSearch对于数据源OSS/ODPS/RDS都是支持自动同步,最终实现方案要根据某鞋业需求输出。