写点什么

利用 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:551242
用户头像

发布了 1964 篇内容, 共 169.0 次阅读, 收获喜欢 83 次。

关注

评论

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

java基础学习:java中的反射

Java快了!

java;

设计模式的艺术 第七章原型设计模式练习(在某销售管理系统中设计并实现了一个客户类Customer,其中包含一个名为客户地址的成员变量,客户地址的类型为Address。用浅克隆和深克隆分别实现Customer对象的复制)

代廉洁

设计模式的艺术

用过这个API接口工具后,确实感觉postman有点鸡肋......

Liam

Java Postman swagger API开发 API调式

对jdbc的讲解

楠羽

JDBC 笔记 9月月更

ShareSDK Android端主流平台分享示例

MobTech袤博科技

an'droid

设计模式的艺术 第八章建造者设计模式练习(开发一个视频播放软件,为了方便用户使用,该播放软件提供多种界面显示模式,例如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异。例如,在精简模式下只显示主窗口、控制条)

代廉洁

设计模式的艺术

无代码开发平台怎么选?选择合适无代码平台的13个关键步骤

优秀

无代码平台

「工作小记」小程序开发的喜怒哀乐

叶一一

小程序 前端 9月月更

ShareSDK iOS端微信如何获取authcode值

MobTech袤博科技

微信 iOS SDK

2022服贸会 | 洞见科技姚明:从智能化到密态化,数据科技向善升级

洞见科技

前端食堂技术周刊第 51 期:pnpm v7.10.0、8 月登陆网络平台的新内容、重新思考流行的 Node.js 模式和工具、打包 JavaScript 库的现代化指南

童欧巴

chrome Node React Chrome开发者工具 pnpm

Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?

Java快了!

Java并发 java;

mysql查询 limit 1000,10 和limit 10 速度一样快吗?如果我要分页,我该怎么办?

Java快了!

MySQL

蓝凌OA

科技云未来

WAIC 2022 | 洞见科技在可信AI论坛联合发布《可信人工智能产业生态发展报告》

洞见科技

由循环开始的前端学习杂谈话事录-sam9029

Sam9029

前端 个人博客 成长笔记 9月月更

五分钟了解 Databend 全新 SQL 类型系统

Databend

开源项目 sql 开源社区 SQL分析

与紧张为友,享受紧张

宇宙之一粟

读书笔记 个人成长 演讲 9月月更 享受紧张

观测云&亚马逊云科技「可观测性体验日」北京站圆满落幕

观测云

「工作小记」关于业务组件的思考

叶一一

前端 React 组件开发 9月月更

面向对象分析与设计的底层逻辑

阿里巴巴中间件

阿里云 云原生

lodash 在vue3+vite中按需加载

木叶🐱

vite Vue3 lodash

Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架

阿里巴巴中间件

阿里云 云原生 Koordinator

MobLink后台基本配置

MobTech袤博科技

android 开发者 iOS SDK

WAIC 2022 | 洞见科技王湾湾出席BPAA第二届应用算法实践典范,共话前沿算法产业发展

洞见科技

Dubbo Mesh:从服务框架到统一服务控制平台

阿里巴巴中间件

阿里云 微服务 云原生 dubbo

Dragonfly 基于 P2P 的文件和镜像分发系统

SOFAStack

容器 云原生 镜像 日志 文件

验证一个小小的问题

艾小仙

Java MySQL 编程 程序员 compact

使用 CRD 开启您的 Ingress 可观测之路

观测云

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