kubernetes 的 Apache Ignite C# 客户端连接出错
Error in Apache Ignite C# Client connection for kubernetes
我们按照 中建议的解决方案作为胖客户端连接 kubrenetes 中的 ignite 集群 运行。
我们在启动时收到以下错误消息:
无法启动:System.EntryPointNotFoundException:无法在共享库 'libcoreclr.so' 中找到名为 'dlopen' 的入口点。在 Apache.Ignite.Core.Impl.Unmanaged.Jni.DllLoader.NativeMethodsCore.dlopen(字符串文件名,Int32 标志)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.DllLoader.Load(字符串 dllPath)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.LoadDll(字符串文件路径,字符串简单名称)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(字符串 configJvmDllPath,ILogger 日志)在Apache.Ignite.Core.Ignition.Start(IgniteConfiguration 配置文件)
我们在 docker 图像中包含了 openjdk8。这是 docker 文件。
#FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#WORKDIR /app
#EXPOSE 80
#EXPOSE 443
ARG REPO=mcr.microsoft.com/dotnet/runtime
FROM $REPO:3.1.24-alpine3.15 AS base
# Install ASP.NET Core
RUN aspnetcore_version=3.1.24 \
&& wget -O aspnetcore.tar.gz https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz \
&& aspnetcore_sha512='1341b6e0a9903b253a69fdf1a60cd9e6be8a5c7ea3c4a52cd1a8159461f6ba37bef7c2ae0d6df5e1ebd38cd373cf384dc55c6ef876aace75def0ac77427d3bb0' \
&& echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \
&& tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \
&& rm aspnetcore.tar.gz
RUN apk add openjdk8
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk
ENV PATH="$JAVA_HOME/bin:${PATH}"
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
...
RUN dotnet restore "API.csproj"
COPY . .
WORKDIR "API"
RUN dotnet build "API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "API.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "API.dll"]````
Alpine Linux 上的 Ignite 问题已在昨天发布的 2.13 中修复 - 请尝试升级。
https://issues.apache.org/jira/browse/IGNITE-16749
https://www.nuget.org/packages/Apache.Ignite/2.13.0
此外,设置LD_LIBRARY_PATH环境变量:
- openjdk8:
ENV LD_LIBRARY_PATH /usr/lib/jvm/default-jvm/jre/lib/amd64/server
- openjdk11:
ENV LD_LIBRARY_PATH /usr/lib/jvm/default-jvm/jre/lib/server
不要设置 JAVA_HOME
和 PATH
- 没有必要。
除了 Pavel 的回应之外,您可以利用 GridGain 版本中提供的基础图像,而不是构建您自己的 docker 图像:https://hub.docker.com/r/gridgain/community-dotnet
GridGain 社区版基于 Apache Ignite 构建,同样免费且开源。您可以查看官方文档以获取更多详细信息。
我们按照
我们在启动时收到以下错误消息:
无法启动:System.EntryPointNotFoundException:无法在共享库 'libcoreclr.so' 中找到名为 'dlopen' 的入口点。在 Apache.Ignite.Core.Impl.Unmanaged.Jni.DllLoader.NativeMethodsCore.dlopen(字符串文件名,Int32 标志)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.DllLoader.Load(字符串 dllPath)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.LoadDll(字符串文件路径,字符串简单名称)在 Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(字符串 configJvmDllPath,ILogger 日志)在Apache.Ignite.Core.Ignition.Start(IgniteConfiguration 配置文件)
我们在 docker 图像中包含了 openjdk8。这是 docker 文件。
#FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#WORKDIR /app
#EXPOSE 80
#EXPOSE 443
ARG REPO=mcr.microsoft.com/dotnet/runtime
FROM $REPO:3.1.24-alpine3.15 AS base
# Install ASP.NET Core
RUN aspnetcore_version=3.1.24 \
&& wget -O aspnetcore.tar.gz https://dotnetcli.azureedge.net/dotnet/aspnetcore/Runtime/$aspnetcore_version/aspnetcore-runtime-$aspnetcore_version-linux-musl-x64.tar.gz \
&& aspnetcore_sha512='1341b6e0a9903b253a69fdf1a60cd9e6be8a5c7ea3c4a52cd1a8159461f6ba37bef7c2ae0d6df5e1ebd38cd373cf384dc55c6ef876aace75def0ac77427d3bb0' \
&& echo "$aspnetcore_sha512 aspnetcore.tar.gz" | sha512sum -c - \
&& tar -oxzf aspnetcore.tar.gz -C /usr/share/dotnet ./shared/Microsoft.AspNetCore.App \
&& rm aspnetcore.tar.gz
RUN apk add openjdk8
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk
ENV PATH="$JAVA_HOME/bin:${PATH}"
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
...
RUN dotnet restore "API.csproj"
COPY . .
WORKDIR "API"
RUN dotnet build "API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "API.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "API.dll"]````
Alpine Linux 上的 Ignite 问题已在昨天发布的 2.13 中修复 - 请尝试升级。
https://issues.apache.org/jira/browse/IGNITE-16749 https://www.nuget.org/packages/Apache.Ignite/2.13.0
此外,设置LD_LIBRARY_PATH环境变量:
- openjdk8:
ENV LD_LIBRARY_PATH /usr/lib/jvm/default-jvm/jre/lib/amd64/server
- openjdk11:
ENV LD_LIBRARY_PATH /usr/lib/jvm/default-jvm/jre/lib/server
不要设置 JAVA_HOME
和 PATH
- 没有必要。
除了 Pavel 的回应之外,您可以利用 GridGain 版本中提供的基础图像,而不是构建您自己的 docker 图像:https://hub.docker.com/r/gridgain/community-dotnet
GridGain 社区版基于 Apache Ignite 构建,同样免费且开源。您可以查看官方文档以获取更多详细信息。