- 博客(122)
- 收藏
- 关注
原创 面试中学到的企业实战知识--数据库的读写分离,读的慢或者主从复制有延迟
首先,感谢腾讯面试官提出的非常好的问题,mysql主从复制肯定会出现延迟问题,导致读写分离后,从库读取数据很慢。下来仔细学习后,发现这是很重要的知识点。问题出现的原因1.大事务的执行,如果主库的一个事务执行了10分钟,而binlog的写入必须要等待事务完成之后,才会传到备库,那么此时在开始执行relaylog从放就开始延迟了很久。2.主从复制io线程读取binlog是顺序读,速度非常快,但是到了sql线程回放relaylog的操作时变成了随机读取,如过还是单线程就会变得很慢。3.当主库的tps并发
2020-08-30 21:08:15 291
原创 企业实战--kubernetes(二十二)---Helm(本地helm仓库搭建,构建自己Helm Chart,本地仓库中应用部署))
一、创建helm chart可以使用以下命令来创建一个名为mychart 的 helm chart:[root@server1 helm]# helm create mychartCreating mychart创建后会在目录创建一个mychart目录:[root@server1 helm]# lsmychart redis-ha[root@server1 helm]# tree mychart/ #查看结构mychart/├── charts├── Chart.yaml├──
2020-07-09 15:25:03 2070
原创 企业实战--kubernetes(二十一)---Helm(详解及使用,实战部署redis-ha高可用集群)
一、HelmHelm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes
2020-07-09 15:14:08 747 1
原创 企业实战--kubernetes(二十)---HPA部署(基于Metrics-Server监控CPU利用率的实现pod自动伸缩)
一、HPA简介Horizontal Pod Autoscaler 可以根据CPU利用率自动伸缩 replication controller、deployment 或者 replica set 中的Pod数量 (也可以基于其他应用程序提供的度量指标,目前这一功能处于 beta 版本)。metrics-server 也需要部署到集群中, 它可以通过 resource metrics API 对外提供度量数据,Horizontal Pod Autoscaler 正是根据此 API 来获取度量数据二、HPA
2020-07-09 14:58:04 820
原创 企业实战--kubernetes(十九)---资源监控 Dashboard v2.0.0 部署与使用
一、Dashboard的介绍与部署Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源。下载部署文件:[root@server1 limit]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.ya
2020-07-06 14:45:25 266
原创 企业实战--kubernetes(十八)---资源监控 Metrics-Server V0.3.6 部署与应用
一、Metrics-Server的部署Metrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster。容器相关的 Metrics 主要来自于 kubelet 内置的 cAdvisor 服务,有了Metrics-Server之后,用户就可以通过标准的 Kubernetes API 来访问到这些监控数据。必须部署 metrics-server 才能使用该 API,metrics-server 通过调用 Kubelet Summary API 获取数据。Metrics Server
2020-07-06 14:44:44 444
原创 企业实战--kubernetes(十七)---pod资源限制 namespace资源限制
一、容器资源限制Kubernetes采用request和limit两种限制类型来对资源进行分配。request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。limit(资源限额):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。资源类型:CPU 的单位是核心数,内存的单位是字节。一个容器申请0.5个CPU,就相当于申请1个CPU的一半,你也可以加个后缀m表示千分之一的概念。比如说100m的CPU,100豪的CPU和0.1个CPU都是
2020-07-06 14:43:36 581
原创 企业实战--kubernetes(十六)---k8s访问控制(认证,授权)
一、kubernetes访问控制原理Authentication(认证)认证方式现共有8种,可以启用一种或多种认证方式,只要有一种认证方式通过,就不再进行其它方式的认证。通常启用X509 Client Certs和Service Accout Tokens两种认证方式。Kubernetes集群有两类用户:由Kubernetes管理的Service Accounts (服务账户)和(Users Accounts) 普通账户。k8s中账号的概念不是我们理解的账号,它并不真的存在,它只是形式上存在。Au
2020-07-06 10:09:38 290
原创 企业实战--kubernetes(十五)---k8s调度
一、kubernetes调度调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。**kube-scheduler 是 Kubernetes 集群的默认调度器,**并且是集群控制面的一部分。如果你真的希望或者有这方面的需求,kube-scheduler 在设计上是允许你自己写一个调度组件并替换原有的 kube-scheduler。在做调度决定时需要考虑的因素包括:单独
2020-07-06 09:49:06 556
原创 企业实战--kubernetes(十四)---存储(StatefulSet 控制器实现mysql主从集群的部署)
一、部署原理使用 statefulset控制器部署mysql主从集群的原理如下图所示:二、使用 statefulset控制器部署mysql主从集群部署 MySQL 示例,包含一个 ConfigMap,(用于拷贝mysql配置文件)两个 Services,(一个是无头服务,用于名称访问MySQL,一个是clustip,用于客户端通过ip访问)一个 StatefulSet(部署MySQL主从集群的)。创建ConfigMap从以下的 YAML 配置文件创建 ConfigMap :[root@se
2020-07-03 14:28:08 351
原创 企业实战--kubernetes(十三)---存储(StatefulSet 控制器)
一、StatefulSets简介StatefulSet 是用来管理有状态应用的工作负载 API 对象(比如mysql集群的主从就是状态,每一个服务器都有自己的配置,角色不能因为重启发生改变,就要用statefulset来维持)。StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证。和 Deployment 相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet
2020-07-02 15:30:02 532
原创 企业实战--kubernetes(十二)---存储(Volume之动态pv)
一、StorageClass简介及属性StorageClass提供了一种描述存储类(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段, 这些字段会在StorageClass需要动态分配 PersistentVolume 时会使用到。StorageClass的属性Provisioner(存储分配器):用来决定使用哪个卷插件分配PV,该字段
2020-07-02 15:10:09 818
原创 企业实战--kubernetes(十一)---存储(Volume之pv)
一、persistent volumes简介简介管理存储和管理计算有着明显的不同。PersistentVolume给用户和管理员提供了一套API,抽象出存储是如何提供和消耗的细节。在这里,我们介绍两种新的API资源:PersistentVolume(简称PV)和PersistentVolumeClaim(简称PVC)。PersistentVolume(持久卷,简称PV) 是集群内,由管理员提供的网络存储的一部分。就像集群中的节点一样,PV也是集群中的一种资源。它也像Volume一样,是一种volume
2020-07-02 14:56:22 804
原创 企业实战--kubernetes(十)---存储(Volume之emptydir,hostpath,nfs三种类型)
一、Volumes介绍容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。 其次,当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。 Kubernetes 抽象出 Volume 对象来解决这两个问题。Kubernetes 卷具有明确的生命周期——与包裹它的 Pod 相同。 因此,卷比 Pod 中运行的任何容器的存活期都长,在容器重新启动时数据也会得到保
2020-07-02 09:18:26 669
原创 企业实战--kubernetes(九)---存储(Secret)
一、Secret简介Secret对象类型用来保存敏感信息,例如密码、OAuth令牌和ssh key。敏感信息放在Secret中比放在Pod的定义或者容器镜像中来说更加安全和灵活。Pod可以用两种方式来使用Secret:作为volume中的文件被挂载到pod中的一个或多个容器中。当kubelet为pod拉取镜像时使用。Secret的类型:Service Account:Kubernetes自动创建包含访问API凭据的secret,并自动修改pod以使用此类型的secret。Opaque:使用
2020-07-02 09:04:44 315
原创 企业实战--kubernetes(八)---存储(ConfigMap)
一、Configmap简介Configmap用于保存配置数据,以键值对的形式存储Configmap资源提供了向Pod诸如配置数据的方法旨在让镜像和配置文件解偶,以便实现镜像的可移植性和可复用性典型的使用场景:填充环境变量的值设置容器内的命令行参数填充卷的配置文件创建Configmap的方式:使用字面值创建使用文件创建使用目录创建编写Configmap的yaml文件创建如何使用Configmap:通过环境变量的方式直接传递给pod通过在pod的命令行下运行的方式作为volu
2020-07-02 09:04:31 186
原创 企业实战--kubernetes(七)---ingress service(部署,访问,tls加密,认证,URL重定向)
一、Ingress介绍一种全局的、为了代理不同后端 Service 而设置的负载均衡服务,就是 Kubernetes 里的Ingress 服务。Ingress由两部分组成:Ingress controller和Ingress服务。Ingress Controller 会根据你定义的 Ingress 对象,提供对应的代理能力。业界常用的各种反向代理项目,比如 Nginx、HAProxy、Envoy、Traefik 等,都已经为Kubernetes 专门维护了对应的 Ingress Controller。
2020-06-30 13:09:29 787
原创 企业实战--kubernetes(六)---Service
一、Kubernetes ServiceService的介绍Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。service默认只支持4层负载均衡能力,没有7层功能。(可以通过Ingress实现)ClusterIP:默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问。NodePort:将Service通过指定的Node上的端口暴露给外部,访问任意一个NodeIP:nodePort都将路由到ClusterI
2020-06-24 13:37:49 233
原创 企业实战--kubernetes(五)---pod控制器
一、Pod控制器Pod 的分类自主式 Pod:Pod 退出后不会被创建控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目控制器类型Replication Controller和ReplicaSetDeploymentDaemonSetStatefulSetJobCronJobHPA全称Horizontal Pod AutoscalerReplication Controller和ReplicaSetReplicaSet (RS)是下一代的 Replicat
2020-06-23 09:22:01 196
原创 企业实战--kubernetes(四)---pod的生命周期&init容器&探针
一、pod的生命周期Pod 是 kubernetes 系统的基础单元,是由用户创建或部署的最小组件,也是 kubernetes 系统上运行容器化应用的资源对象pod可以包含多个容器,应用运行在这些容器里面,同时pod也可以有一个或多个先于应用容器启动的init容器。、二、init容器介绍Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 Init 容器。Init 容器与普通的容器非常像,除了如下三点:它们总是运行到完成。Init 容器不支持 R
2020-06-22 14:59:50 364
原创 企业实战--kubernetes(三)---资源清单方式创建pod
一、认识资源清单1.什么是资源清单在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单2.资源清单的格式apiVersion: group/apiversion: 如果没有给定group名称,那么默认为croe,可以使用kubectl api-versions 获取当前k8s版本上所有的apiVersion版本信息(每个版本可能不同)kind: 资源类别metadata: 资源元数据 name namespace #k8s自
2020-06-22 14:18:33 237
原创 企业实战--kubernetes(二)---pod命令行方式管理
一、Pod是什么Pod是Kubernetes中能够创建和部署的最小单元,是Kubernetes集群中的一个应用实例,总是部署在同一个节点Node上。Pod中包含了一个或多个容器,还包括了存储、网络等各个容器共享的资源。Pod支持多种容器环境,Docker则是最流行的容器环境。单容器Pod,最常见的应用方式。多容器Pod,对于多容器Pod,Kubernetes会保证所有的容器都在同一台物理主机或虚拟主机中运行。多容器Pod是相对高阶的使用方式,除非应用耦合特别严重,一般不推荐使用这种方式。一个Pod内的
2020-06-22 13:41:54 310
原创 企业实战--kubernetes(一)--kubeadm方式部署集群
一、Kubernetes 简介1.什么是kubernetes官方中文文档:https://www.kubernetes.org.cn/docs它是一个全新的容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernet
2020-06-22 13:27:22 363
原创 企业实战--持续集成与持续交付( jenkins + gitlab + ansible 实现gitlab自动触发jenkins更新并调用ansible完成远程客户端部署)
server1 172.25.63.1 gitlab主机server2 172.25.63.2 jenkins+ansible主机server3 172.25.63.3 客户端主机server4 172.25.63.4 客户端主机首先在server2安装ansible:[root@server2 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo[root@server
2020-06-17 15:53:26 350
原创 企业实战--持续集成与持续交付( jenkins + gitlab + docker + harbor 实现gitlab自动触发jenkins更新b并调用docker上传harbor)
server1 172.25.63.1 gitlab主机,gitserver2 172.25.63.2 jenkins+docker主机 gitserver3 172.25.63.3 harbor仓库主机 dockerserver4 172.25.63.4 docker主机一、jenkins调用本机docker1、配置jenkins + gitlab自动触发更新安装gitlab插件首先需要在jenkins安装gitlab插件:jenkins项目demo配置gitlab配置
2020-06-17 15:45:56 511
原创 企业实战--持续集成与持续交付( harbor企业级私有仓库的安装部署)docker内容补充
一、HarborHarbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户操作审计等功能外,它还整合了K8s的插件(Add-ons)仓库,即Helm通过chart方式下载,管理,安装K8s插件,而chartmuseum可以提供存储chart数据的仓库【注:helm就相当于k8s的yum】。另外它还整合了两个开源的安全组件,一个是Notary,另一个是Clair,Notary类似于私有CA中心,
2020-06-17 15:02:42 406
原创 企业实战--持续集成与持续交付(jenkins简介、搭建与使用)
一、jenkins简介Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。
2020-06-17 14:29:22 274
原创 企业实战--持续集成与持续交付(gitlab 私有仓库的搭建与使用)
一、gitlab简介GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。二、gitlab安装至少4G内存# yum install -y curl policycoreutils-pyth
2020-06-17 14:19:16 238
原创 企业实战--持续集成与持续交付(git工具使用)
一、版本控制系统简介版本控制系统(VCS)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。 但额外增加的工作量却微乎其微。版本控制系统通常分为本地版本控制系统、集中式版本控制系统、分布式版本控制系统。本地版本控制系统许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,
2020-06-15 18:14:00 232
原创 企业实战--ELK日志分析平台(kibana数据可视化,xpack密码认证)
一、kibana简介Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。Kibana 开发工具为开发人员提供了多种强大方法来帮助其与 Elastic Stack 进行交互。四、启用xpack安全验证集群模式需要先在server1创建证书:# cd /usr/share/elasticsearch/# bin/elasticsearch-certutil ca# bin/elasticsearch-certutil cert --ca elastic-stack-ca
2020-06-15 18:03:32 253
原创 企业实战--ELK日志分析平台(Logstash数据采集搭建)
一、logstash简介Logstash是一个开源的服务器端数据处理管道。logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。输入输入:采集各种样式、大小和来源的数据Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种
2020-06-12 13:50:03 456
原创 企业实战--ELK日志分析平台(elasticsearch搭建)
ELK代表的是 elasticsearch + logstash数据采集 + kibana可视化一、elasticsearch简介简介Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎:一个分布式的实时文档存储,每个字段 可以被索引与搜索一个分布式实时分析搜索引擎能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据基础
2020-06-12 10:12:35 337
原创 企业实战--saltstack自动化运维(salt-api 简介及配置)
一、salt-api简介SaltStack 官方提供有REST API格式的 salt-api 项目,将使Salt与第三方系统集成变得尤为简单。官方提供了三种api模块:rest_cherrypyrest_tornadorest_wsgi二、salt-api配置及使用安装salt-api:[root@server1 ~]# yum install salt-api -y生成证书:[root@server1 ~]# cd /etc/pki/tls/private[root@serve
2020-06-12 09:52:27 223
原创 企业实战--saltstack自动化运维(salt-syndic简介及部署)
一、salt-syndic简介syndic其实就是个代理,隔离master与minion。Syndic必须要运行在master上,再连接到另一个topmaster上。Topmaster 下发的状态需要通过syndic来传递给下级master,minion传递给master的数据也是由syndic传递给topmaster。topmaster并不知道有多少个minion。syndic与topmaster的file_roots和pillar_roots的目录要保持一致。二、salt-syndic配置
2020-06-12 09:49:02 264
原创 企业实战--saltstack自动化运维(salt-ssh简介及部署)
一、salt-ssh简介salt-ssh可以独立运行的,不需要minion端。salt-ssh 用的是sshpass进行密码交互的。以串行模式工作,性能下降,即类似与ansible的模式。二、部署salt-ssh实验前关闭一个minion端:[root@server3 ~]# systemctl stop salt-minion安装salt-ssh:[root@server1 ~]# yum install -y salt-ssh配置roster文件,默认的本地路径是 /etc/sal
2020-06-12 09:42:52 214
原创 企业实战--saltstack自动化运维(Job管理 及 外部缓存数据库的部署)
一、Job简介master在下发指令任务时,会附带上产生的jid。minion在接收到指令开始执行时,会在本地的/var/cache/salt/minion/proc目录下产生该jid命名的文件,用于在执行过程中master查看当前任务的执行情况。指令执行完毕将结果传送给master后,删除该临时文件。Job缓存默认保存24小时:[root@server1 master]# vim /etc/salt/mastermaster端Job缓存目录:/var/cache/salt/master/jo
2020-06-12 09:39:53 189 1
原创 企业实战--saltstack自动化运维(Jinja模板 的使用)
一、Jinja模板简介Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja模板来做一些操作。通过jinja模板可以为不同服务器定义各自的变量。两种分隔符: {% … %} 和 {{ … }},前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上(引用)。二、Jinja模板使用方式使用控制结构包装条件Jinja最基本的用法是使用控制结构包装条件:[root@server1 salt]# vim test.sls[root@server1 sa
2020-06-11 18:38:34 283
原创 企业实战--saltstack自动化运维(grains与pillar详解)
一、grains简介Grains是SaltStack的一个组件,存放在SaltStack的minion端。当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。由于grains是静态数据,因此不推荐经常去修改它。应用场景:信息查询,可用作CMDB。在target中使用,匹配minion。在state系统中使用,配置管理模块。信息查询用于查询minion端的IP、FQDN等信息默认可用的grains键:[root@ser
2020-06-11 17:09:13 207
原创 企业实战--saltstack自动化运维(使用 Saltstack 远程部署 nginx)
1、准备源码包:[root@server1 salt]# pwd/srv/salt[root@server1 salt]# lsapache _modules nfs nginx top.sls[root@server1 salt]# cd nginx/[root@server1 nginx]# lsnginx-1.16.1.tar.gz2、编辑init文件安装依赖性及解压源码包:[root@server1 nginx]# vim init.sls[root@server1 n
2020-06-09 14:02:28 169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人