# DevOps **Repository Path**: lin-jiajun/dev-ops ## Basic Information - **Project Name**: DevOps - **Description**: DevOps 运维开发工程师。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-27 - **Last Updated**: 2023-05-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DevOps 工具链 ![](dev-ops.jpg) ## 适合中小微企业的DevOps平台设计 + GitLab + Jenkins + Git + SonarQube + Nexus + Maven + Groovy Pipeline ---------------------------------------------------------- # 微服务治理 ## 监控治理 + Prometheus + Grafana + AlertManager ## 日志治理 + ELK/EFK+Kafka ## 可观测治理 + Jaeger + Skywalking ----------------------------------------------------- # 技术解决方案设计 依据企业现有的资源,设计合理且符合成本把控的技术解决方案,一般适合做这方面工作的是 网络工程专业(能够跨团队工作的高手)。 虚拟化平台设计IaaS------这方面依据企业的需要,可以选用开源的或者商业的Iass云计算平台 + 商用型:VMware + 开源型:OpenStack,可以进行二次开发(偏向研发,要做到成本低,需要耗时间进行技术储备) + 内部研发:自定义云计算,根据现有的研发储备能力及知识库建设,满足中小企业变成大型企业所需的技术储备,适合高优投档线的学生去做。 存储平台设计CaaS-------对于这类型的需求,是比较少的,一般是大型企业偏向。 + 内部设计:磁盘阵列/LVM + 开源解决方案:Ceph/Gluster、nfs、openfiler,hadoop,可以二次开发 + 公有云存储:七牛云 操作系统选型------ linux、unix、windows server + unix:最好的操作系统,内部设计非常优秀,但是没有开源的情况,一般是垄断型企业掌握,很多优秀的产品都出自该系统,称为初代操作系统,祖师爷辈分,其中代表的公司是苹果使用该系统。 + linux:分为开源型和商用型,开源型(centos(专业的运维人员使用的)、rock linux、suse、debian、ubuntu(研发人员使用的))、商用型(redhat,有所缺陷,但是性能好)。 + windows server:微软使用的,一般是为那些不怎么懂计算机的人员使用的。 + 国产型:目前来说,国产做出来的真不一定是好的操作系统,更多的是利益驱使,或者备胎吧,做好最坏的打算才使用的。 + 自研型:目前来说,操作系统方面的技术是垄断的,能够做得好的公司基本搞垄断。 + 原生型:一般来说,设计好的内核,让原生型的操作系统始终处于比较节省空间和高性能的状态,后续根据需要调整空间和性能,这样保持应用跟操作系统原生匹配,达到超性能优势,这个是可以做的,比起unix的可操作空间更大,可以做到超unix的性能优势。 + 操作系统如何选型:个人的经验以及专研,得出的结果是,应用系统对操作系统的性能依赖和空间依赖,决定了选用那些操作系统,当然有人会出来吵一架说要安全性,所以要选用商用的redhat或者国产的操作系统,但中小企业更多的是考虑成本的,不能说让这些混蛋奔着赚钱不管中小企业的死活吧,就往中小企业上面堆砖块。。。。 容器平台设计Paas------对应用进行编排,这个就要特别小心了,因为如果编排不好,整个系统可能会崩盘的。 镜像仓库 + docker hup:是docker官方提供的,一般是免费给个人使用的,如果企业要使用,要购买付费的。 + harbor:是开源的镜像仓库,适合企业内部使用,一般很少有企业对这方面做二次开发。 + docker:引擎编排,一般这种做起来是堆叠式的,如果做得好,比较节省空间,如果做不好,空间业也比较容易浪费,适合做项目交付使用和开发人员做调试使用。 + docker compose:可以进行集群编排,对应用中的 数据库,中间件,负载均衡器做集群编排。 + kubernetes:可以直接对docker进行容器式编排,满足了很多的优点,例如 + 1、自动装箱:基于容器对应用进行运行环境的资源配置要求自动部署应用容器 + 2、自我修复(自愈能力):当容器失败时,会对容器进行重启undefined,当所部署的Node节点有问题时,会对容器进行重新部署和重新调度undefined,当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务 + 3、水平扩展:通过简单的命令、用户UI界面或基于CPU等资源使用情况,对应用容器进行规模扩大或规模裁剪 + 4、服务发现:用户不需要使用额外的服务发现机制,就能够基于 Kubernetes 自身能力实现服务发现和负载均衡 + 5、滚动更新:可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新 + 6、版本回退:可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退 + 7、密钥和配置管理:在不需要重新构建镜像的情况下,可以部署和更新密钥的应用配置,类似热部署。 + 8、存储编排:自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要,存储系统可以来自本地目录、网络存储(NFS、Gluster、Ceph等)、公有云存储服务 + 9、批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景。 中间件选型--------这方面涉及到架构设计: 数据库(sql、nosql)、消息队列(rabbitmq、rocketmq)、注册中心/配置中心(nacos、zookeeper) + 关系型数据库: + mysql(开源型):吊丝逆袭,主要是为穷人服务的,如果是高手使用的,会对它存在的不足,做一些额外的外部零部件添加新的组件。 + oracle(商用型):这种对很多底层的硬件、操作系统、中间件、空间、存储设备、网络设备的要求比较高,可以适应各种复杂的场景,就是一个字,贵。这种数据库是比较好的,团队完全科班化,当然服务的价格比较高,考研企业的承受能力。俗称一体化关系型数据库。 + opengauss、oceanbase、TDSQL(华为、阿里、腾讯):属于金融型数据库。 + 自研型:这方面的人才是稀缺的,垄断性,一经发现,立马被各种大企业垄断掉。 + 国产型:这里面涉及到的,一般是跟Oracle公司购买源码,然后自己去开发一套,他们一般会开发管理平台(界面),但要经过市场的考验时间,是比较长的。有所期待吧。 + 非关系型数据库: + 文档类型:mongodb + 缓存类型:redis、memcache + 消息队列: + 开源型:rabbitmq、rocketmq + 商用型: + 自研型:大型企业去做的或者跟一些企业定制化开发,中小企业一般没有那么高的用户需求。 + 注册中心/配置中心: + etcd:云原生级别的。需要额外开发,相当于借助应用和etcd直接对接,做到最高程度的性能,对运维人员的要求会比较高。 + nacos:做到了极限,适用各种复杂的场景。 + zookeeper: 主要用于稳定的系统建设。 + eureka: 电商界的王者。 + 负载均衡器-------------LVS、Nginx/Haproxy、Httpd(Apache)、Tomcat、Keepalived、LNMP/LAMP + LVS:四层转发,只进行流量转发 + Nginx/Haproxy:最好用作七层代理,也可以做四层转发,最高并发5w|1w + Tomcat: java的负载均衡器 + Keepalived:保证高可用性。 + LNMP/LAMP:一套小型的企业解决方案。最简单的架构设计 + openresty: nginx+lua,达到10w并发。 + tengine: 淘宝开源的。 自动化管理---------------ansible&shell。 + ansible: 适合大规模批量处理machine。 + shell: 最优秀的脚本语言。可以克服各种状况。 + ansible+shell+nginx:合在一起使用的架构,使用shell编写好脚本,然后借助nginx充当的web服务器,用ansible拉取web服务器上的shell脚本,指定machine批量执行shell,这种效果非常不错,一方面控制了shell脚本的版本,另外也控制了机器的执行。