在全球范围内,容器化对虚拟化的胜利带来了在不同计算环境中运行的应用程序之间的性能和可靠性。 容器的概念是它们隔离软件代码及其所有依赖项,以确保任何基础设施的一致性和一致性。 与许多其他云平台一样,亚马逊正在迅速完善其弹性 Kubernetes 服务,以满足 AWS 客户不断增长的计算需求。
尽管 Amazon Elastic Kubernetes Service 本身是一项完全托管、安全可靠的 Kubernetes 服务,但它仍然需要大量手动配置来管理集群。 为了确保您的应用程序在这种环境中的性能,您需要使用 NCache. NCache 是一种内存缓存解决方案,可通过改善 EKS 集群中的延迟来提高应用程序的性能并提高可扩展性。
NCache 更多信息 容器部署 NCache EKS 文档
NCache 弹性 Kubernetes 服务中的部署架构
基本结构如何 NCache 适合您的 EKS 集群非常简单。 您在 AWS 云上有一个经典的负载均衡器,它将 HTTP 请求路由到在 EKS 集群中运行的入口控制器。 在此集群中,您的缓存集群正在运行 NCache 多个 pod 内的服务器。 这些 pod 映射到一个 缓存发现服务 这允许客户端访问正在运行缓存服务的集群 pod。 您可以在多个 pod 上部署多个应用程序,它们都将通过此缓存发现服务连接到缓存集群。
在此 EKS 集群中,您还有一个 NCache 远程监控网关 服务。 这是一个 NGINX 入口控制器,它提供负载均衡器配置,以将流量降低到启用粘性会话的特定 pod。 集群的其余部分由各种客户端应用程序组成,每个应用程序都在自己的部署环境中。
请求流和 EKS 集群的结构 NCache 部署在其中如下图所示。
NCache 更多信息 容器部署 NCache EKS 文档
因此,事不宜迟,让我带您逐步了解如何部署 NCache 在您的 AWS Elastic Kubernetes 集群中。
步骤1:建立 NCache 资源
使用所有功能 NCache 在您的 Amazon Kubernetes 集群中为您提供,您现在的直接步骤应该是部署 NCache EKS 中的资源。 部署 NCache 将允许您在集群中执行所有管理操作。
你可以部署 NCache 在某些 YAML 文件的帮助下。 这些文件中的每一个都包含在无缝工作中发挥作用的特定信息 NCache 在 EKS 内。 这些文件是:
- NCache 部署文件: 此文件包含需要使用的所需 pod 和图像的实际规范。 此信息包括副本数、映像存储库、所需端口等。
- NCache 服务文件: 此文件在部署之上构建服务。 该文件的主要目的是从服务器公开部署。
- NCache 入口文件: 此文件包含在客户端应用程序和在 Kubernetes 集群内运行的 Web 管理器之间创建粘性会话所需的信息。
这些是您需要部署的基本 YAML 部署 NCache EKS 集群内的服务。 在所有这些文件中,最重要的是 NCache 部署 YAML 文件。 该文件如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
kind: Deployment apiVersion: apps/v1beta1 metadata: name: ncache-deployment labels: app: ncache spec: replicas: 2 template: metadata: labels: app: ncache spec: nodeSelector: "beta.kubernetes.io/os": linux containers: - name: ncache image: docker.io/alachisoft/ncache:enterprise-server-linux-5.0.2 ports: - name: management-tcp containerPort: 8250 - name: management-http containerPort: 8251 - name: client-port containerPort: 9800 |
通过在 AWS CLI 中执行以下命令创建此部署后,Kubernetes 将创建在 回复 标签。 在每个 pod 上,您将拥有一个正在运行的容器。 制作此容器的图像随 图片 钥匙。 在您的情况下,这将是通往 NCache enterprise 放置的服务器 码头工人。 该 港口 标签包含所有需要暴露的端口 NCache 服务在集群中运行。
1 |
kubectl create -f [dir]/filename.yaml |
请参阅 NCache 文档 创建 NCache 资源 在 EKS。
NCache 更多信息 容器部署 NCache EKS 文档
步骤2:建立 NCache 发现服务
上一步引导您设置服务器端 NCache. 成功执行之后,您需要创建一个发现服务来公开您的 NCache 资源到客户端应用程序。
在 Kubernetes 集群之外,成功的客户端通信需要静态 IP 地址。 无论多么方便,在 Kubernetes 集群内,每个部署的 pod 在运行时都被分配了一个动态 IP 地址,客户端仍然不知道该地址。 这种异常会导致集群内部出现通信问题,客户端应用程序无法识别 NCache 服务器。 在这里,您需要在 EKS 集群中提供无头发现服务 NCache 客户出现。
此无头服务通过公开 IP 地址来解决此问题 NCache 服务器到客户端应用程序。 这些客户端使用这些 IP 创建所需的缓存句柄并开始执行缓存操作。
要让所有客户端轻松连接到无头服务,请按照提供的方式创建和部署缓存发现 YAML 文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
kind: Service apiVersion: v1 # depends on underlying Kubernetes version metadata: name: cacheserver labels: app: cacheserver spec: clusterIP: None selector: app: ncache # same label as provided in the ncache deployment yaml ports: - name: management-tcp port: 8250 targetPort: 8250 - name: management-http port: 8251 targetPort: 8251 - name: client-port port: 9800 targetPort: 9800 |
使这项服务成为无头服务的是标签 集群IP 设置为“无”。 此行为表明此服务特定于 NCache 并且无法在 EKS 集群之外访问。 标签 选择器 设置 ncache 帮助该服务识别标签为 ncache 以便他们的 IP 可以暴露给客户端。
稍微了解一下事情是如何工作的:对于连接到服务器的客户端,只有一个 IP 地址就足够了,因为它连接的一台服务器共享属于该缓存集群的所有服务器的 IP 地址。
准备好部署文件后,在 AWS 命令行界面中执行以下命令。
1 |
kubectl create -f [dir]/cachediscovery.yaml |
有关详细的分步部署,请遵循我们的文档 创建发现服务.
NCache 更多信息 容器部署 NCache EKS 文档
第 3 步:创建访问权限 NCache 管理
暴露允许 NCache 从集群外部管理访问,你需要设置的是一个入口控制器。 此控制器抽象了您通常在容器部署中使用的基本负载均衡器策略。 一个经常使用的入口控制器是 NGINX 控制器,它在部署时负责创建所有需要公开的服务 NCache 集群外的服务。
要在 EKS 集群中部署 NGINX 入口控制器,您需要在其中创建多个文件部署。 这些文件包含 Kubernetes 集群安装功能齐全的 NGINX 负载均衡器所需的所有必要信息。
下面列出了所需的文件,并简要说明了它们的作用以及为什么需要它们:
- NGINX 强制文件: 这些文件是运行 NGINX 控制器所需的基础文件; 在您的情况下,它将是您的 EKS 集群内的负载均衡器。 你可以找到这个文件 GitHub上.
- NGINX 服务文件: 此文件包含有关第 7 层负载均衡器的信息,它将 NGINX 入口控制器公开到 Kubernetes 环境之外。
- NGINX 配置文件: 此文件包含配置 Layer7 负载均衡器所需的所有参数。
在上述文件中, NGINX 服务 YAML 是包含创建负载均衡器所需的端口信息的文件 NCache 管理访问。 该文件的内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
kind: Service apiVersion: v1 metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx annotations: ... spec: type: LoadBalancer selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx ports: - name: http port: 80 protocol: TCP targetPort: http - name: https port: 443 protocol: TCP targetPort: http |
所有这些文件都创建为 YAML 文件,这些文件非常容易部署在 EKS 集群中。 您需要做的就是在 AWS 配置的命令行工具中为每个文件运行以下命令。
1 |
kubectl create -f [dir]/<filename>.yaml |
执行时,此命令将创建一个负载均衡器,在集群内部启用粘性。 有关详细信息,请参阅我们的文档 创建访问权限 NCache 管理.
NCache 更多信息 容器部署 NCache EKS 文档
第四步:创建缓存集群
现在您已经有了集体部署和服务,您需要创建一个 NCache cluster 让您的客户端连接到缓存服务器。
当你部署 NCache 服务,你秘密部署 NCache Web Manager 也与 NCache 管理操作。 你可以用这个 NCache Web 管理器来创建您的集群缓存并使用它。 您所要做的就是按照提供的这些基本步骤 NCache 文档 创建集群缓存 你很高兴! 但是,这里需要你全神贯注的是,你需要添加的服务器节点的 IP 应该与 Kubernetes 集群分配的服务器 Pod 的 IP 相同。 您可以通过执行以下命令获取这些 IP 的列表及其详细信息 获取豆荚 AWS 命令行工具中的命令。
第 5 步:创建客户端应用程序部署
NCache 客户端部署,就像 NCache 资源部署,指定正在运行的客户端镜像容器的数量、放置应用程序的私有 Dockerhub 存储库、端口等。 此信息可帮助您创建功能齐全的客户端容器。
要从私有存储库获取客户端应用程序,您每次都需要提及登录凭据。 为了避免这种出现的麻烦,您可以创建一个 秘密.yaml 包含您的登录信息的文件,该登录信息需要填充一次并且可供每个调用客户端资源访问。 参考 NCache 文档 创建客户端部署 获取步骤和 YAML 文件的详细视图。
同样,实际的客户端部署也是以 YAML 文件的形式创建的。 此文件将包含在 EKS 集群中部署客户端应用程序(或应用程序;您的调用)所需的所有信息。 该文件的内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
kind: Deployment apiVersion: apps/v1beta1 # it depends on the underlying Kubernetes version metadata: name: client spec: replicas: 1 template: metadata: labels: app: client spec: nodeSelector: "beta.kubernetes.io/os": linux containers: - name: client image: # Your docker client image here ports: - name: app-port containerPort: 80 # In case of NCache client installation, add the following remaining ports - name: management-tcp containerPort: 8250 - name: management-http containerPort: 8251 - name: client-port containerPort: 9800 |
在从镜像部署容器时,接下来的过程是这样的:
1. 从存储库访问图像。
2. 客户端机密文件从 NCache 用于身份验证的秘密资源。
3. 映像被拉取并部署在一个容器中,其中运行着客户端应用程序。
在这里,由于我们有部署而不是服务,您需要做的是进入 pod 并在 AWS CLI 中执行批处理命令以开始运行客户端应用程序。
1 |
kubectl exec --namespace=ncache client-podname -- /app/<clientapplication>/run.sh democlusteredcache cacheserver |
NCache 更多信息 容器部署 NCache EKS 文档
步骤6:监控 NCache 簇
到目前为止,您已经完成了充分利用所需的一切 NCache 在您功能齐全、正在运行的 Amazon EKS 集群中。 您可以获得高可用性、可扩展性、可靠性等等——不仅仅是通过部署 NCache 在集群中。 但猜猜怎么了? 这还不是全部 NCache 提供。
听我说。 在 EKS 集群内部,在所有操作、存储和数据传输的中间, NCache 让您 监控缓存活动 通过各种工具。 这些工具可帮助您更好地了解集群的运行状况、性能、网络故障等。
看一看 NCache 网络监视器 用于实时性能的图形描述和 NCache 统计报表 用于性能统计。
第 7 步:缩放 NCache 簇
为您提供极致的可扩展性, NCache 允许您在运行时向上或向下扩展集群以提高应用程序的整体性能。 例如,如果您觉得缓存集群接收请求过于频繁,节点无法跟上不断增加的事务, NCache 允许您添加多个服务器以适应负载。 要了解如何在运行时从缓存集群中添加或删除服务器节点,同时留在 EKS 集群中,请查看我们的文档 在 EKS 中添加缓存服务器 和 从 EKS 中删除缓存服务器.
让我们把它全部收起来
从这篇文章中,您将体验到一步一步的演练 NCache 在 Amazon EKS 集群中部署。 这里突出的问题是你为什么需要 NCache 在已经完整的容器环境中? 好吧,让我快速为您简要介绍一下。
- 内存解决方案: NCache 显着提高部署应用程序的性能。
- 线性可扩展性: NCache 当缓存集群上的负载增加时会派上用场。
- 极其灵活: NCache 动态自动重新平衡数据,无需任何客户端干预。
您将所有这些都放在 AWS EKS 已经提供的功能之上,并为自己打造了一个运行应用程序的一流环境。那么,您还在等什么? 部署 NCache 现在就在您的 EKS 集群中,亲眼见证奇迹。