运用 NCache in Azure Kubernetes Service (AKS)

带有 Docker 容器的 Azure Kubernetes 集群

Azure Kubernetes Service (AKS) 是微软基于Kubernetes容器编排器的开源容器应用平台,用于企业应用的开发和部署。

如果您正在使用 .NET/.NET Core 或在 Azure Kubernetes 中运行的 Java 并且您想要使用 NCache 为了提高峰值事务负载的性能和可扩展性,请放心 NCache 完全支持这种环境。

观看此视频,了解部署有多容易 NCache 将 Azure Kubernetes 集群作为 Docker 部署。

AKS 是一种托管容器服务,可在 Microsoft Azure 公共云上使用。 它是围绕由 Docker 提供支持的应用程序容器构建的,而编排和管理服务由 Kubernetes 提供,今天我将向您展示部署和使用的分步详细信息 NCache 在这个平台上。 让我们快速开始吧。

NCache 在 AKS 中部署

首先,让我们回顾一下 NCache 在 AKS 中部署。

使用-ncache-in-azure-kubernetes-service-aks
运用 NCache in Azure kubernetes Service (AKS)

这是一个典型的部署 NCache 在 AKS。 我正在展示具有不同应用程序部署的单个 Kubernetes 集群以及 NCache 集群部署。 我有一个在不同 Pod 上使用 Docker Image 的 Java Web App。 我还有一个 Java Web 服务,再次部署在不同的 Pod 上,这些 Java 应用程序正在使用 Java 客户端 NCache 连接到我的缓存集群。

同样,我有一个 ASP.NET Core 使用 Docker Image 部署在不同 Pod 上的 Web 应用程序,你知道,这些实例正在使用 .NET Core 安装 NCache 连接我的缓存集群。 我的缓存集群也是基于 Docker Image 的,它是基于 Linux 的 Image NCache,可在我们的网站和 Docker Hub 上找到,这就是我用来在不同 Pod 上创建缓存集群的方法。

另外,我有这个 NCache 远程监控网关。 这是一个网关,用于监控和管理从这个 Kubernetes 集群外部执行的操作,以管理和监控我的缓存集群,我有这个缓存发现服务。 这是一个无头服务,它也被命名为我的客户端连接的地方,它管理与我的缓存集群的所有类型的服务器通信。 我不需要知道 Pod 10、11 和 12 的 IP 地址。客户端应用程序只连接到这个 Discovery Service,然后它将管理这些命令或这些操作到底层 Pod 的发现和路由。

我将向您展示有关如何实际创建此发现服务和远程监控网关以及缓存集群和这些客户端应用程序部署的分步详细信息,一旦我们掌握了我们的手或部分。 但就目前而言,这是一个典型的部署 NCache 在 AKS 中使用单个 Kubernetes 集群。

演示环境设置

以下是我们演示环境设置的详细信息。

演示环境详细信息
演示环境详细信息

我正在使用 2 NCache 托管我的缓存集群的服务器,我将运行 2 个客户端应用程序来连接到此缓存。 我正在使用基于 Linux 的 Docker Image NCache 对于这个部署,它用这个标签“enterprise-server-linux-5.0.1”表示,这个标签也需要成为你的 Docker 拉取命令的一部分才能使用这个镜像。 我正在使用 NCache Enterprise 5.0 服务包 1 和 .NET Core 释放它。 您可以在 Windows 和 Linux 环境上进行部署,但对于在 AKS 中的部署,我在此版本中使用基于 Linux 的映像。 我正在使用将使用 Java 客户端的 Java 应用程序 NCache 然后我用 1 .NET Core 应用程序以及正在使用 .NET Core 客户 NCache. 在这些应用程序中,我将使用 CRUD 操作,这将代表我的应用程序的应用程序数据缓存用例。

部署 NCache 服务器

第一步是部署 NCache AKS 中的服务器。 所以,让我们快速开始吧。 好的,我已登录到 Azure 管理门户,这就是我要开始进行所有部署的地方。

天蓝色管理门户
Azure 管理门户

我需要做的第一件事是创建一个资源组,然后我将继续进行所有部署,点击“添加”,我将真正开始这一步。

创建资源组
创建资源组

保持一切简单,“查看 + 创建”,点击“创建”,然后创建一个资源组,我将在其中部署我的 Kubernetes 服务。 所以,如果我刷新一下。 之后,我们将继续创建我们的 Kubernetes 服务。

创建 kubernetes 服务
创建 Kubernetes 服务

如果我单击它,我应该能够查看其中的所有部署。

Kubernetes 服务
Kubernetes 服务

目前它是空的,接下来我们需要创建“Kubernetes”,对,我现在可以创建 Kubernetes 服务。

搜索和创建 kubernetes 服务
搜索和创建 Kubernetes 服务

创建-kubernetes-services-step2
创建 Kubernetes 服务

顺便说一句,我也可以通过 Azure Cloud Shell 执行此操作,它就在此处并“重新连接”。 或者我可以使用方便的管理门户。 因此,我将选择我的订阅,然后资源组需要是“aksdemo”,即我们最近创建的一个。 我将把 Kubernetes 集群命名为“myaks”,如您所见,它也会自动预填充 DNS 名称。 我要选'(US) 美国中部'作为我的位置。 需要指定“Kubernetes 版本”,我将使用默认值,但您可以选择任何想要的,其余的我会保持一切简单。 对于“主节点池”,我需要指定“节点大小”和“节点数”。 因此,您可以选择标准,也可以更改尺寸。 这是您的 Kubernetes 服务实际托管的地方,对吧。 因此,您需要为具有足够内存、CPU 和网络资源的服务提供正确的选择。

创建一个 kubernetes 集群
创建 Kubernetes 集群

它为您提供了许多选项供您从 VM 大小中进行选择,然后根据不同的参数(例如 RAM、CPU、磁盘和其他参数)进行选择。 因此,我将选择“B2ms”,因为这是我可以用于此测试的最小值,并且“节点数”对我来说将是 2,但您可以提出任何节点数,例如 2 或 3这就是托管 Kubernetes 集群的服务器数量,对吧。

选择一个虚拟机
选择虚拟机

因此,在经历了这些之后,我将选择“Review + create”,这将创建我的 Kubernetes 集群。

审查和创建集群
查看和创建集群

它将在 Microsoft Azure 中执行一系列验证,但您可以看到不同的设置,例如“Scale”、“Authentication”、“Networking”。 您可以将所有内容保持默认或根据需要进行更改,您还可以查看监控,如果您点击“查看 + 创建”,它将开始验证过程。

验证过程开始
验证过程开始

因此,在完成最终验证后,我将点击“创建”。 在 Microsoft Azure 中实际完成此操作需要 5 到 10 分钟,但之后我们应该能够开始部署。 如您所见,您的部署正在进行中,一旦完成,状态标记就会变为绿色,因此,我需要在此时暂停此视频,并在完成后返回。 如您所见,它已经完成了。

部署完成
部署完成

您的部署在 5 到 10 分钟后完成,我现在可以转到“资源”,基于此,我可以看到我的 AKS 服务,即“myaks”,您可以成功创建。

检查来自资源的 aks 服务
从资源中检查 AKS 服务

如果单击它,我可以看到该服务的所有部署详细信息,例如 Kubernetes 版本、API 服务器地址,然后它的状态是成功的,位置就是我们指定的位置。 至此,我们的 Kubernetes Service 就完成了。

部署细节
部署详情

NCache 服务器端部署

回到部署图,我们的 Azure Kubernetes 服务现在是在 Microsoft Azure 中创建的,但目前它是空的。 下一步是继续 NCache 服务器端部署来部署我们的缓存集群。 那么,让我们看看如何做到这一点。

好的,我的 AKS 群集现已配置完毕,可用于部署。 我们使用了 Azure 管理门户,但对于下一步,对于所有部署,我们将使用 Azure Cloud Shell,我们需要做的第一件事是指向此 shell 中的 AKS 群集。 所以,为此我会跑 'az aks get-credentials' 命令。 因此,在“az aks”中是针对 Azure Kubernetes 服务的。 “get-credentials”命令允许我将当前上下文带到“myaks”,这是我们的 AKS 服务,在“aksdemo”中,这是创建它的资源组的名称。 因此,这将允许我指向“myaks”Azure Kubernetes 服务,我可以开始管理和部署操作。

azure-cloud-shell-指向-aks
Azure Cloud Shell:指向 AKS

所以,我们需要审查的第一件事是,是否有任何现有的部署? 所以,我会继续快速运行命令,即 'kubectl 获取 pod' 这会给我现有的 Pod。 因此,在默认命名空间中没有找到资源,这表明还没有部署。

检查现有部署
检查现有部署

但是我们需要部署 NCache 服务器,为此,我会带上 NCache YAML 文件,这就是我要使用的 NCache 服务器端部署。 所以, kind 被选为 'Deployment',名字当然是 'ncache',所以,这就是我将在所有服务器端部署中提到的内容 NCache 在其他服务和客户端应用程序中也是如此。 我们使用的镜像是基于 Linux 的 Docker Image NCache 我正在使用两个副本。 本质上,我们有两个 Pod,其中 NCache 集群将被部署以启动,然后我们可以在稍后阶段添加更多 Pod。 Docker Image,让我们多谈谈它。 我们使用的 Docker Image 是 Linux 5.0.1 Docker Image,可以在我们的 Alachisoft Docker 中心页面。

ncache-yaml 文件
NCache YAML 文件

我们有一个“docker pull”命令,默认情况下会为您获取 Windows 映像,但您也可以使用 Linux,通过在此处使用此标签“enterprise-server-linux-5.0.1”来获取您这就是我正在使用的。

docker-pull-命令-alachisoft-网站
'Docker Pull' 命令开启 Alachisoft 您的网站

所以,让我们继续添加这个 YAML 以开始使用 NCache 服务器端部署。 所以,我要跑 'kubectl 创建 -f' 并提供此 YAML 文件以开始使用 NCache 服务器配置和负载 NCache 我们的 AKS 集群中基于 Linux 的映像。 给你, NCache 部署已创建。 就是这么简单。

ncache-服务器端部署
NCache 服务器端部署

作为部署的一部分,这还打开了一些管理和监控端口,8250 和 8251。因此,所有 Pod 都会打开这些端口以用于管理和监控,并且也可以从 Kubernetes 集群外部打开,然后我们也有'client-port' 是端口 9800,它是主要的客户端到服务器通信端口,我们的应用程序将使用它并连接到这个缓存集群。 此时,我们的 NCache EKS 中的服务器端部署完成。

管理和监控端口
管理和监控端口

接下来我们将创建一个发现和管理网关,然后我们将立即返回并查看所有这些部署。

缓存发现服务

现在我们的 NCache 在 AKS 中成功部署服务器 Pod,下一步是在 AKS 中创建缓存发现服务以及管理网关。 发现服务将允许我的客户端应用程序发现并连接和使用我们将创建的缓存集群中的底层 Pod,然后我们的远程监控网关将允许来自该 Kubernetes 集群外部的任何系统管理员管理和监控缓存集群的这些 Pod .

ncache-发现服务
NCache 发现服务

所以,让我们回顾一下这里的所有步骤。 现在为了创建这些服务,我在这里有这个“services.yaml”文件,可以让我创建这些服务。 因此,我正在创建两个服务一个网关以及一个缓存发现服务。 网关用于监控和管理,而发现服务用于客户端或服务器通信,用于路由和发现到缓存集群中的底层 Pod。

服务-yaml-文件
服务.yaml 文件

所以,第一个服务是我们的“网关”服务,就在这里。 该类型被选择为“服务”,它将 8251 端口映射到下划线的 Pod,这是为了让外部世界真正能够连接到在线 Pod 进行管理和监控,这就是我选择该类型的原因'LoadBalancer' 和应用程序选择器是 'ncache'和'sessionAffinity'是一个很重要的概念。 我们需要选择它作为“ClientIP”。 这是一个强制性步骤,它允许我与底层 Pod 的连接保持粘性。 我们正在使用基于 Web 的管理工具来管理和监控 NCache 豆荚。 这会创建一个会话,因此,如果第一个请求发送到 Pod 一个,它需要粘在该 Pod 上,因此该会话对于后续调用也保持不变。 因此,您必须将此网关服务的“sessionAffinity”位设置为“ClientIP”。 这是一个强制性步骤,然后您就可以开始部署它了。

第二个服务是一个无头服务,用于自动发现缓存服务器节点以进行客户端到服务器的通信。 我选择了名称为“cacheserver”。 同样,这种类型是“服务”,所以,它又是一个服务,一个无头服务,真正使它无头的是“clusterIP”,它被选为“无”。 所以,它没有任何IP。 它只管理客户端应用程序的内部发现和路由以建立连接 NCache 豆荚。 以及它如何连接到 NCache 豆荚? 在选择器的帮助下 'ncache' 这就是我们使用的 NCache 部署以及我们部署时 NCache 服务器 Pods,我们基本上有映射,你知道,对于这个发现服务,我们有一个 8250 到底层 Pods 的映射,8251 映射,然后是 9800 用于客户端-服务器通信。

无头服务
无头服务

所以,我们将继续加载这个 YAML 文件,再次使用相同的 'kubectl 创建' 使用 /f 命令,我们将在 AKS 集群中部署这两个服务。 我认为有一个错字“aksconfigs/services.yaml”。 如果我按此输入,我应该能够看到创建的两个服务。 网关服务和缓存服务器,这是一个自动发现服务 NCache 服务器 Pod。

kubectl-创建
Kubectl 创建

现在,如果我快速向你展示 'kubectl 获取 pod' 命令,这会告诉我,首先 NCache 服务器 Pod,因为它们是两个将拥有并获得服务器端部署的 Pod。 你可以看到我们有 NCache 具有这些 ID 的 Pod,我们也为它们分配了 IPS。 它们正在运行,第一个 Pod 使用 10.244.1.4 IP 运行,然后我们还有第二个 Pod 使用 .0.9 IP。

kubectl 获取 pod
Kubectl 获取 Pod

我也会向你展示 'kubectl 获取服务' 您可以只说“svc”,这将关闭我们创建的所有服务。 所以,我们有“缓存服务器”,这是一个无头服务,然后我们还有“网关”,它还有一个 IP 地址,允许我们实际监控和管理我们的 NCache 借助来自外部世界的端口映射的 Pod。 因此,您可以看到 8251 实际上也是为此打开的,并且缓存服务器没有显示 IP,这本质上是客户端应用程序连接到缓存集群的无头服务。

kubectl 获取服务
Kubectl 获取服务

因此,使用这个外部 IP,我应该能够登录到管理控制台。 所以,我正在使用这个 8251 启动我们的基于 Web 的管理工具,我认为有,让我改变它,8250,是的,你去吧。 所以,我登录了这个管理工具,事实上,我已经连接到 10.244.0.9 服务器,这确保了我们的服务实际上是完全正常的。 我们能够实际监控和管理 NCache,因为我们能够从我的机器上打开管理工具。 下一步是真正开始创建缓存集群。 因此,我们将对此进行审查。 至此,我们所有的部署都完成了。

监控和管理ncache 从管理控制台
监控和管理 NCache 从管理控制台

创建缓存集群

我们现在可以继续创建我们的 NCache 接下来缓存集群。 我现在将通过单击“新建”来创建一个缓存集群,这将通过创建向导打开缓存。

创建缓存集群
创建缓存集群

我只想将我的缓存集群命名为“democache”。 在这里保持一切默认。 第一个 IP 是自动建议的,第二个 IP 是我可以从这里选择的 1.4,把它带回这里,然后我应该也可以添加它,然后点击“下一步”会继续并给我更多参数。 保持一切默认,仅此而已。 我的缓存集群现已创建。 如果我单击“查看详细信息”,我可以看到它已完全创建。

启动演示缓存
启动演示缓存

因此,我将继续在两个 Pod 上启动此缓存集群,这将启动我的缓存集群,您可以看到状态消息显示集群功能齐全并且也已启动。

我现在可以打开监控工具,它又是一个基于 Web 的监控工具 NCache 这将允许我监控我的服务以及客户端,它显示这两个 Pod 之间完全连接,这就是完全连接状态。 所以,就集群创建而言,我很高兴。 一堆参数,此时没有连接客户端应用程序,但是一旦我们部署并运行客户端应用程序,我们就可以实际运行它。

2 个 Pod 之间的完全连接状态
2 个 Pod 之间的完全连接状态

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

下一步是部署和运行客户端应用程序以连接到我们在 AKS 中的缓存群集。 好的,现在我们还需要部署部署客户端,为此我有另一个容器,我将部署它,它是一个同时具有 Java 和.NET Core 捆绑到其中的客户端应用程序。

因此,我将继续加载“client.yaml”文件,一旦创建此部署,我将拥有我的两个应用程序,它们将准备好用于我的缓存集群。 为了验证这些是否,你知道,被正确部署,我首先会运行 'kubectl 获取 pod' 命令,这将向我显示正在创建容器,对。 所以,目前的状态是,我可以看到一个额外的容器,所以,这是一个好的开始。

所以,我的客户端部署正在进行中,如果你还记得我们之前也运行过这个命令 'kubectl 获取 pod' 以前我们只有 NCache 在那里部署两个 Pod,但现在我们在 Client Deployment 下有一个额外的 Pod,它有自己的一组参数,并且会分配一些 IPS。 所以,如果我再运行一次,它就可以正常运行,并且它有自己的 IP 分配给它,带有这个特定的 ID,就在这里。

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

现在为了运行客户端应用程序来连接这个缓存集群,我会运行 'kubectl 执行' 提供这个 Pod 的 ID,然后我会进入这里的目录 app/tester,我首先要运行 .NET Core 客户和我将运行该 run.sh 脚本。 这将允许我旋转 .NET Core 将连接到我的缓存的应用程序。 我还需要缓存的名称“democache”,然后我还需要缓存发现服务,即“cacheserver”。 这将使我能够发现并连接到其中的所有 Pod NCache 部署,这是其中的一个功能 NCache 客户端,如果您仅指定此发现服务,它将自动连接到所有 Pod。 所以,我的“democache”已经被初始化了。

演示缓存已初始化
演示缓存已初始化

如果我回到监控工具,我应该会看到一些参数,一些性能矩阵。 一个客户端也完全连接到 .9 和 .4,我们有每秒请求数。 所有计数器上每个缓存操作、添加、获取和更新的平均微秒都显示活动,我们现在显示了一个客户端进程,它是 1.5,这是我们的客户端 Pod 的 IP,它连接到两个服务器。 9 以及 4。 因此,这表明我们的客户端应用程序容器和 .NET Core 应用程序完全能够连接到我们的缓存集群。

客户端进程完全连接
客户端进程:完全连接

让我们运行 Java 应用程序,为此我只需将 'dotnet' 更改为 'java' 并运行它。 所以,那只会在其中运行另一个脚本,然后运行'NCacheTester.jar 文件,因此,这是一个 Java 文件,它将连接并开始执行创建/读取和更新/删除操作。 因此,目前正在执行 CRUD 操作。

运行-java-应用程序
运行 Java 应用程序

所以,如果我再次回到监控,我现在有两个客户端进程。 我们看到四个,因为有两个服务器。 因此,每个客户端进程都与所有服务器建立连接,但是您有两个客户端针对我们的缓存集群运行,并且缓存集群中有两个 Pod。

缓存集群中的两个 pod
缓存集群中的 2 个 Pod

我们有一些更高级的,你知道的,“报告仪表板”,例如服务器端报告视图,它向我显示服务器端计数器和来自两个 Pod 的副本,然后我们还有客户端报告,也显示客户端计数器。 因此,在 AKS 中,我们能够完全管理和监控我们的客户端和服务器部署,而不会出现任何问题。

报告仪表板
报告仪表板

向外扩展 NCache 簇

接下来我要演示的是扩展你的 NCache AKS 平台中的缓存群集。 这将帮助您提高您的请求处理能力 NCache 一次也是如此。 让我们看看这里涉及的所有步骤。

现在,为了从 2 个节点扩展到 3 个节点,并且在运行时也不停止 AKS 中的缓存集群或停止此类应用程序,我们可以简单地继续演示这一点。 因此,首先我将向您展示当前的部署。 让我们看看我们当前拥有的 Pod,如果你注意到我们有两个 Pod NCache 部署 .4 和 .9 IP 地址,然后我需要在此处运行此命令,我将副本数设置为 3 并为 'deployment/ncache' 这应该会自动旋转一个新的 Pod 并将其添加到 ncache/部署。 我认为有一个错字,所以,让我通过修复它的部署来运行它,这已经奏效了。 所以, NCache 部署已扩展。

现在我们有 3 个 Pod NCache 部署。 因此,如果我再次运行相同的命令,我现在应该会在其中看到一个额外的 Pod NCache 部署。 所以,以前,我们有两个部署 NCache .4 和 .9,现在我们添加了第三个 Pod。 除了 4、9 我们还有 6。 所以,这是我们添加的第三个 Pod,它现在功能齐全。

向外扩展-ncache-簇
向外扩展 NCache 簇

我注意到我们没有停止应用程序或缓存本身。 现在我只需要将这个 Pod 添加为 Pod NCache 缓存集群。 因此,它被部署在 AKS 中。

将吊舱添加到ncache-缓存集群
将 Pod 添加到 NCache 缓存集群

我会在这里添加它,然后我会继续“开始”加入缓存集群,这将在运行时完成。 因此,没有任何延迟,它将加入正在运行的缓存集群,并且它也完全正常运行。

运行缓存集群
运行缓存集群

如果我很快回到监控工具,您现在会看到第三个节点在运行时加入。 所以,.6 现在完全加入了。 它拥有所有数据。 您可以看到计数,然后所有请求都完全分布到 3 个节点而不是 2 个。

添加了第三个节点
添加了第三个节点

您还可以看到集群状态,6 也与 2 个连接到它的客户端完全连接,我们现在显示 3 个服务器而不是 2 个的计数器,客户端进程现在再次连接到所有 3 个服务器到 .6、.4 , 到 9 为好。

全连接第三节点统计
全连接第三节点统计

结论

因此,这就完成了 AKS 的自动缩放部分,您可以在运行时添加 Pod,而不必停止缓存或连接到它的任何客户端。 一切都在运行时完成。

这将我们带到视频的结尾。 我们已经成功演示了如何部署 NCache 在 AKS 平台中以及它的易用性 NCache 从您的 Java 和 .NET Core 应用程序。 我们还审查了您如何有效地管理和监控您的 NCache AKS 中的部署。 我希望这可以帮到你。

请与我们分享您的反馈或问题 Alachisoft SUPPORT support@alachisoft.com。 谢谢!

联系我们

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