SAPは現在CloudFoundry(CF)を積極的に開発しており、クラウドインフラストラクチャのコア要素としてSAP CloudPlatformに実装しています。 CFはPaaSとして機能し、SCP環境でアプリケーションを実行できるようにします。この記事では、プロジェクトを本番環境にリリースするためにCFを準備する方法(「稼働」フェーズ)と、Cloud FoundrySCPおよびHANAXSA環境にアプリケーションをデプロイする方法について説明します。例を見て、アプリケーションを実行するための制御された環境を提供しながら、サーバーコンピューティングリソースをインテリジェントに管理する方法を示します。
IDE , Python, Java, JavaScript, Go. CF (runtime environment) . SAP CF HANA Platform, HANA XSA (XS Advanced Runtime). HANA XSA CF SAP SCP.
SAP SCP Cloud Application Programming Model (CAP) . SAP CAP CF.
CAP , back-end Java JavaScript, SqlLite. SAP SCP HANA Cloud , CDS (Core Data Services), .
CF/XSA LINUX, Linux. Microsoft .NET Core , .NET HANA XSA.
.Net CF / XSA?
, buildpack, , , . CF/XSA, , .
buildpack .
buildpack , , . HANA XSA buildpack’, SAP, : nodejs (javascript), java. , CF, HANA XSA, : php, go, dotnet_core, ruby.
buildpack?
· ,
· , buildpack,
· , .
, HANA XSA , HANA XSA .
execution agent controller, XSA , cli . XSA/CF, help.sap.com (SAP HANA Developer Guide for XS Advanced Model), .
buildpack , , , shell script Linux, go.
buildpack Microsoft .Net Core Runtime 3.1 HANA XSA 2.0 SP4, :
1. .NET Core Runtime 3.1. c HANA XSA, Linux. .NET Core Runtime . dotnet Linux.
2. zip, gzip ( ), . dotnet .NET Core Runtime.
3. shell script, : compile, detect, release.
4. zip ( zip), , 2, , 3.
5. buildpack xs create-buildpack ( help.sap.com->SAP HANA Developer Guide for XS Advanced Model Create a PHP Buildpack for XS Advanced)
buildpack, , Cloud Foundry . HANA XSA, CF, .
buildpack compile, detect, release, .Net Core Runtime 3.1 HANA XSA 2.0 SP4.
· ompile HANA XSA (build) , appsettings.json, framework, assembly ..
compile >>
#!/bin/bash
# bin/compile <build-dir> <cache-dir>
BUILD_DIR=$1
BIN_DIR=`dirname $0`
BUILD_PACK_DIR=`dirname ${BIN_DIR}`
echo "Extracting .NET runtime into..."
echo ${BUILD_DIR}
cd ${BUILD_DIR}
tar xzvf ${BIN_DIR}/../runtime/runtime.tgz
echo "Extracting .NET runtime Done."
, compile CF supply finalize, HANA XSA compile.
·Detect HANA XSA buildpack .
#!/bin/bash
# bin/detect <build-dir>
if [ -f $1/appsettings.json ];
then exit 0
fi
exit 1
· Release HANA XSA , yaml, .
detect >>
#!/bin/bash
# bin/detect <build-dir>
if [ -f $1/appsettings.json ];
then exit 0
fi
exit 1
· Release HANA XSA , yaml, .
release >>
#!/bin/bash
# bin/release
cat <<EOF
---
config_vars:
addons:
default_process_types:
web: /bin/bash ./start.sh
EOF
buildpack .Net Core Runtime 3.1. .
, zip, , , buildpack.
.. |
|
|
bin |
bin\detect bin\compile bin\release |
buildpack |
runtime |
runtime\runtime.tgz |
.net core 3.1 runtime |
HANA XSA ?
HANA XSA XSA, .
HANA XSA Multi-Host, HANA HANA XSA (. .).
HANA XSA Multi-Host HANA, HANA XSA.
Multi-Host XS_WORKER XS_STANDBY, Auto-Failover HANA XSA .
HANA XSA Multi-Host, .
HANA XSA ?
HANA XSA Multi-Host, , . . , ?
Linux, – Linux Control Groups (Cgroups). Cgroups, , Linux . , , . , - , , .
Linux Cgroups, Go Live, HANA XSA.
Linux Cgroups shell script, buildpack .Net Core Runtime 3.1.
start.sh >>
#!/bin/bash
if [ -z "$CGNAME" ]
then
echo "[ERR]Please check CGNAME to place cgroup name limits."
exit 1
else
echo "[OK] CGNAME is set to '$CGNAME'"
fi
if [ -z "$MemoryLimitInMB" ]
then
echo "[ERR] Please check memory limit settings."
exit 1
else
echo "[OK] MemoryLimitInMB is set to '$MemoryLimitInMB'."
fi
if [[ ! $(sudo echo 0) ]]; then echo "[ERR] sudo rights for user '$USER' needed.";exit 1; else echo "[OK] sudo rights for user '$USER' exist"; fi
create_cgroup_for_space(){
if [[ $(sudo mkdir /sys/fs/cgroup/memory/$CGNAME) ]]; then echo "[ERR] can not create cgroup with name '$CGNAME'."; exit 1; else echo "[OK] cgroup '$CGNAME' successfully created."; fi
}
if [[ ! $(sudo ls /sys/fs/cgroup/memory/$CGNAME 2>/dev/null) ]]
then
echo "[WRN] cgroup '$CGNAME' is not set."
create_cgroup_for_space
else
echo "[OK] cgroup '$CGNAME' is set."
fi
if [[ $(sudo sh -c "echo $MemoryLimitInMB > /sys/fs/cgroup/memory/$CGNAME/memory.limit_in_bytes") ]]
then
echo "[ERR] Can not set memory limit for app."
exit 1
else
echo "[OK] Successfully set memory limit to '$MemoryLimitInMB'."
fi
ATTACH=`awk '/^__MS_DOT_NET_RUN__/ {print NR + 1; exit 0; }' $0`
tail -n+$ATTACH $0 > ./run.sh
_PID=`echo $$`
if [[ ! $(sudo sh -c "echo $_PID > /sys/fs/cgroup/memory/$CGNAME/tasks") ]]
then
chmod +x ./run.sh && /bin/bash ./run.sh
else
echo "[ERR] Unable to start app"
exit 1
fi
exit 0
__MS_DOT_NET_RUN__
#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT
export ASPNETCORE_URLS="http://localhost:$VCAP_APP_PORT"
echo "ASPNETCORE_URLS: '$ASPNETCORE_URLS'";
# Getting runnable dll.
runtimeconfigs=($(ls *.runtimeconfig.json));
if [ ${#runtimeconfigs[@]} -gt 1 ] ;
then
echo "Error! Found '${#runtimeconfigs[@]}' *.runtimeconfig.json files! Expecting only one. Files: '${runtimeconfigs[@]}'.'" 1>&2;
exit 1;
fi;
if [[ ${#runtimeconfigs[@]} -eq 0 ]] ;
then
echo "Error! Can't find *.runtimeconfig.json file!" 1>&2;
exit 1;
fi;
exeFile=$(echo "${runtimeconfigs[0]//.runtimeconfig.json/}")
if [ -f $exeFile ]
then
echo "starting '$exeFile'...";
exec "./$exeFile" --urls $ASPNETCORE_URLS;
exit;
fi
dllFile=$(echo "${runtimeconfigs[0]//.runtimeconfig.json/.dll}")
if [[ !(-e $dllFile) ]] ;
then
echo "File '$dllFile' is not found." 1>&2;
exit 1;
fi
exec ./dotnet $dllFile --urls $ASPNETCORE_URLS;
, HANA XSA , Linux HANA XSA. SAP (SAP Co-Innovation Lab). , .
- , SAP Labs CIS