升级Ceph集群从Kraken到Luminous
Ceph Luminous(Ceph 12.2)增加了很多新功能,例如新的后端存储BlueStore已经稳定,主推的新的管理进程ceph-mgr,并提供了用于监控的Prometheus插件和Dashboard插件,终于不用再折腾calamari了。本文尝试在测试环境中使用ceph-deploy将Ceph集群从Kraken到Luminous。
Ceph Luminous(Ceph 12.2)增加了很多新功能,例如新的后端存储BlueStore已经稳定,主推的新的管理进程ceph-mgr,并提供了用于监控的Prometheus插件和Dashboard插件,终于不用再折腾calamari了。本文尝试在测试环境中使用ceph-deploy将Ceph集群从Kraken到Luminous。
前面我们已经在k8s上部署了istio和官方的示例应用Bookinfo。本篇来学习一下ServiceMesh的基本概念,加深一下对服务网格的理解。ServiceMesh实际上处于云原生平台微服务的基础设施层,用来连接、管理和保护微服务。 目前CNCF官方项目列表中有两个Service Mesh的项目,分别是Linkerd和Envoy。
Bookinfo是Istio的官方示例应用。 我们已经在k8s集群上安装了Istio,本篇的目标是在k8s集群上将Bookinfo应用跑起来。 Bookinfo示例应用概述 Bookinfo这个示例应用由4个独立的微服务组成,Istio使用这个应用来演示Istio的Service Mesh的各种功能。 Bookinfo应用的端到端架构图如下:
Istio是由Google, IBM, Lyft开源的Service Mesh项目。 Istio的Introduction中说它是一个用来连接、管理和保护微服务的开放平台。 因为是个人学习Istio的开篇,对Istio概念的第一印象先停留在前面一句话上,本篇的目标是先在我们的k8s集群上部署Istio。 安装Istio 注意Istio还在快速发展,这里安装的是最新的Istio 0.2.9,后续的版本极有可能发生变化,本来也是学习和体验这里就不废话了。 当前的Istio要求在Kubernetes 1.7.4及以上版本,要求k8s集群开启RBAC,另外kubectl的版本也需要是1.7以后的版本。
滚动升级时一种平滑过渡的升级方式,采用的是逐步替换的策略从而保证服务的稳定性,在升级时如果发现问题可以及时回滚、调整问题,尽量让问题不会扩大。我们经常使用Kubernetes的两种资源对象Deployment和DaemonSet的滚动升级,本篇来看一下StatefulSet的滚动升级。
最近测试环境的一个三节点的MySQL GR集群(单主)的一个从节点发生了宕机,重启恢复后,过了一会监控系统告警,刚刚宕机的这个节点退出了GR集群。原因是主库上对某条数据的修改复制到从库后,在这个从库上找不到这条数据(slave_exec_mode=STRICT),第一反应就是主库和从库出现了不一致。因为是测试环境,数据量不大,所以采取的方案是将从库重建(团队没有专门的DBA)。接下来特意查看了一下MySQL复制和从库宕机恢复这块的资料。
最近正在制定将团队生产环境的Kubernetes集群从1.6升级1.7的计划。 Kubernetes 1.8已经发布,所以准备考虑从1.6到1.7的升级。 准备 当前1.7的最新版本是1.7.8。在做准备之前需要仔细读一遍官方的Kubernetes 1.7 - Action Required Before Upgrading。 使用ansible升级k8s的核心组件 目前我们总共有两个高可用的Kubernetes集群,分别是测试环境和生产环境,版本都是1.6.10。 这两套环境的Kubernetes集群都是基于ansible自动部署,在1.6.x的每个小版本的升级也都是使用ansible完成。
kubeadm是Kubernetes官方提供的快速安装和初始化Kubernetes集群的工具,目前的还处于孵化开发状态,伴随Kubernetes每个版本的发布都会同步更新。 当然,目前的kubeadm是不能用于生产环境的。 但伴随着Kubernetes每次版本升级,kubeadm都会对集群配置方面的一些实践做调整,通过实验kubeadm我们可以学习到Kubernetes官方在集群配置上一些新的最佳实践。
前面已经成功部署了OpenVPN的服务端。客户端和服务端采用的是基于TLS的双向认证,需要给每个客户端生成客户端私钥和证书。本篇将在OpenVPN服务端集成的OpenLDAP认证,这样能够使客户端用户在连接VPN时直接使用统一的OpenLDAP账号。部署的环境和版本信息如下:
为了方便团队成员从异地访问开发环境,考虑使用OpenVPN搭建虚拟局域网。部署的环境和版本信息如下: CentOS 7 OpenVPN 1.easy-rsa生成证书 从这里下载easy-rsa。 unzip easy-rsa-old-master.zip cd easy-rsa-old-master/easy-rsa/2.0 ls build-ca build-key-pkcs12 inherit-inter pkitool build-dh build-key-server list-crl revoke-full build-inter build-req openssl-0.9.6.cnf sign-req build-key build-req-pass openssl-0.9.8.cnf vars build-key-pass clean-all openssl-1.0.0.cnf whichopensslcnf ln -s openssl-1.0.0.cnf openssl.cnf 可修改vars文件中定义的变量用于生成证书的基本信息。下面生成CA证书: