数据持久化

DOCKER 05:数据持久化

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-26 15:40:18
本文主要谈谈数据如何持久化保存下来! 数据持久化 volume 在服务环境中,更多的时候我们想要的是将容器的某些数据保存下来,如服务的日志,MySQL 的数据等等。 如果不做其他的配置,在容器删除之后,数据也会随之删除,这显然不符合我们用户的需求。 查看本机的 volume: docker volume ls 默认情况下应该是空的,如果你的不是,可能是之前运行过 redis 的原因,因为我现在已经删除了所有容器。 这里以一个 MySQL 容器为例,其中涉及到的参数可以参考以下链接: https://github.com/docker-library/docs/tree/master/mysql 运行 MySQL 容器: docker container run -d --name mysql-demo -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 设置 MySQL 登陆不需要密码! docker container run -d --name mysql-demo -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 进入容器创建数据库: docker container exec -it mysql-demo /bin/sh 结果如图: 此时查看 volume 情况: docker volume ls

数据持久化之ConfigMap与secret的对比

我是研究僧i 提交于 2020-02-26 02:57:31
一、ConfigMap ConfigMap用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。和secret资源类似,不同之处在于,secret资源保存的是敏感信息,而configmap保存的是以明文方式存放的数据。 Secret和ConfigMap 相同点:都是用来保存一些信息数据的,可以被其他资源对象进行挂载使用。并且两个资源对象的创建方法及引用方法一样,都是以键值对的方法进行存储的。 不同点:Secret保存信息数据是以密文的形式保存的,保存一些敏感信息,如数据库的用户名及密码、认证密钥等。ConfigMap是用来保存一些不是太重要的数据的,是以明文形式保存的,当我查看详细信息时,是可以看的保存的数据的。 还有就是Secret与ConfigMap虽然挂载的方式一样,但是编写yaml文件时也存在着区别。 注意编写的缩进,与yaml大小写的使用。 二、Volumes挂载和环境变量方式引用资源。 相同点:都是引用资源,能对其数据进行使用。 不同点:Volumes挂载会随着资源对象内保存的数据的更新,而实时更新,不过会等待一段时间后更新。环境变量的方式引用不会实时更新数据,如果想要更新数据只能重新生成Pod。 ConfigMap资源的创建基本与secret资源类似 。 三、使用四种不同的方式创建ConfigMap资源: **1)通过 --from-literal

k8s数据持久化

我只是一个虾纸丫 提交于 2020-02-26 02:49:58
k8s数据持久化 Docker容器是有生命周期的,因此数据卷可以实现数据持久化 数据卷主要解决的问题: 数据持久性:当我们写入数据时,文件都是暂时性的存在,当容器崩溃后,host就会将这个容器杀死,然后重新从镜像创建容器,数据就会丢失 数据共享:在同一个Pod中运行容器,会存在共享文件的需求 存储类 (Storage class)是k8s资源类型的一种,它是有管理员为管理PV更加方便创建的一个逻辑组,可以按照存储系统的性能高低,或者综合服务质量,备份策略等分类。不过k8s本身不知道类别到底是什么,它这是作为一个描述。 存储类的好处之一就是支持PV的动态创建,当用户用到持久性存储时,不必再去提前创建PV,而是直接创建PVC就可以了,非常的方便。 存储类对象的名称很重要,并且出了名称之外,还有3个关键字段 Provisioner(供给方): 及提供了存储资源的存储系统。k8s内建有多重供给方,这些供给方的名字都以“kubernetes.io”为前缀。并且还可以自定义。 Parameters(参数):存储类使用参数描述要关联到的存储卷,注意不同的供给方参数也不同。 reclaimPolicy:PV的回收策略,可用值有Delete(默认)和Retain Volume: emptyDir(空目录): 使用情况比较少,一般只做临时使用,类似Docker数据 持久化的:docker

Redis 群集部署

妖精的绣舞 提交于 2020-02-26 02:31:12
一、Redis群集相关概念 Redis是从3.0版本开始支持cluter的,采用的是hash槽方式,可以将多个Redis实例整合在一起,形成一个群集,也就是将数据分散存储到群集中的多个节点上。 Redis的cluster是一个无中心的结构,在群集中,每个master的身份是平等的,每个节点都保存数据和整个群集的状态,并且知道其他节点所负责的槽,也会定时发送心跳信息,能够及时感知群集中异常的节点,并且采取投票的方式来决定该节点是否为不可用,若票数为群集中节点的半数以上,则认为该节点不可用,也正是因为此特点,所以要部署Redis群集,节点数量最少要三个及以上。 群集角色有master和slave,master之间分配slots(槽),槽点编号是0-16383(共16384个)。 默认情况下,每个群集节点有两个TCP端口在监听,一个是6379(用于监听客户端的访问连接),另一个是16379(用于群集之间的节点通信)。注意,防火墙需要放行这两个端口的流量。 Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。 Redis提供的这两种方式进行持久化,一种是RDB持久化

k8s数据持久化

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-26 02:24:31
k8s数据持久化 Docker容器是有生命周期的,因此数据卷可以实现数据持久化 数据卷主要解决的问题: 数据持久性:当我们写入数据时,文件都是暂时性的存在,当容器崩溃后,host就会将这个容器杀死,然后重新从镜像创建容器,数据就会丢失 数据共享:在同一个Pod中运行容器,会存在共享文件的需求 存储类 (Storage class)是k8s资源类型的一种,它是有管理员为管理PV更加方便创建的一个逻辑组,可以按照存储系统的性能高低,或者综合服务质量,备份策略等分类。不过k8s本身不知道类别到底是什么,它这是作为一个描述。 存储类的好处之一就是支持PV的动态创建,当用户用到持久性存储时,不必再去提前创建PV,而是直接创建PVC就可以了,非常的方便。 存储类对象的名称很重要,并且出了名称之外,还有3个关键字段 Provisioner(供给方): 及提供了存储资源的存储系统。k8s内建有多重供给方,这些供给方的名字都以“kubernetes.io”为前缀。并且还可以自定义。 Parameters(参数):存储类使用参数描述要关联到的存储卷,注意不同的供给方参数也不同。 reclaimPolicy:PV的回收策略,可用值有Delete(默认)和Retain Volume: emptyDir(空目录): 使用情况比较少,一般只做临时使用,类似Docker数据 持久化的:docker

k8s数据持久化之Secret

非 Y 不嫁゛ 提交于 2020-02-26 02:18:59
一、 Secret资源对象:解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。 用来保存一些敏感信息,比如数据库的用户名密码或者密钥。 Secret有三种类型: 1.Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中。 2.Opaque:base64编码格式的Secret,用来存储密码、密钥等。 3.Kubernetes.io/dockerconfigjson:用来存储私有docker registry的认证信息。 二,以实验测试的方式,创建4种secret资源。 姓名:class=lbs 密码:password=www.com 创建2个Pod,分别以挂载Volume的方式,和以环境变量env的方式去使用,secret2,和secret4. 1)通过 --from-literal(文字的): kubectl create secret generic **lbssecret1 (创建secret资源的名)**--from-literal=class=lbs --from-literal=password=www

怎么找115资源

余生颓废 提交于 2020-02-26 02:06:15
【T55B66】【十伟】【永久保存】 Redis 知识点整理 JavaTimo Chat 作者 一个节操泛滥,一身凛然正气,刚正不阿的Java程序员 附上了高清知识图谱 当前内容版权归码字科技所有并授权显示,盗版必究。 文章正文 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性能问题和解决方案: 10、redis 过期键的删除策略? 11、Redis 的回收策略(淘汰策略)? 12、为什么 edis 需要把所有数据放到内存中? 13、Redis 的同步机制了解么? 14、Pipeline 有什么好处,为什么要用 pipeline? 15、是否使用过 Redis 集群,集群的原理是什么? 16、Redis 集群方案什么情况下会导致整个集群不可用? 17、Redis 支持的 Java 客户端都有哪些?官方推荐用哪个? 18、Jedis 与 Redisson 对比有什么优缺点? 19、Redis 如何设置密码及验证密码? 20、说说 Redis 哈希槽的概念? 21、Redis

MQ消息传输可靠性/消息丢失

一曲冷凌霜 提交于 2020-02-25 23:30:37
RabbitMQ 解决方案 1、生产者将消息传输给mq时丢失 A:可以使用 RabbitMQ 提供的事务功能; 生产者 发送数据之前 开启 RabbitMQ 事务 channel.txSelect ,再发送消息,如果消息没有成功被 RabbitMQ 接收到,那么生产者会收到异常报错,此时就可以回滚事务 channel.txRollback ,然后重试发送消息;如果收到了消息,那么可以提交事务 channel.txCommit 。 // 开启事务 channel.txSelect try { // 这里发送消息 } catch (Exception e) { channel.txRollback // 这里再次重发这条消息 } // 提交事务 channel.txCommit 这样会降低吞吐量,降低性能。 B: 开启 confirm 模式; 生产者开启 confirm 模式之后,每次写的消息都会分配一个唯一的 id,如果写入了 RabbitMQ 中,RabbitMQ 会回传一个 ack 消息,表示这个消息 ok 了。如果 RabbitMQ 没能处理这个消息,会回调生产者 nack 接口表示消息接收失败,生产者可以重试。而且生产者可以结合这个机制自己在内存里维护每个消息 id 的状态,如果超过一定时间还没接收到这个消息的回调,那么可以重发。 事务机制和 cnofirm

k8s存储数据持久化,emptyDir,hostPath,基于Nfs服务的PV,PVC

我只是一个虾纸丫 提交于 2020-02-25 22:11:43
在docker和K8S中都存在容器是有生命周期的,因此数据卷可以实现数据持久化。 数据卷解决的主要问题: 1.数据持久性:当我们写入数据时,文件都是暂时性的存在,当容器崩溃后,host就会将这个容器杀死,然后重新从镜像创建容器,数据就会丢失。 2.数据共享:在同一个Pod中运行容器,会存在共享文件的需求。 数据卷的类型: 1.emptyDir emptyDir数据卷类似于docker数据持久化的docker manager volume,该数据卷初分配时,是一个空目录,同一个Pod中的容器可以对该容器中的目录具有执行读写操作,并且共享数据。 场景特点:一个相同的pod,不同的容器,共享数据卷 如果容器被删除,数据仍然存在,如果Pod被删除,数据也会被删除 测试: **vim emptyDir.yaml** apiVersion: v1 kind: Pod metadata: name: producer-consumer spec: containers: - image: busybox name: producer volumeMounts: - mountPath: /producer_dir#这里的路径指的是容器内的路径 name: shared-volume#指定本地的目录名 args:#定义容器运行后,会进行的操作 - /bin/sh - -c - echo

Kubernetes数据持久化之Secret与ConfigMap

北战南征 提交于 2020-02-25 22:09:07
ConfigMap和Secret是Kubernetes中两种特殊类型的存储卷,ConfigMap这种资源对象主要用于提供配置数据以定制程序行为,不过一些敏感的配置信息,比如像用户名、密码、密钥等通常都是由Secret这种资源对象来进行配置的,他们将相应的配置信息保存于对象中,而后在Pod资源上以存储卷的形式将其挂载并获取相应配置,以实现配置与镜像文件的解耦。 一、Secret资源对象 1) Secret概述 Secret资源对象存储数据的方式是以键值对的方式进行存储的,在Pod资源进行Secret的方式是通过环境变量或存储卷的方式进行访问数据,解决了密码、token、密钥等敏感数据的配置问题,而不需要将这些敏感数据暴露到镜像或者Pod的spec字段中。另外,Secret对象的数据存储和打印格式为Base64编码的字符串,因此用户在创建Secret对象时,也需要提供该类型的编码格式的数据。在容器中以环境变量或存储卷的方式访问时,会自动解码为明文格式。需要注意的是,如果是在Master节点上,Secret对象以非加密的格式存储在etcd中,所以需要对etcd的管理和权限进行严格控制。 2)Secret资源的类型 Secret有四种类型: 1)Service Account :用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run