在生产环境迁移至Kubernetes的过程中,有一个服务和其他服务不太一样,该服务主要用于和底层SAP系统做数据交换和同步,SAP提供了SAP Java Connector(SAP JCo)的开发库来连接SAP系统。

非容器环境下Linux

Jco本质上是基于RFC的ABAP和JAVA进程间通讯组件,和其他组件不同,并不是引入一个Jar包就解决问题,从官网下载的包里包含2个文件,Jar包和本地Native库:

  • libsapjco3.so
  • sapjco3.jar

必须要在系统环境变量加载Native库才能驱动Jar包

echo "export LD_LIBRARY_PATH=/你的目录" >> /etc/profile
# 生效
source /etc/profile

如此Java应用运行后便能够成功连接SAP系统。

容器环境下

由于需要迁移至Kubernetes环境下,所以分析后需要做到如下三点:

  1. 定义volume把jco文件夹做hostpath挂载至Pod内

    在宿主机上传jco文件夹后,做挂载

截屏2021-06-02 下午4.30.02

这里为了方便使用的是Kuboard工具,并没有直接编辑yaml资源文件。如果不是专业Kubernetes运维,其实个人建议使用一些图形管理工具会更加高效一点。

  1. 配置环境变量LD_LIBRARY_PATH

    截屏2021-06-02 下午4.34.08

  2. 由于并不想把所有机器都上传jco文件夹,所以考虑还是选出2-3台机器加标签后,把此应用限制一下调度主机范围

    截屏2021-06-02 下午4.35.29

做完上述三点后,于是启动,sap连接正常,就这样。


朱世伟
7 声望7 粉丝