dot Redis 8 来了——而且是开源的

了解更多

使用 Minikube 和 Redis Enterprise 进行本地 Kubernetes 开发

Kubernetes 是一个开源容器编排系统,用于部署、扩展和管理容器化应用程序。 Kubernetes 是 Cloud Native Computing Foundation (CNCF) 托管的项目。 在非常高的层面上,它包含两种类型的资源:主节点(集群协调器)和节点(运行容器化应用程序的工作节点)。

Minikube 是一个用于在本地机器上运行 Kubernetes 集群的工具。 Minikube 是你笔记本电脑上 VM 内的单节点 Kubernetes 集群。 Minikube 可用于试用 Kubernetes 或进行日常开发。

Redis Enterprise 产品扩展了 Redis,Redis 是 Docker 容器中最流行的数据库。 Redis Enterprise 为组织提供高性能、低延迟和高可用性。 这篇博文将向您展示设置 Minikube 并在您的本地笔记本电脑上运行 3 节点 Redis Enterprise 集群所需的基本步骤。

安装

我们将使用 homebrew 包管理器在你的本地笔记本电脑上安装 minikube 和 kubernetes 命令行工具。

$ brew cask install minikube
$ brew install kubernetes-cli

启动 Minikube

Minikube 提供了更改虚拟机 (VM) 驱动程序的功能。 对于这篇博文,我们使用了 vmwarefusion 驱动程序。

$ minikube start --memory 12288 --disk-size 30g --vm-driver vmwarefusion

命令的输出应该如下所示

Minikube startup output
Minikube 启动输出

验证 Minikube 安装

我们将使用 Kubernetes 命令行工具 kubectl 来验证 Minikube 安装。 你可以使用以下命令验证 Minikube 安装

$ kubectl cluster-info

输出应如下所示

Kubernetes master is running at https://192.168.21.147:8443

Minikube 上的 Redis Enterprise

安装

Minikube 现在正在您的笔记本电脑上运行,并且 kubectl cli 能够成功查询主节点以获取集群的状态。 我们现在将在 Minikube 中部署具有三个副本集的 Redis Enterprise 服务。 Redis Enterprise 部署和服务的 yaml 配置文件可以在这里找到。

我们将使用 yaml 在 Kubernetes 集群中创建部署和服务。

$ kubectl apply -f redis-enterprise5.yaml
deployment "redis5" created
service "redis5" created

我们可以通过发出以下命令来验证是否创建了三个 pod

Kubectl get pods -o wide
Output of kubectl get pods
输出:kubectl get pods -o wide

集群配置的先决条件

我们需要将 CCS 的绑定从本地环回地址 127.0.0.1 更改为 0.0.0.0。

$ kubectl exec -it <name-of-your-pod> bash
$ sed 's/bind 127.0.0.1/bind 0.0.0.0/g' -i /opt/redis/config/ccs-redis.conf
$ /opt/redis/bin/supervisorctl restart ccs

集群配置

我们需要通过登录到 pod 并发出 `create cluster` 命令来将 Redis Enterprise 集群设置为主节点。

$ kubectl exec -it <name-of-your-pod> bash

我们将使用 rladmin 实用程序来创建新集群

root@redis5-7749c97f4d-vk6rn:~# /opt/redis/bin/rladmin cluster create name cluster.local username <your_email_addr> password <your_passwd>

我们将使用 rladmin 实用程序将 2 个节点加入到集群

root@redis5-7749c97f4d-hcggk:~#/opt/redis/bin/rladmin cluster join username <your_email_addr> password <master_password> nodes <master_IP_addr>

root@redis5-7749c97f4d-p74nx:~#/opt/redis/bin/rladmin cluster join username <your_email_addr> password <master_password> nodes <master_IP_addr>

在集群上创建数据库

我们将使用 Redis Enterprise 的 Rest API 在主节点上创建一个数据库

curl -k -u "[email protected]:<password>" --request POST --url "https://localhost:9443/v1/bdbs" --header 'content-type: application/json' --data '{"name":"demo-db","type":"redis","memory_size":536870912,"port":11000,"data_persistence":"aof","replication":true,"shards_placement":"sparse","proxy_policy":"all-master-shards"}'

我们可以使用 Redis Enterprise 下载中包含的 rladmin 实用程序查看集群和数据库的状态

rladmin cluster status
rladmin 集群状态
  • 你可以在我们的 文档页面上阅读更多关于 Redis Enterprise 的分片放置策略和代理策略的信息。
  • Redis Enterprise 默认包括复制和持久性。 你可以在我们的 Redis Enterprise 数据库文档页面上阅读关于持久性的信息。

Redis Enterprise 仪表板访问

你可以通过设置本地端口和 pod 端口之间的安全隧道来访问 Redis Enterprise 仪表板,该仪表板在端口 8443 上运行。 隧道建立后,你可以通过 https://127.0.0.1:8443 访问 Redis Enterprise 仪表板

kubectl port-forward <my-pod-name> <localport>:<pod-port>

示例:kubectl port-forward redis5-58dc568c56-7qk22 8443:8443

Redis Enterprise Dashboard
Redis Enterprise 仪表板 – 节点
Redis Enterprise Dashboard - Database
Redis Enterprise 仪表板 – 数据库

本地访问 Redis Enterprise

你可以使用节点的 IP 和创建数据库期间指定的端口连接到你的数据库

$ redis-cli -h <ip_addr_of master_node> -p <11000>

下一步是什么

我们正在开发一个 Kubernetes 原生的 Redis Enterprise 容器,它将利用 Kubernetes 1.8 及以上版本中引入的新原语。 我们正在发布新版本的 Redis Enterprise 容器镜像,该镜像将利用新的持久集和存储类原语,同时提供更好的集群引导体验。 与此同时,了解更多关于 Redis Enterprise 产品的信息。