kubernetes1.6中redis-mong-zookeepe-rabbitmq集群部署
mongo 3.4
k8s-mongo-ha,建议使用第二种方法
1、https://github.com/tarosky/k8s-mongo-hars.status()查看集群状态db.getMongo().setSlaveOk()设置从节点允许读需要持久化的目录/data
2、https://github.com/cvallance/mongo-k8s-sidecar这种方法也比较好。9.18更新
redis 3.2
https://github.com/tarosky/k8s-redis-ha
需要持久化目录/data,/opt
zookeeper 3.4.10
https://github.com/engapa/zookeeper-k8s-openshift
持久化数据路径,详细步骤不再解释
/opt/zookeeper/data
/opt/zookeeper/data-log
rabbitmq 3.6.6
使用过两种安装方式
1、Deployment
https://github.com/binarin/rabbit-on-k8s-standalone
2、statefulset
https://github.com/tianctrl/rabbitmq-cluster-helmRabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言,但其本身并不支持负载均衡。
Rabbit模式大概分为以下三种:单一模式、普通模式、镜像模式普通模式:默认的集群模式。
对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅有相同的元数据,即队列结构。
当消息进入A节点的Queue中后,consumer从B节点拉取时,RabbitMQ会临时在A、B间进行消息传输,把A中的消息实体取出并经过B发送给consumer。
所以consumer应尽量连接每一个节点,从中取消息。即对于同一个逻辑队列,要在多个节点建立物理Queue。否则无论consumer连A或B,出口总在A,会产生瓶颈。
该模式存在一个问题就是当A节点故障后,B节点无法取到A节点中还未消费的消息实体。
如果做了消息持久化,那么得等A节点恢复,然后才可被消费;如果没有持久化的话,然后就没有然后了……镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案。
该模式解决了上述问题,其实质和普通模式不同之处在于,消息实体会主动在镜像节点间同步,而不是在consumer取数据时临时拉取。
该模式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉。
所以在对可靠性要求较高的场合中适用镜像模式可以通过命令或控制台来创建策略
# rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'
这行命令在vhost名称为hrsystem创建了一个策略,策略名称为ha-allqueue,策略模式为 all 即复制到所有节点,包含新增节点,
策略正则表达式为 “^” 表示所有匹配所有队列名称。
控制台中添加Admin--Policy中添加RabbitMQ对于queue中的message的保存方式有两种方式:disc和ram。如果采用disc,则需要对exchange/queue
/delivery mode都要设置成durable模式。Disc方式的好处是当RabbitMQ失效了,message仍然可以在重启之后恢
复。而使用ram方式,RabbitMQ处理message的效率要高很多,ram和disc两种方式的效率比大概是3:1。所以如果在
有其它HA手段保障的情况下,选用ram方式是可以提高消息队列的工作效率的。-p Vhost: 可选参数,针对指定vhost下的queue进行设置
Name: policy的名称
Pattern: queue的匹配模式(正则表达式)
Definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-modeha-mode:指明镜像队列的模式,有效值为 all/exactly/nodesall:表示在集群中所有的节点上进行镜像exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定ha-params:ha-mode模式需要用到的参数ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual
priority:可选参数,policy的优先级相关变量
RABBITMQ_LOG_BASE=/data/rabbitmq/log 日志目录
RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins 插件目录
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia
RABBITMQ_MNESIA_DIR
创建策略 镜像模式
命令:rabbitmqctl set_policy ha-all "^" '{'ha-mode":"all"}'
1、ha-all 是同步模式,指同步给所有节点,还有另外两种模式ha-exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定,ha-nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定;2、^是匹配所有节点。3、{“ha-mode”:”all”} 表示同步给所有,同步模式的不同,此参数也不同。
持久化测试
使用动态pvc持久化数据,支持cephrbd,目前不支持cephfs测试使用主机持久化,在创建statefulset的yaml文件中添加,持久化到主机上。根据创建statefulset而创建pv和pvcvolumeClaimTemplates:- metadata:name: datadirannotations:volume.alpha.kubernetes.io/storage-class: anythingspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1Gi - metadata:name: datalogdirannotations:volume.alpha.kubernetes.io/storage-class: anythingspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1Gi 如果出现错误:cannot find volume plugin for alpha provisioning在文件中添加参数:/etc/kubernetes/manifests/kube-controller-manager.json 参数: --enable-hostpath-provisioner=true statefulset:● 稳定的、唯一的网络标识。 ● 稳定的、持久化的存储。 ● 有序的、优雅的部署和扩展。 ● 有序的、优雅的删除和停止。 PV卷阶段状态:Available – 资源尚未被claim使用Bound – 卷已经被绑定到claim了Released – claim被删除,卷处于释放状态,但未被集群回收。Failed – 卷自动回收失败
总结
总体部署比较简单,可能会遇到的问题就是权限问题了,出了问题看日志,解决起来比较简单。
后边做测试补充
kubernetes1.6中redis-mong-zookeepe-rabbitmq集群部署相关推荐
- redis 3.0的集群部署
2019独角兽企业重金招聘Python工程师标准>>> redis 3.0的集群部署 博客分类: 缓存 文章转载自:http://hot66hot.iteye.com/blog/20 ...
- rabbitmq集群部署及配置
rabbitmq集群部署及配置 文章目录 rabbitmq集群部署及配置 前言 一.原理介绍 二.部署方案 1.环境介绍 2.部署过程 小结 前言 消息中间件rabbitmq,一般以集群方式部署,主要 ...
- java redis 多节点,Redis单机多节点集群部署,超简单
1.在虚拟机中部署具有三个主节点,三个从节点的集群(注,必须要有从节点),虚拟机的IP地址为192.168.133.129,三个主节点的部口号分别为7001(从:7004).7002(从:7005). ...
- RabbitMQ集群部署指南
文章目录 1.单机部署 1.1.下载镜像 1.2.安装MQ 2.安装DelayExchange插件 2.1.下载插件 2.2.上传插件 2.3.安装插件 3.集群部署 2.1.集群分类 2.2.获取c ...
- RabbitMQ集群部署
一般来说,RabbitMQ部署分布式集群架构有如下三种: 1.Cluster 2.Federation 3.Shovel 其中最常用的就是cluster模式(集群),它可以动态增加节点或减少,但只支持 ...
- RabbitMQ 集群部署及配置
文章目录 一.rabbitmq简述 Rabbitmq 有 3 种模式,但集群模式是 2 种 二.环境准备及软件安装 修改 hosts 文件 (3 台) 三.账号配置 四.启动 rabbitmq 内置 ...
- RabbitMQ集群部署教程(Linux)
一.简介 Messaging that just works - RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消息,转发消 ...
- redis 配置文件解释 以及集群部署
redis是一款开源的.高性能的键-值存储(key-value store),和memcached类似,redis常被称作是一款key-value内存存储系统或者内存数据库,同时由于它支持丰富的数据结 ...
- centos7 Redis单机多节点集群部署
centos7 redis的安装请参考一下链接 http://blog.csdn.net/duguxingfeng/article/details/78911640 1.Reids安装包里有个集群工 ...
- redis 主从 + 哨兵模式集群部署(3台机器)
前言 本文只讲如何部署,然后会贴出具体配置,以及如何验证是否部署成功(redis 版本采用 4.0.6 ).既不会介绍 redis 如何安装(本人采用源码安装方式),也不会涉及主从复制,哨兵模式具体原 ...
最新文章
- 总奖金300万的AI Challenger 2018进入第二阶段,决赛在即!
- R语言使用survminer包生存分析及可视化(ggsurvplot)实战详解:从数据集导入、生存对象生成、ggsurvplot可视化参数配置、设置、可视化对比
- .net core mysql CodeFirst
- .net中的4种事务总结
- 打破你的认知,数字除以 0 一定会崩溃吗?
- clob和blob是不是可以进行模糊查询_为省几十元买假内存条?金士顿内存条真伪查询与辨别方法...
- RocketMQ 事务消息
- oe_runmake failed
- init_MUTEX被废除
- php gbk json,GBK的页面输出JSON格式的php函数
- Maven刷新后jdk变成jre
- Pr 入门教程,如何处理图片文件?
- 计算机应用与医学信息基础知识,第一篇医学信息基础知识.PDF
- 退役前的做题记录3.0
- 《自己动手写网络爬虫》笔记3-宽度优先遍历互联网
- PHP获取今日农历日期
- java计算机毕业设计物流站环境监测系统源码+系统+数据库+lw文档+mybatis+运行部署
- 嵌入式 linux 之 Lzma 移植
- 快手的扫描登录网页端隐藏得够深得
- GTD任务清单及项目管理器2Do for Mac