云计算领域,具有多年的OpenStack、Kubernetes经验
MongoDB分片副本集部署,以服务方式管理,外加访问控制的配置步骤。
目录1. 前言2. 配置Ceph radosgw用户3. 部署HA的MariaDB集群4. 部署HA的Redis集群5. 部署Harbor集群参考资料 1. 前言 Harbor 1.4.0版本开始提供了HA部署方式,和非HA的主要区别就是把有状态的服务分离出来,使用外部集群,而不是运行在本地的容器上。
早前由于添加了全SSD的高性能Ceph集群,区别于现有的HDD集群,在OpenStack端需要能够选择使用两种集群。Cinder配置多Ceph后端的文档早已整理,整理文件夹时发现这篇为nova boot添加volume type参数的文档,也整理一下发出来。
1. 在Ceph上为Kubernetes创建一个文件系统 # ceph osd pool create cephfs_data 128 # ceph osd pool create cephfs_metadata 128 # ceph fs new cephfs cephfs_metadata cephfs_data 2. CephFS配置Quotas CephFS的mount方式分为内核态mount和用户态mount,内核态使用mount命令挂载,用户态使用ceph-fuse。
1. 在Ceph上为Kubernetes创建一个存储池 # ceph osd pool create k8s 128 2. 创建k8s用户 # ceph auth get-or-create client.
1. 环境 系统:CentOS 7.2 Go:1.10.3 Kubernetes:1.10.4 2. 安装最新版go 编译的Kubernetes 1.10.4要求go版本在1.9.3以上,使用下面的yum源安装最新版go: [golang] name=Golang baseurl=https://mirror.
故障现象 使用nova volume-attach 命令挂载卷,命令没有返回错误,但是查看虚拟机状态,卷并没有挂载上。 故障原因 疑似虚拟机长时间运行(超过1年)后,libvirt无法执行live attach操作。
故障现象 在监控上发现部分虚拟机每隔大概20分钟就会出现一次入口流量高峰,大小在1MB/s左右: 故障原因 交换机上配置了广播抑制,导致整个环境中没有广播包。在计算节点上Linux Bridge的MAC learning table中网关对应的MAC地址过期后(默认值300秒),没有及时更新,Linux Bridge会把本来应该发到网关对应端口的数据包发送到所有端口。
故障现象 近期公司的OpenStack上频繁出现虚拟机创建失败的情况,查看日志定位到问题出在neutron-server向keystone认证token失败。 故障原因 Keystone所使用的Memcahed token后端配置的可用内存大小为64MB,新集群加入后,token量逐渐增加,需要保存的数据量大于这个大小,导致memcached频繁清理未过期的以腾出空间存储新创建的token,继而出现token丢的情况。
1. 检查cinder当前backend配置 使用cinder service-list,查看cinder-volume服务的Host字段格式。 旧版格式: 新版格式: 旧版中Host字段是cinder-volume服务所在节点的HOSTNAME,新版中Host字段是HOSTNAME@BACKEND。
OpenStack版本:Mitaka 物理节点: Hostname Management IP Tunnel IP Role test-ctrl-01 192.168.100.11 192.
1. 虚拟机镜像的创建和resize流程 nova创建虚拟机涉及的组件比较多,调用比较复杂,这里只列出跟虚拟机镜像创建相关的流程,方便理清虚拟机状态变化的整个流程。 nova-api nova.api.
前面介绍了最小生成树和Prim算法,这篇博客继续记录Kruskal算法的相关内容。 算法思想: 1. 先将所有边按权值由小到大排序; 2. 从边集中选出第一条边(即权值最小的边),如果与树中现有的边不构成环,则将其加入树中; 3. 重复步骤2直至树中有n-1条边。
最小生成树是图这一数据结构里最常讨论的方面之一。 先用一下几个概念回忆一下什么是最小生成树: 连通图:任意两个结点之间都有一个路径相连 生成树(Spannirng Tree):连通图的一个极小的连通子图,它含有图中全部n个顶点,但只有足以构成一棵树的n-1条边 最小生成树(Minimum Spannirng Tree):连通图的最小代价的生成树(各边的权值之和最小) 最小生成树性质(MST性质): 设G=(V,E)是一个连通网络,U是顶点集V的一个真子集。
关于KMP算法的分析,我觉得这两篇博客写的不错: http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html http://blog.csdn.net/v_JULY_v/article/details/6545192 下面的笔记也是参考了这两篇博客的。
下面几篇文章记录字符串匹配算法。 Brute-Force算法简称BF算法,中文名叫简单匹配算法。正如其名,简单粗暴,按部就班地遍历所有字符,算法简单,效率低下,不被看好。 但也正因为不常用,反而容易生疏了,因此以此文熟悉一下这一简单的算法。
一、 分类描述 1. 插入排序 直接插入排序:算法简单,稳定,适用于数据量小的情况 希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近 2.
基数排序是一种数据格式相关的算法,适用范围有限,当数据位数较小时,基数排序法的时间复杂度近似为O(n),效率高于其它的稳定性排序算法。 1. 算法思想 以十进制数为例,现将元素按个位出入一次基数桶,再按十位出入基数桶……直至按最高位出入基数桶,此时序列整体有序。
归并排序是一种使用分治策略的排序算法,适用于待排序列整体无序、部分有序的情况。 1. 算法思想 递归地将待排序列等分为两个子序列,直到子序列有序(狭义得讲就是只有一个元素),再将两个子序列合并为一个新的有序序列。
堆排序也是一种选择排序,对序列的原始顺序不敏感,适用于数据量大的情况。 1. 算法思想 堆:子节点的值总是小于/大于它的父节点。这里使用的是最大堆。 将数组转化为最大堆,依次将对顶元素取出,与堆中最后一个元素交换,堆长度减一,对堆作调整;如此循环至堆为空,最后得到一个元素由小到大排列的数组。
直接选择排序最好最坏情况时间复杂度均为O(n^2),不稳定,其优势在于最多只需交换n次,交换操作比比较操作耗时。 1. 算法思想 从待排序序列中选择最小的元素,放入有序序列的末尾;如此循环直至待排序序列为空。
快速排序是交换排序的一种,算法效率高,需要额外的辅助空间 1. 算法思想 从待排序序列中选取一个元素,以其值作为中间值,把比其小的元素放到左边,比起大的元素放到右边;然后递归地对左、右部分排序,直至每一部分元素个数为1,整个序列有序。
冒泡排序是一种选择排序,算法简单,在数据基本有序的情况下效率较高。 1. 算法思想 通过无序区中元素相邻元素的比较和交换,使最小的元素如同气泡一般浮动至顶端。 2. 时间复杂度 最好情况 O(n):序列正序有序,外循环只执行一次,内层比较n次,不需移动元素(针对改进版而言) 最坏情况 O(n^2):序列逆序有序,每次比较都需交换两个元素 3. 空间复杂度 O(1) 就地排序,辅助空间为常数级 4. 稳定性 稳定。
希尔排序是直接插入排序的改进版,对于待排序序列的不同情况效率相近。 1. 算法思想 先选取一个小于n的增量d1,把序列中所有元素分成d1个组,所有距离为d1的倍数的元素在同一组中,在各组内执行直接插入排序。
直接插入排序是插入排序的一种,算法简单,适用于数据量小的情况。 1. 算法思想 每次从待排序序列中取出一个元素k,插入到已经排好序的序列A[0...i]中合适的位置。插入时k依次由后向前比较,小于k的元素后移。