使用Redis Enterprise玩转Kubernetes和Redis

本文讲的是使用Redis Enterprise玩转Kubernetes和Redis【编者的话】本文介绍了Redis Enterprise的使用入门。

Kubernetes简化了容器编排,并得到了广泛应用。使用最新的Redis Enterprise Docker容器,可以很容易地搭建一个Redis Entreprise集群。

【3 天烧脑式 Docker 训练营 | 上海站】随着Docker技术被越来越多的人所认可,其应用的范围也越来越广泛。本次培训我们理论结合实践,从Docker应该场景、持续部署与交付、如何提升测试效率、存储、网络、监控、安全等角度进行。

在以下步骤中,我们将使用4.5版本的Redis Enterprise容器。你可以在Docker Hub上获取该镜像的更多信息,以及如何在本地部署该容器。

在谷歌云上使用Kubernetes部署Redis Enterprise

我们将会通过以下步骤来搭建Redis Enterprise集群

  • 第一步: 在谷歌云上创建Kubernetes集群
  • 第二步: 在Kubernetes集群中部署Redis Enterprise容器
  • 第三步: 搭建Redis Enterprise集群
  • 第四步:创建一个Redis数据库,并测试连通性

注意: 我们故意简化了部署过程,非常适合Kubernetes和Redis Enterprise的快速入门。当然,这是不能用于生产环境的。

要求:以下步骤是在MacOS上使用最新的谷歌云SDKkubectl工具。在其他操作系统上,具体步骤略有不同。

第一步: 在谷歌云上创建Kubernetes集群

首先,搭建好命令行环境。

  • 登录你的谷歌云环境。

gcloud auth login

  • 获取默认项目的ID。你可以使用以下命令列举并设置项目前后文。注意,如果你没有强制指定ID的话,那么你就会得到类似speedy-lattice-166011这样的随机名字。

gcloud projects list gcloud config set project speedy-lattice-166011

  • 获得默认的区域名字(zone/geography),在该区域中部署你的集群。你可以使用以下命令列举并设置区域。

gcloud compute zones list
gcloud config set compute/zone europe-west1-c} 

现在搭建并运行Kubernetes集群。

在谷歌云控制台中,在左边的导航栏中点击Container Engine,创建一个新集群。

给你的Kubernetes集群取一个名字,并将集群大小设置为3个节点。我们会使用这3个节点来部署Redis Enterprise集群。我建议你将每个节点设置为2个核和7GB内存以上。

注意:创建集群需要几分钟。在继续以下步骤之前,请确保Kubernetes集群已经创建成功。

从最佳实践来说,Redis Enterprise pods应该分散在Kubernetes集群的不同物理节点上,从而保证在节点故障时的高可用性。如果将多个Redis Enterprise节点放置在同一个物理节点上,可能造成多个节点同时宕机并造成数据丢失。为了保证这种分散性,我们需要更新Kubernetes集群至1.6.2版本以上。你可以在刚刚部署的Kubernetes集群的details页面上升级版本。

注意:顺便说一下,如果你更喜欢使用命令行的话,你也可以使用以下命令。

gcloud container clusters create cluster-1 --num-nodes=3 -m n1-standard-2
gcloud container clusters upgrade cluster-1 --master --cluster-version=1.6.2

最后,你需要运行Kubernetes控制台,并启动Kubernetes代理。在终端窗口中,运行以下命令。

连接Kubernetes集群:

gcloud container clusters get-credentials cluster-1

输出如下:

# Fetching cluster endpoint and auth data.
# kubeconfig entry generated for cluster-1.

最后,启动Kubernetes代理:

kubectl proxy

第二步: 在Kubernetes集群中部署Redis Enterprise容器

你可以使用容器YAML文件来搭建Redis Enterprise集群。YAML示例文件在

kubectl apply -f redis-enterprise.yaml

如果部署成功了,输出如下:

# deployment "redispack-deployment" created 
# service "redispack" created 

现在,你可以看到Kubernetes集群中部署的容器节点了。运行以下命令来查看节点列表:

kubectl get po 

输出如下:

NAME READY STATUS RESTARTS AGE
redispack-deployment-709212938-765lg 1/1 Running 0 7s
redispack-deployment-709212938-k8njr 1/1 Running 0 7s
redispack-deployment-709212938-kcjd7 1/1 Running 0 7s

第三步:搭建Redis Enterprise集群

我们现在已经准备好了,可以创建Redis Enterprise集群。这里有一个小小的更改,从而使得容器网络正常运行。我们需要将CSS绑定在0.0.0.0。你需要在每个容器中,运行以下命令(pod名字可以从kubectl get po的输出中获得):

kubectl exec -it redispack-deployment-709212938-765lg -- bash
# sudo su -
# sed ‘s/bind 127.0.0.1/bind 0.0.0.0/g’ -i /opt/redislabs/config/ccs-redis.conf
# cnm_ctl restart} 

部署第一个节点或者Redis Enterprise集群:

kubectl exec -it redispack-deployment-709212938-765lg "/opt/redislabs/bin/rladmin" cluster 
create name cluster.local username cihan@redislabs.com password redislabs123 flash_enabled

我们需要第一个节点的IP地址,使得其他节点也能加入到集群中。

kubectl exec -it redispack-deployment-709212938-765lg ifconfig | grep "inet addr"

在我的例子中,输出是10.0.2.10。然后,把剩下的两个节点加入到集群中:

kubectl exec -it redispack-deployment-709212938-k8njr "/opt/redislabs/bin/rladmin" cluster join 
username cihan@redislabs.com password redislabs123 nodes 10.0.2.10 flash_enabled

kubectl exec -it redispack-deployment-709212938-kcjd7 "/opt/redislabs/bin/rladmin" cluster join 
username cihan@redislabs.com password redislabs123 nodes 10.0.2.10 flash_enabled

第四步:创建一个Redis数据库,并测试连通性

下面,我们就可以创建数据库,并连接上。以下curl命令可以用来在端口12000上创建数据库。数据库的名字为sample-db

kubectl exec -it redispack-deployment-709212938-765lg bash
# curl -k -u "cihan@redislabs.com:redislabs123" --request POST --url "https://localhost:9443/v1/bdbs" --header 'content-type: application/json' --data '{"name":"sample-db","type":"redis","memory_size":1073741824,"port":12000}'  

我们可以使用redis-cli工具来测试数据库连接性,如以下命令:

注意:你可以使用以下命令来删除集群:

gcloud container clusters delete cluster-1

原文链接:Getting Started With Kubernetes and Redis using Redis Enterprise(翻译:夏彬)

原文发布时间为:2017-05-30

本文作者:夏彬

本文来自合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:使用Redis Enterprise玩转Kubernetes和Redis

时间: 2024-10-23 22:52:22

使用Redis Enterprise玩转Kubernetes和Redis的相关文章

《Redis官方文档》使用Redis作为LRU缓存

原文链接  译者:boyhou (WeChat:HouYongBo923) 如果你使用redis作为缓存,当添加新数据时,若有内存大小等限制,系统默认会根据一定的规则自动清理旧数据.这种处理方式在开发社区中众所周知,因为它也是非常流行的缓存系统 memcached 的默认处理方式. LRU(LRU全称是Least Recently Used,即最近最久未使用)实际上只是Redis支持的内存回收策略中的一种.这篇文章将要讲述Redis的 maxmemory 配置选项,该配置选项用来限制 Redis

分布式缓存技术redis学习系列----深入理解Spring Redis的使用

关于spring redis框架的使用,网上的例子很多很多.但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀的一个框架. Spring-data-redis为spring-data模块中对redis的支持部分,简称为"SDR",提供了基于jedis客户端API的高度封装以及与spring容器的整合,事实上jedis客户端已经足够简单和轻量级,而spring-data-redis反而具有&qu

NoSQL之Redis(二)---Java操作Redis存储自定义类型数据

NoSQL之Redis(二)---Java操作Redis存储自定义类型数据            Redis简介            Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案.            Redis从它的许多竞争继承来的三个主要特点: Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型. Redis可以将数据复制到任意数量的从服务器.           

Redis缓存之Set使用及redis遇到的一些问题

Redis缓存Set使用 在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加.删除或判断某一元素是否存在等操作.需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操作.Set可包含的最大元素数量是4294967295. 和List类型不同的是,Set集合中不允许出现重复的元素,这一点和C++标准库中的set容器是完全相同的.换句话说,如果多次添加相同元素,Set中将仅保留该元素的一份拷贝.和List类型相比,Set

阿里云Redis云数据库(KVStore For Redis)控制台介绍

阿里云Redis云数据库(KVStore For Redis)控制台介绍 实例展示页面 实例展示页面其中会会展示实例id.状态.已用内存及配额,可用区,创建时间,付费方式,网络类型等信息,其中已用内存及配额信息由于底层系统根据采集信息进行一个离线汇总的,所以有一个时间的延时,这个延时会在10分钟左右,对于需要查看实时信息的同学建议登录DMS进行查看,可以点击进入实例之后有一个实例登录按钮进行登录,目前经典网络及VPC网络的实例都已经支持DMS的管理,同时由于VPC网络需要申请一个特殊通道,对于第

【Redis】Java中使用Jedis操作Redis(Maven导入包)、创建Redis连接池

转载请注明出处http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 如果我们使用Java操作Redis 需要确保已经安装了 redis 服务及 Java redis 驱动. Maven项目可以直接在pom.xml中加入jedis包驱动: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.cli

redis之(十二)redis数据的持久化

[一]redis的数据为什么要持久化 --->redis的存取数据性能高,是由于将所有数据都存储在内存中.当redis重启的时候,存储在内存中的数据就容易丢失. --->把redis作为数据库使用. --->把redis作为缓存服务器,但缓存被穿透后会对性能造成很大的影响,所有缓存同时失效会导致缓存雪崩,从而使服务无法响应. --->因此我们希望redis能将数据从内存中以某种形式同步到硬盘,使得重启后可以根据硬盘中的纪录恢复数据,这一过程就叫做持久化   [二]redis的持久化

redis之(十六)redis的cluster集群环境的搭建,转载

最近redis已经比较火了,有关redis的详细介绍,网上有一大堆,我这里只作简单的介绍,然后跟大家一起学习Redis Cluster 3.0的搭建与使用.Redis是一款开源的.网络化的.基于内存的.可进行数据持久化的Key-Value存储系统.它的数据模型建立在外层,类似于其 它结构化存储系统,是通过Key映射Value的方式来建立字典以保存数据,有别于其它结构化存储系统的是,它支持多类型存储,包括String. List.Set.Sort set和Hash等,你可以在这些数据类型上做很多原

redis之(二十一)redis之深入理解Spring Redis的使用

关于spring redis框架的使用,网上的例子很多很多.但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀的一个框架.这里,我们就对比之前对spring orm中对hibernate的使用,来理解使用spring redis的使用.(本文章不做redis基本命令使用的讲解) Redis集群明细文档 ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis Redis系列-安装