运用 NCache 在 AWS Elastic Kubernetes 服务 (EKS) 中

使用 Docker 容器的弹性 Kubernetes 集群

AWS Elastic Kubernetes Service (EKS) 是一项 Amazon Web Services (AWS) 管理的 Kubernetes 服务,可让您设置 Kubernetes 集群以及支持它的底层基础设施的所有最新补丁和升级。

如果您正在使用 .NET/.NET Core 或在 EKS 中运行的 Java 应用程序并且您想使用 NCache 以在峰值事务负载期间提高其性能和可扩展性,然后请放心 NCache 完全支持这种环境。

观看此视频,了解部署有多容易 NCache 到您的 Amazon Elastic Kubernetes 集群中。

NCache 在 EKS 中部署

在 AWS 云中,我们在 Ingress Controller 前面有一个经典的负载均衡器,它在 Kubernetes 集群中运行。 由该 Ingress Controller 实现的 Kubernetes Ingress 资源将来自负载均衡器的 HTTP 请求路由到集群内运行的不同服务。 现在在任何这样的分布式应用程序环境中,我们也需要一个分布式缓存解决方案,它在执行快速读取操作时提供可扩展性、可靠性和高可用性,这就是 NCache 用武之地。

ncache-deployment_eks

NCache 可以部署到您的 EKS 集群中 NCache 在 Linux 容器中运行的服务器,这些容器托管在 Kubernetes Pod 中。 这些IP地址 NCache 服务器由 缓存发现服务,这是一个 Kubernetes 无头服务,客户端应用程序使用来自那里的 IP 地址来创建缓存句柄,它们可以使用这些句柄连接到 NCache 集群并开始执行管理和 CRUD 操作。

以下是我们今天将要进行的演示的重要参数。 这 NCache 将部署到 EKS 集群的服务器将使用以下 Docker 映像 'alachisoft/ncache' 带有标签 '企业服务器-linux-5.0.2'.

演示环境详细信息

获取所有图像 NCache 提供,让我过来 Alachisoft 网站。 选择 '下载' 选项卡,然后单击“NCache'。 这将带你到 NCache 下载中心。 向下滚动到“Doc​​ker Hub”部分,我只需单击顶部的第二个条目,这将引导我到 Docker中心 的页面 Alachisoft NCache. 在这里你可以看到所有的图像 NCache 提供。 回到参数,将使用的图像具有 NCache Enterprise 5.0 SP2 版带有 .NET Core 安装。 我们将创建的集群缓存将使用副本拓扑分区。 将使用的两个测试应用程序如下。 我们有一个 .NET Core 应用程序和一个 Java 应用程序,在这两种情况下,我们将展示应用程序数据缓存方面 NCache. 我们将从 2 开始 NCache 服务器,然后将该数量增加到 3。为了证明这一点,我们可以在 NCache 集群状态而不影响客户端性能。

创建 EKS 集群

我们现在准备开始我们的演示。 首先要做的当然是设置 EKS 基础架构,我们将在其上部署我们的 NCache 服务器和客户端资源。 在这里,我在 EKS 服务的 AWS 入门页面上。 在这里,您将找到启动并运行您的第一个 EKS 集群所需的所有信息。 该信息包括先决条件,例如所需的 IAM 角色和策略。

创建-eks-集群

此外,它还介绍了有关创建 VPC 的详细信息,您将在该 VPC 上部署 EKS 集群。

创建-eks-cluster2

在下方,您将找到有关 AWS CLI 的安装和使用以及用于访问和管理 Kubernetes 集群的“kubectlc”命令行实用程序的信息。

创建-eks-cluster3

还包括有关 Kubernetes 托管节点组的信息,它将提供工作节点,您将在这些节点上部署 Kubernetes 资源。 我将使用此处提供的信息在具有 2 个公共子网和 2 个私有子网的 VPC 上创建一个 EKS 集群,一旦我的 EKS 集群启动并运行,我将继续进行其余的演示。

使用入门页面中提供的这些步骤,我已经为我的 EKS 集群创建了 IAM 角色和 VPC 基础设施。 现在,我将完成创建 EKS 基础架构的这些步骤。

aws-管理控制台

因此,为此,我在我的 AWS 管理控制台上,我将单击 Elastic Kubernetes Service 链接。 这将带我进入 EKS 服务的主页。 在页面左侧窗格的“Amazon EKS”标题下方,我将单击“集群”链接。

aws-管理控制台2

现在,我没有任何 EKS 集群。 为此,我将单击“创建集群”链接。

创建-eks-cluster4

在这里,我将提供配置参数。 所以,我将从 EKS 集群的名称开始,它是 'eks-ncache'。 我将为“Kubernetes 版本”选择“1.14”。 我还要选择“IAM 角色”和“VPC”。 我将选择安全组,其他所有内容都将保持默认,我将为 EKS 集群提供一个标签,一旦完成所有这些,我将单击“创建”按钮。

现在,该 EKS 集群 正在创建,我要暂停视频,因为这需要一些时间。 在我的 EKS 集群页面上,我可以看到“eks-ncache' 活跃'。 第二步是创建管理节点组,为此我将向下滚动到“节点组”部分,然后单击“添加节点组”按钮。

创建节点组

我将从节点组的名称开始提供参数,并且我将选择“IAM 角色”。

角色

我将选择“SSH 密钥对”,单击“下一步”。

ssh 密钥对

在这里,我将使用以下“AMI 类型”,对于“实例类型”,我将使用“t3.small”。 在此之后,我将单击“下一步”。

ami型

我将选择 2 个工作节点,单击“下一步”。

工作节点

在这里查看参数后,我将单击“创建”开始创建我的节点组。 我们在这里看到节点组现在处于创建状态,所以我要暂停视频。 我们现在在这里看到我的 EKS 节点组处于“活动”状态,并且我的 EKS 基础架构的创建已完成。

创建节点组2

在我的客户端机器的 PowerShell 终端中,我将使用 AWS CLI 创建我的“kubeconfig”文件,以访问 EKS 集群,并且“kubeconfig”文件已创建。 现在,我将确认我与 EKS 集群的连接,我们会看到 EKS 托管节点组中包含的两个工作节点。

CMD

部署入口控制器

我要做的第一件事是部署 Ingress Controller 所需的 Kubernetes 资源。 回到架构图,这里显示的 Ingress Controller 将用于实现我们稍后将部署的 Ingress 资源。

ncache-deployment_eks

在我们的演示中,我们使用 NGINX Ingress 控制器,因为它很受欢迎。 首先,我们将部署在任何 Kubernetes 环境中运行 NGINX Ingress Controller 所需的强制资源,然后我们将部署 AWS 特定资源,这将在 NGINX Ingress 前启动一个经典负载均衡器控制器并允许 NGINX 入口控制器通过这个经典的负载均衡器接收来自 Kubernetes 集群外部的 HTTP 请求。

我现在要部署 NGINX 入口控制器所需的强制资源。 可以通过遵循突出显示部分中给出的 URL 找到这些资源的定义。 所以,不用多说,让我们开始吧,强制性资源已经部署完毕。 这里我打开了 YAML 文件,我将使用它来部署与 NGINX Ingress 控制器相关的两个资源。

雅姆

第一个资源是负载均衡器服务,它将用于在 NGINX 入口控制器前启动经典负载均衡器。 从注释部分可以看出,负载均衡器将在第 7 层运行,将 HTTP 请求路由到 NGINX 入口控制器。 接下来我们将部署的另一个资源是“ConfigMap”资源,它包含 NGINX 入口控制器在 Kubernetes 集群中的行为方式的配置参数。

我现在将使用 'kubectl 应用' 命令和资源已经部署。 让我来到我的 EC2 仪表板并确认负载均衡器已启动。 如果我刷新此页面,您将看到引入了一个新的负载均衡器。 让我点击“负载均衡器”链接,这里是 NGINX 入口控制器前面的负载均衡器。

ec2-仪表板

部署 NCache 服务器

我们现在将部署 NCache EKS 集群的服务器。 再次回到架构图,这些 NCache 服务器用于在 EKS 集群中创建集群缓存。 这是用于部署的 YAML 文件 NCache 服务器到 Kubernetes 集群。 正如我们所看到的,这是一个部署资源,将旋转到 NCache EKS 集群中的服务器。 以下是使用的端口 NCache 服务器将监听。 我们有一个值为 8250 的“management-tcp”端口,在该端口上 NCache 服务器将监听客户端连接请求。 我们有一个值为 8251 的 'management-http' 端口, NCache 网络管理员 将监听,然后我们有一个值为 9800 的“客户端端口”,在该端口上 NCache 服务器将监听客户端 CRUD 操作请求。

yaml2

使用 'kubectl 应用' 命令,我现在要创建 NCache 我的 EKS 集群上的服务器 Pod,现在让我们检查 Pod 的状态。 Pod 正在运行。 我们有 2 NCache 具有此处显示的 IP 地址的服务器。

cmd2

NCache 发现服务

我们现在将部署 NCache 发现服务. Cache Discovery Service 是一个无头服务,运行在 NCache 服务器 Pod。 它的功能是解析客户端应用程序在连接集群缓存时将使用的 IP 地址。

ncache-deployment_eks3

这是 Kubernetes 无头服务的 YAML 文件。 正如我们所见,服务的名称将是“cacheserver”。 查看“选择器”和“端口”部分,我们看到该服务将运行在 NCache 服务器 Pod。

yaml3

我现在要在我的 EKS 集群中使用 'kubectl 应用' 命令。 现在服务已经创建好了,让我们看看它的描述。 我们可以看到服务解析的“端点”包含 NCache 服务器,其 IP 地址显示在突出显示的部分,与此处显示的 IP 地址相同。

cmd3

NCache 经理服务

我们将使用 NCache 网络管理员, 创建我们的集群缓存并向其中添加节点。 为了暴露 NCache Web Manager 我们将部署另一个 Kubernetes 服务资源。 这是 Kubernetes 服务的 YAML 文件,它将公开 NCache 网络管理员

yaml4

正如我们所见,服务的“名称”将是“ncache' 并且从 'ports' 部分中,我们看到 80 端口将映射到目标端口 8251,在该端口上 NCache Web Manager 将监听。 查看“选择器”部分,我们看到该服务将在 NCache 服务器 Pod。 该服务将在我们稍后部署的 Ingress 资源的后端注册,然后我们将能够从浏览器访问 Web 管理器。

我现在要创建 NCache 我的 EKS 集群中的服务资源使用 'kubectl 应用' 命令。 现在服务已经创建,让我们再看一下描述,我们在这里看到“端点” NCache 服务解析为,是 NCache 服务器。

cmd4

NCache 入口

我们现在将部署 Kubernetes Ingress 资源,该资源将公开 NCache 来自我们浏览器的网络管理器。 Ingress 资源将由 NGINX Ingress 控制器实现。 这 NCache 将在 Ingress 后端注册的服务将允许通过负载均衡器的 HTTP 请求路由到 NCache 网页管理器 NCache 管理目的。 这是我们将部署到 EKS 集群的 Ingress 资源的 YAML 文件。

yaml5

Ingress 的“名称”是“ncache' 并且从注释中我们可以看到,它将使用 NGINX Ingress 控制器来实现。 此外,这些注释表明我们将使用粘性会话与 NCache 网络管理器。 因此,为了避免在不同的 Web 管理器实例上运行 NCache 服务器,我们可以轻松地创建集群缓存并在同一会话中向其中添加节点。 从规则部分,我们看到 URL 的根路径,将映射到 NCache 服务,它暴露了 NCache 网络管理器。

我们现在要在 EKS 集群上创建 Ingress 资源。 现在已经创建了 Ingress,让我们检查一下它的状态。 我们现在看到 Ingress 已启动并正在运行。 让我们检查 Ingress 的 URL。 URL 在“地址”部分中给出。 如果我在浏览器上复制此 URL,我将能够访问我的 Web Manager。 所以,来到我的浏览器,点击这里并粘贴 URL,现在我们已经成功访问​​了 NCache Kubernetes 集群内的 Web 管理器。

创建缓存集群

我们现在要创建我们的集群缓存。 我现在将完成使用创建集群缓存的步骤 NCache 网络管理器。 因此,首先,单击此处显示的“新建”按钮。

创建缓存集群

现在我们要为集群缓存命名,“democache”,单击“下一步”。

缓存名称

我们将在“异步”模式下使用副本拓扑的分区。

异步模式

现在我要添加 NCache 服务器到集群缓存。 因此,单击“+”按钮并添加其他服务器。 添加两个服务器后,单击“下一步”。

ncache-服务器

保持一切默认,最后单击“完成”。 我们现在在主窗口中看到“democache”已成功创建。

演示缓存创建

要启动它,请勾选缓存名称旁边的复选框,然后按“开始”。

演示缓存创建2

缓存已成功启动。 我现在要单击“监视器”选项卡以打开 NCache 监控工具。

ncache-监控工具

首先,从“集群健康”部分,我们看到集群缓存是全连接的。

集群健康

我们在这里看到不同的服务器端性能计数器。 在“计数”部分,我们看到帐户为 0,因为我们还没有启动任何客户端应用程序。 来到“客户仪表板”,在这里您将能够监控 NCache 客户端性能计数器。

客户仪表板

在“报告仪表板”中,您可以获得服务器端和客户端计数器的整体视图。

报告仪表板

部署和运行客户端应用程序

创建集群缓存后,我们现在将运行我们的客户端应用程序。 这是 YAML 文件,它将用于将客户端应用程序部署到 EKS 集群。

yaml6

从名为 client 的部署资源中可以看出,我们将有一个 Pod,客户端应用程序将在其上运行。 这里显示了使用的“图像”,它包含 .NET Core 和 Java 应用程序以及 NCache 客户端安装,以便我们收集客户端 NCache 性能计数器。 我现在要将我的客户端资源部署到 EKS 集群。 现在资源已经创建好了。 让我们检查一下 Client Pod 的状态。 我们要做的第一件事是启动 .NET Core 应用。 在客户端 Pod 中,我将运行以下 Shell 命令, “/app/testerdotmet/run.sh democache 缓存服务器” 这需要两个参数,即缓存的名称,即“democache”和无头服务的名称,即“cacheserver”。

命令

我们现在看到 .NET Core 应用程序正在运行。 来到 NCache 监视器,我们在“集群运行状况”部分看到我们有 1 个客户,并且我们看到计数器活动有所增加。 计数正在增加,因为 .NET Core 应用程序正在将数据转储到缓存中,并且在“客户端进程”部分中这里是 Pod 所在的 IP .NET Core 应用程序正在运行,以及应用程序的进程 ID。 来到“客户端仪表板”,我们在这里看到我们有来自客户端 Pod 的客户端计数器。

客户端仪表板2

在“报告仪表板”中,我们可以全面了解这些服务器和客户端性能计数器。

报告仪表板2

现在,该 .NET Core 应用程序正在运行,我们现在要启动 Java 应用程序。 就像与 .NET Core 应用程序,在客户端 Pod 中,我将运行以下 shell 命令,该命令采用与 .NET Core 应用程序,即缓存的名称和无头服务的名称。

cmd5

我们在这里看到,Java 应用程序正在运行。 回到 NCache 监视器,我们现在在这里看到有 2 个客户端,然后到“客户端进程”部分,我们看到客户端进程的另一个条目,它与 Java 应用程序相关。 所以,有了这个,我们已经能够确认应用程序可以连接到 NCache 在同一个 Kubernetes 集群上运行的服务器。

向外扩展 NCache 簇

我们现在要扩展我们的 NCache 簇。 我要做的第一件事是扩展 NCache 部署到 3,这样我就可以将另一台服务器添加到缓存集群中。 现在部署已经扩展,让我们看看服务器 Pod IP 地址,这里我们看到另一个 NCache 服务器添加到 Kubernetes 集群。

cmd6

要添加新的缓存服务器,我将单击缓存名称前面的“查看详细信息”链接。

新缓存服务器

回到“服务器节点”部分,我将单击“添加”按钮并输入第三台服务器的 IP 地址。

添加 IP 地址

现在已经添加了服务器,我要启动它,为此我要勾选 IP 地址旁边的复选框,然后单击“启动”。

开始

现在缓存服务器已经启动,让我们回到主窗口,在这里我们看到 3 个服务器用于“democache”。

3台服务器

进入监控窗口和“计数”部分,由于负载平衡策略生效,每个节点的计数已经下降。

服务器仪表板

回到主窗口,我将单击缓存名称旁边的省略号按钮,然后选择“显示统计信息”,这样我可以获得缓存集群的另一个视图。 在这里,我们看到了活动和副本分区,通过将数据放在同一个缓存集群中的另一个服务器节点备份的 1 个服务器节点中来提供可靠性。

统计

这将我们带到本次演讲的结尾。 如果您对今天进行的演示有任何疑问,或者想了解更多关于 NCache 提供,请随时与我们联系 support@alachisoft.com。 谢谢。

联系我们

联系电话
©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。