写点什么

利用 AWS 打造高可用 SAP Hybris 系统

  • 2019-09-26
  • 本文字数:3252 字

    阅读完需:约 11 分钟

利用 AWS 打造高可用 SAP Hybris 系统

概述

SAP Hybris 是整个 e-commerce 领域的领先系统解决方案,许多客户在选择打造自己的 e-commerce 系统时,都会考虑选择 SAP Hybris. 这篇 blog 将会介绍如何利用 AWS 的服务打造高可用的 SAP Hybris. 同时,利用 Amazon Aurora 数据库,存储整个系统的用户相关数据,产品相关数据以及订单相关数据。


Solr 是 Apache 的开源项目,提供一个功能强大的搜索服务器,它支持 REST 风格 API。Solr 是基于 Lucene 的,Lucene 支持强大的匹配能力,如短语,通配符,连接,分组和更多不同的数据类型。Solr 在 e-commerce 电商系统中,通常作为搜索引擎使用。


Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务界面,可用于存储和检索 Web 上任何位置、任意数量的数据。它能够提供 99.999999999% 的持久性,并且可以在全球大规模传递数万亿对象。本篇文章设计的架构中利用 S3 作为相关媒体文件的存储用于存储整个系统的图片,脚本等静态资源。


Amazon Aurora 是一种与 MySQL 和 PostgreSQL 兼容的关系数据库,专为云而打造,既具有高端商用数据库的性能和可用性,又具有开源数据库的简单性和成本效益。同时,Amazon Aurora 已经被 SAP 认证作为 hybris 的数据库提供服务。


整个系统的架构图如下,需要注意的是在如果架构用于实际生产环境,建议将 Solr 服务器也进行高可用集群部署。


环境需求:

Hybris 安装包


https://help.sap.com/viewer/product/SAP_COMMERCE/1905/en-US


AWS Aurora 数据库


Application Load Balancer

构建 Hybris 服务器

1.将下载好的系统上传至 AWS EC2 服务器,可以利用 AWS S3 服务先上传安装包到桶中,在从 EC2 进行下载。


安装包解压后目录结构如下:



目录中的 hybris 为我们所需要的软件系统,其它文件的作用在这里不做深入解释,具体可以参考 SAP 官方文档。我们将 hybris 拷贝到根目录下方便后续操作。


\2. 进入/home/ec2-user/hybris/bin/platform 目录, 运行


. ./setantenv.sh
复制代码


进行安装环境的初始化。


3.接着运行


ant clean all
复制代码


进行初始化 hybris 的安装, 安装完毕后,hybris 的目录结构如下:



4.根据架构图中的设计我们需要利用 AWS Aurora 作为数据源,我们需要将 mysql 对应的驱动放入/home/ec2-user/hybris/bin/platform/lib/dbdriver/中,用于连接数据库。


配置数据库:

1.选择 Aurora 数据库引擎



2.确保多可用于部署勾选



3.设置 VPC 已经安全组的相关信息(确保 3306 端口开放给 EC2 所配置的安全组)


4.启动 Aurora 数据库

配置 Solr 搜索引擎:

启动一台新的 EC2 服务器,将 Hybris 安装包上传,并进行构建 hybris 系统部分的第一,二步骤。注意我们要对安装 Solr 的 EC2 服务器开放 8983 端口


修改/home/ec2-user/hybris/config/localextensions.xml, 修改为如下所示内容,该配置会启动一个只含有 Solr 服务器的 hybris 系统。


<hybrisconfig xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='../bin/platform/resources/schemas/extensions.xsd'>
<extensions>
<path dir='${HYBRIS_BIN_DIR}' autoload='false' />
<extension name='solrserver' />
</extensions>
</hybrisconfig>
复制代码


修改后进入目录/home/ec2-user/hybris/bin/platform/,运行


ant startSolrServer
复制代码


观察 Solr 服务器是否正常启动,正常启动的 Slor 会有如下显示:



配置 Hybris 服务器:


在这部分中,将利用配置文件完成和 Solr 服务器,Aurora 数据库,以及作为媒体存储的 S3 桶的集成配置,同时为了保证后期多台 EC2 服务器能够互相连通构成集群,这里也会利用 Jgroups 进行相关配置。


1.配置和 Solr 服务器的连接,在配置文件中增下如下配置,这里我们利用之前启动的用于部署 Solr 的 EC2 服务器的私有 IP 地址作为主机名:


solrserver.instances.default.autostart=false
solrserver.instances.standalone.autostart=true
solrserver.instances.standalone.mode=standalone
solrserver.instances.standalone.hostname=172.31.30.1
solrserver.instances.standalone.port=8983
solrserver.instances.standalone.memory=512m
复制代码


通过配置,启动的 Hybris 系统会连接配置文件所提供的 Solr 服务器,连接信息如图所示:



2.利用 S3 作为媒体存储的相关配置如下,这里需要用到 AKSK, 建议根据 AWS 安全最佳实践,利用 IAM 服务生成只有对 S3 存储桶操作权限的 AKSK 应用于此。{}部分需要根据环境定制


media.default.storage.strategy=s3MediaStorageStrategy
media.default.url.strategy=localMediaWebURLStrategy
media.globalSettings.s3MediaStorageStrategy.accessKeyId= media.globalSettings.s3MediaStorageStrategy.secretAccessKey=
media.globalSettings.s3MediaStorageStrategy.endpoint={s3.us-west-2.amazonaws.com}
media.globalSettings.s3MediaStorageStrategy.bucketId={hybrisbucket}
media.folder.media.storage.strategy=s3MediaStorageStrategy
media.folder.media.url.strategy=localMediaWebURLStrategy
复制代码


通过该配置,所有系统所需的静态文件包括图片,脚本等等文件都会存储在 S3 中,结构如下所示:



3.配置数据库的相关信息:


db.url=jdbc:mysql://hybris.cluster****.us-west-2.rds.amazonaws.com:3306/hybris?useConfigs=maxPerformance&characterEncoding=utf8
db.driver=com.mysql.jdbc.Driver
db.username=admin
db.password=
mysql.allow.fractional.seconds=true
复制代码


4.配置 Hybris 服务器集群相关的信息,这里绑定的 IP 地址仍然是 EC2 服务器的私有 IP 地址。


clustermode=true
cluster.nodes.autodiscovery=true
cluster.broadcast.methods=jgroups
cluster.broadcast.method.jgroups=de.hybris.platform.cluster.jgroups.JGroupsBroadcastMethod
cluster.broadcast.method.jgroups.tcp.bind_port=7800
cluster.broadcast.method.jgroups.channel.name=hybris-broadcast
cluster.broadcast.method.jgroups.configuration=jgroups-tcp.xml
cluster.broadcast.method.jgroups.tcp.bind_addr= 172.31.46.58
复制代码


配置后,hybris 系统会有如下相关的集群连接信息显示在启动过程中:



5.在测试完成后,我们利用该服务器作为基础, 建立镜像文件用于利用 AWS 自动扩展组实现 Hybris 系统的高可用扩展。


为了方便配置,在/home/ec2-user/下创建 setip.sh 脚本用于自动配置


#!/bin/bash
export y_ip=`curl http://169.254.169.254/latest/meta-data/local-ipv4 --silent`
echo "cluster.broadcast.method.jgroups.tcp.bind_addr= $y_ip" >> /home/ec2-user/hybris/config/local.properties
复制代码


利用该服务器配置创建映像。


配置 Auto Scaling 自动扩展组以及负载均衡 ALB

1.选择之前创建好的映像,创建启动配置,注意在创建启动配置部分,需要设置好相应的用户数据。数据详细代码如下:


#!/bin/bash
sudo yum update -y
/home/ec2-user/setip.sh
cd /home/ec2-user/hybris/bin/platform
. ./setantenv.sh
ant clean all >> /home/ec2-user/hybris/log/ant.log
sudo chown -RL ec2-user:ec2-user /home/ec2-user/hybris
su - ec2-user -c "cd /home/ec2-user/hybris/bin/platform;./hybrisserver.sh >> /home/ec2-user/hybris/log/startup.log"
复制代码


2.创建 ALB 目标组,这里要注意 hybris 的默认端口为 9001



3.创建负载匀衡器,需要注意的部分已经在图中标红




4.创建自动扩展组



这样如架构中所呈现的系统环境就我们就搭建好了,最后通过 ALB 的入口进行访问测试。



同时观察 hybris 系统的控制台,可以看到集群相关信息:


参考文档:

https://www.amazonaws.cn/rds/aurora/


https://lucene.apache.org/solr/


https://help.sap.com/viewer/product/SAP_COMMERCE/1811/en-US

作者简介

郭腾,AWS 中国团队的解决方案架构师,负责基于 AWS 的云计算方案架构咨询和设计。同时致力于 AWS 云服务在国内的应用和推广。在加入 AWS 之前,他曾就职于 SAP,从事技术支持和咨询相关工作。


本文转载自 AWS 技术博客


原文链接:


https://amazonaws-china.com/cn/blogs/china/use-aws-make-sap-hybris-system/


2019-09-26 17:55911
用户头像

发布了 1848 篇内容, 共 113.7 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

使用Eclipse连接SAP云平台上的HANA数据库实例

汪子熙

数据库 Cloud SAP 11月日更

鸿蒙轻内核源码分析:虚拟内存

华为云开发者联盟

鸿蒙 内存 虚拟内存 OpenHarmony 轻内核

阿里蚂蚁金服超全126道面试题,都会的话,你也能去面阿里了

Java 程序员 后端

阿里腾讯微软拥抱低代码,程序员们要“失业”?

Java 程序员 后端

阿里三面:CAP和BASE理论了解么?可以结合实际案例说下?

Java 程序员 后端

阿里内部疯传的分布式架构手册,轻松吊打小日子过的不错的面试官

Java 程序员 后端

阿里大师推荐的这份Java开发必读书单,让我成功在寒冬中站稳脚步

Java 程序员 后端

阿里大牛看了也要膜拜的大话代码架构(项目实战版)终于出来了

Java 程序员 后端

阿里技术官亲手总结Part 10个知识点!主动分享!收藏必备!

Java 程序员 后端

阿里架构师剖析程序运行原理,程序是如何运行又是如何崩溃的?

Java 程序员 后端

阿里老人吐槽:新人水平差不服管不加班!汇报经理让他无法转正

Java 程序员 后端

一周信创舆情观察(11.1~11.7)

统小信uos

阿里内部绝密Java面试笔记(珠峰版),冒着被开的风险免费分享

Java 程序员 后端

阿里巴巴内部涨薪必备的“王者级Dubbo实战笔记”,不啃透不下班

Java 程序员 后端

助力数字孪生,TDengine在叁零肆零仿真平台中的实践

TDengine

数据库 tdengine 后端

阿里技术总监纯手打的内部手册《MySQL笔记》真是太硬核了

Java 程序员 后端

用JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办

汪子熙

JavaScript SAP 11月日更 SAP微信集成

技术为本,中科柏诚致力于打造高效供应链金融平台

联营汇聚

阿里亿级长连网关的云原生演进之路

Java 程序员 后端

阿里技术3面+HR面,奋战两个月,终斩获offer定级阿里P6+

Java 程序员 后端

阿里老人吐槽:新人水平差不服管不加班!汇报经理让他无法转正(1)

Java 程序员 后端

阿里三面面试题:分布式服务注册中心该如何选型?我快哭了

Java 程序员 后端

阿里二面被问16道 volatile 问题,玩命补充jvm、多线程、高并发

Java 程序员 后端

阿里员工感慨:码农们过去暴富有多轻松,现在赚钱就有多辛苦!

Java 程序员 后端

阿里一面,给了几条SQL,问需要执行几次树搜索操作?

Java 程序员 后端

阿里又一个“逆天”容器框架!这本Kubernetes进阶手册简直太全了

Java 程序员 后端

35w奖金池,腾讯云TDSQL精英挑战赛正式开赛!

科技热闻

阿里巴巴蚂蚁金服Java面试经历包含答案解析

Java 程序员 后端

阿里程序员:入职才两个月,我决定离职

Java 程序员 后端

这几个动态规划的问题,面试官就爱问

华为云开发者联盟

数组 动态规划 序列 子数组 公共子串

阿里五面(4轮技术+HR)成功逆袭,面经分享

Java 程序员 后端

利用 AWS 打造高可用 SAP Hybris 系统_服务革新_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章