• [统一运维] 【快速入门】Zabbix监控关键术语
    host group:是一个Host的群组,拥有相似属性的host可以组成一个group,方便统一的管理,比如珠海办公室所有的电脑可以组成一个host组。host:被监控的设备,物理服务器,虚拟机,交换机等,是Zabbix监控的基本载体,所有的监控都是基于host 。item:监控指标,CPU使用率,磁盘利用率,是监控项,是监控的基本元素,每一个监控项对应一个被监控端的采集值。Application:是Item的集合,将相似的item放置在同一个application里面便于管理,比如所有监控网络item。Trigger:Trigger是触发器,当Items采集值满足Triggers的触发条件时,就会产生actions。Action:是告警动作,当触发器条件被满足时,就会执行指定的action。Media:即告警方式,Zabbix提供四类Media:Email/SMS/Jabber/Script。Template:模板是可以方便地应用于多个主机的一组实体。而这些实体包括:items、triggers,graphs、applications等。
  • [统一运维] 【快速入门】告警上报流程
    以下图是告警具体上报流程
  • [统一运维] 组网结构图介绍
    统一运维服务组网结构(由交付与服务完成部署)如下图所示:说明:1、所有容器都是单实例部署;2、运维平台属于管理面,需要和业务集群网络隔离;3、防火墙/安全策略需要根据现场的PaaS平台指导文档进行配置;4、Mysql如果采用RDS服务,要注意通过安全组策略配置,仅允许信任域内访问;公有云和私有云场景部署的区别如表1:表1 场景部署图 场景公有云私有云各容器持久性数据需要用到共享存储SFSNFS ,单独部署NFS双机Portal的访问入口使用负载均衡接入ELB采用双node节点部署Keepalived方式提供高可用能力,或者通过k8s nodeport方式访问。
  • [技术干货] 【2.1管理中心】RPA管理中心部署常见问题
    1、无法增加备份服务器背景: 创建两个虚拟机作为管理面和数据面的服务器,由于系统盘内存小,手动挂载了一个100G的磁盘,可增加备份服务器失败定位:在挂载磁盘后,sftpuser用户的用户组变成了root操作步骤:进入“/opt/sftpuser”目录,执行以下命令,恢复成sftpgroup用户组chown sftpuser:sftpgroup sftpboot2、恢复删除的lb容器背景:因lb启动异常,需要删除lb容器,但删除方法错误,lb容器没有自动恢复。错误的删除步骤如图:操作步骤:2.1、在“TOSCA堆栈部署”页面中,点击lb堆栈2.2、点击“卸载”2.3、点击“安装”,根据提示点击“下一步”,不需要修改任何参数。2.4、回到“K8S应用部署”界面,可以看到lb容器已恢复。3、管理面检查时报错,是否存在静态路由定位到没有默认路由“0.0.0.0”情况1:OP(私有化)部署场景下,euler系统,可能原因是bootproto参数为“dhcp”解决方法:在I层添加“0.0.0.0”默认路由,如果I层是FusionComputer,操作步骤如下步骤1:登录管理面虚机,输入以下命令,打开“eth0”网卡vim /etc/sysconfig/network-scripts/ifcfg-eth0步骤2:输入“i”键进入编辑状态,将BOOTPROTO参数改为static步骤3:按“Esc”键退出,输入“:wq”保存步骤4:输入以下命令,重启网络service network restart结果显示:情况2:suse12.5系统,没有手动配置默认路由解决方法:步骤1:以paas用户登录管理面节点,切换到root用户步骤2:打开routes文件,配置默认路由vi /etc/sysconfig/network/routes编辑网关信息如下:default x.x.x.x - -配置完成后保存退出提示:多网络平面,根据场景包中Excel表的DefaultRoute参数配置哪个平面为默认路由。步骤3:重启网络使配置生效service network restart 4、服务器下电时间长,高斯V3启动失败 数据库内部的可见性判断是通过SCN实现的,SCN的机制就是系统时间戳+序列号,启动的时候会根据系统时间来更新时间戳。如果启动之前,系统时间被错误的调整的很大,会导致SCN耗尽。因此新增了一个参数,用于设置系统时间变大的范围。规避手段:1、分别使用root用户登录高斯v3的节点,切换至高斯用户:su - gtsgsdba -s /bin/bash2、执行以下命令cat /opt/gdbservice/data/log/run/zengine.rlog |grep 'System time increased';if [[ $? == 0 ]]; then  echo 'SCN跳变问题,尝试恢复'  sed -i "s/^_SYSTIME_INCREASE_THREASHOLD.*/_SYSTIME_INCREASE_THREASHOLD = 30/g" /opt/gdbservice/data/cfg/zengine.ini  zctl.py -t stop  zctl.py -t start  info.sh|grep -w OPEN  [[ $? == 0 ]] && echo "repair succeeded." || "repair failed."else  echo '非SCN跳变问题, repair failed.'fi5、安装完管理中心,登录管理面前台,页面没有显示版本信息定位过程:查看gde-version依赖的软件包DSPBase软件包存在查看gde-version堆栈模板及堆栈,模板存在,但没有创建堆栈gkit前台页面的日志中查看到创建gde-version失败了,但并没有停止安装解决方法:手工创建gde-version堆栈步骤1:依次点击“应用开发”->“堆栈模板”->“部署堆栈”步骤2:部署堆栈页面,填写“堆栈名称”和“base_version”参数,点击“下一步”。堆栈名称:gde-version;base_version:2.1.0步骤3:点击“创建堆栈”步骤4:等待堆栈创建。创建成功后,页面显示版本信息6、2.1升级2.1cp8版本,在管理面检查时预备步骤报错:failde to refresh deploy mode in cluster configuration(未能在群集配置刷新部署模式)定位过程:在/etc/resolv.conf文件下不存在设定好的dns(10.247.0.20),因此无法ping通dns,原因在于配置网卡的时候配置了客户的域名,使得我们固有的10.247.0.20发生变化解决方法:登录管理面后台,vim /etc/resolv.conf文件,加入10.247.0.20域名。在/etc/custom_ resolv.conf文件,加入客户的域名7、 安装管理面时,在安装FusionStage时报错,报错如下 定位过程:查看文件,提示:不能连接docker;查看docker状态,发现docker挂了,并且无法重启查看daemon.json文件,该文件写入了一些内容(客户自定义),在初始环境中,该文件的内容为空解决方法:登录管理面和数据面虚机后台,切换到root用户,删除或置空/etc/docker/daemon.jason文件,再重拉docker8、 检查管理面报错,查看任务详情提示ssh鉴权失败 定位过程:执行以下命令,正常情况下会返回一条“yes”命令,但局点环境返回了两条;sudo cat /etc/ssh/sshd_config | grep ^PasswordAuthentication | awk -F " " '{print $2}'查看/etc/ssh/sshd_config配置文件,与系统原始文件不符,得知修改过该配置文件,为其加固过解决方法:将配置文件恢复成系统初始文件,后重新检查,检查通过提示:在管理中心安装完成之前,不能对系统进行修改
  • [统一运维] 【统一运维】规范和要求
    规范和要求监控项要求OPS平台可以监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控。标准监控指标按照OS,DB,容器,业务应用的维度,建议伙伴实现如下常用的监控告警项如下:1、接入OPS之后,OS、容器自动监控,不需要伙伴开发监控脚本。2、DB和业务应用需要伙伴自己开发监控脚本。表1 监控指标说明监控大类指标分类指标名称指标说明DB性能类指标QPS数据库每秒处理的请求数量TPS数据库每秒处理的事务数量并发数数据库实例当前并行处理的会话数量连接数连接到数据库会话的数量缓存命中率查询命中缓存的比例高可用指标可用性数据库是否可以正常对外服务阻塞当前阻塞的会话数慢查询慢查询情况主从延迟主从延迟时间主从状态主从链路是否正常死锁查看死锁信息OSCPUCPU steal timeCPU使用内部虚拟机运行任务的时间占CPU总时间的百分比CPU softirq timeCPU软中断时间CPU nice time用户进程空间内改变过优先级的进程占用CPU百分比CPU iowait time用户进程等待磁盘IO而使CPU处于空闲状态的比例CPU system time空闲CPU百分比CPU idle time空闲时间CPU interrupt time中断时间Processor load (15 min average per core)CPU 15分钟负载Processor load (5 min average per core)CPU 5分钟负载Processor load (1 min average per core)CPU 1分钟负载Context switches per second每秒上下文切换数磁盘Free disk space磁盘剩余百分比Free inodes磁盘inodeRead: Bytes/sec磁盘读速度Write: Bytes/sec磁盘写速度内存Total memory内存总量Available memory可用内存大小Total swap space交换分区大小Free swap space in %空闲交换分区百分比网络Incoming network traffic每秒进入字节数Outgoing network traffic每秒出去字节数net performance网络性能监控(重传、丢包率、拥塞)OSNumber of logged in users登录用户数Maximum number of processes系统设置的最大进程数Maximum number of opened files系统设置的最大打开文件数容器k8s容器容器应用的CPU使用率容器应用的CPU使用率容器应用每分钟内存增长容器应用每分钟内存增长容器应用内存使用率(不含cache)容器应用内存使用率(不含cache)容器CPU的限额容器CPU的限额容器应用消耗的CPU的时间容器应用消耗的CPU的时间容器应用内存限额容器应用内存限额容器应用内存占用量(不含cache)容器应用内存占用量(不含cache)容器CPU的总时间容器CPU的总时间容器状态监控容器状态监控业务和应用监控业务监控指标交易量反映业务系统的交易量大小交易成功率反映业务交易执行是否正常交易时长反映业务系统的交易的性能是否正常应用监控指标Web应用返回码反映Web应用运行是否有异常应用响应时间反映应用的性能状况会话数、会话连接反映应用的可用性及负载监控项示例:1、OS101003_{HOST.IP} has just been restarted! [主机已重启]101009_{HOST.IP}_{HOST.IP}_{#FSNAME}_Free disk space is not enough on volume! [磁盘空间不足]101027_{HOST.IP}_CPU usage pecentage is high! [操作系统CPU利用率过高]2、DB101031_{HOST.IP}_elastalert_{HOST.IP}_Slow sql found! [RDS中有sql执行时长超过60秒。详情: {ITEM.VALUE}]101035_{HOST.IP}_{#APPNAME}_Mysql slave_IO/SQL_Running status error![MySQL主从复制异常:Slave_IO_Running状态异常]101037_{HOST.IP}_{#APPNAME}_connect status check failed![MySQL {#APPNAME} 检查连接异常]101040_{HOST.IP}_Process restart! [DB进程重启]3、容器101019_{HOST.IP}_Docker CPU usage percentage is high! [容器内CPU使用率过高]101021_{HOST.IP}_Docker memory usage percentage is high! [容器内内存使用率过高]101039_{HOST.IP}_Docker_ {#IMAGES} container_id_list change[{#IMAGES}容器id发生变化]4、业务应用106003_{HOST.IP}_DataTool job scheduling error! [DataTool作业调度异常]106042_{HOST.IP}_BatchFileProcessBO__export_File {fileName}({fileSize}) is over size[批处理导出的文件大小超过了上限值]106023_{HOST.IP}_Found airflow gunicorn process missing![DataTool的airflow gunicorn进程消告警ID规则1、伙伴(第三方厂家)告警ID编号规则:{厂家名称缩写}{产品名称缩写}_{产品内告警定义序号}。例如BPIOT_000012、告警名称规则:{告警ID}_{描述}表2 告警名称规则和示例规则示例{厂家名称缩写}{产品名称缩写}_{产品内告警定义序号}_{描述}新基点IOT的告警ID和告警名称:BPIOT_00001_xxx模块有xxx异常奥看的告警ID和告警名称:Allcam_00001_xxx模块有xxx异常伟岸GIS的告警ID和告警名称:VRGVGIS_S0001_xxx模块cpu占用率高巡检项ID规则巡检项编号用于唯一区分每个巡检项目。巡检项编号由10个字符组成,字符包括A~Z的字母和0~9的数字。例如HI1500101B表3 巡检项ID规则 字符位置解释第1、2、3位表示巡检标准代号,固定为“HI1”表示为HiCampus inspection standardard version 1。第4、5位子系统编号,代表智慧园区解决方案里的子系统,如下子系统已经预定义编号,如果有新增子系统,需要申请新的编号,以免出现编号重叠冲突。01:ABC/Bingo02:ROMA03:数据平台(包括DataTool)04:操作系统OS通用巡检项,包括VM、物理服务器等05:数据库DB通用巡检项(gaussdb、mysql)06:HiCampus Core巡检项(IO、BO、DO)07:HiCampus 业务巡检项(空间&设备&GIS&环境、综合安防、综合态势、系统管理&便捷通行等)08:AI巡检项09:原生服务巡检项50及以后:伙伴定制定制巡检项第6、7位子系统内的各类模块/网元的编号,由子系统内部自行编号,取值从00,01,02,…,99,A0,A1,…,Z9。第8、9位巡检项目编号。从00开始编写,取值01,02,…,99,A0,A1,…,Z9的方式递增。第10位巡检项目的问题性质,用“A”、“B”和“C”表示,如下表所示。A:表示重要问题,指参数配置或数据设定等会对设备运行带来重大隐患或致命的问题,必须整改,否则应记录到工程备忘录(因客户原因造成),并在质检(自检)报告中说明原因。扣分权重大于等于3分。B:表示次要问题,指对设备运行会造成影响,但不会发生严重损害的问题,必须整改,否则在质检(自检)报告中说明原因。扣分权重大于等于1分。C:表示其他问题,指对设备的运行影响非常小或没有,但属于需要规范的数据问题,建议整改。扣分权重大于等于0.5分。
  • [问题求助] 如何在adb ucmsbr时设置简单的认证密码
    【问题来源】     比亚迪【问题简要】 在执行ADB UCMSBR是配置认证密码,要配置成一个复杂密码,如何配置成一个简单密码,比如一串数字【问题类别】【必填】 UAP9600 【AICC解决方案版本】【必填】    UAP9600 V100R005C00SPC108【期望解决时间】  尽快【问题现象描述】【必填】在执行ADB UCMSBR是配置认证密码,要配置成一个复杂密码,如何配置成一个简单密码,比如一串数字
  • [统一运维] 【统一运维】系统可视介绍
    概念谈到运维,监控应该是运维的重中之重。监控应该是运维的第三只眼睛,一个好的监控平台对运维工作本身来说,应该有很大的帮助。运维的核心工作其实是监控和故障处理。两个方面的工作首先是对这个业务系统运维要有一个精确的完善的监控。那么目的就是能够保证在第一时间去发现问题并且去通知相关人员解决问题。其实出现问题了并不可怕,可怕的是运维很久没有发现问题,那么最终被客户发现运维的业务系统出现故障,那么就是个很严重的问题了,这些都是靠监控平台来完成的。OPS运维平台介绍图1 OPS运维平台介绍总体场景说明:资源监控:监控虚拟机、容器、应用进程资源状态。应用监控:监控应用的时延、负载、使用率、错误等。监控拨测:定时检查APP/BO是否正常。告警管理:可管理资源监控产生的告警,或者日志产生的告警,或者应用通过接口上报的告警。日志管理:可管理OS、容器平台和应用的日志信息。巡检总览:提供系统巡检框架,展示巡检状态。配置总览:提供配置下发功能,保持配置变更。平台与应用资源采集包含以下两种场景:虚拟/容器类平台:OPS配置后,采集资源信息。应用类采集:配置相应的进程信息,OPS根据对接进程资源进行监控。平台与应用日志采集有以下两种方式:主动采集日志:ops可以通过配置对采集os、docker日志,对于应用类日志,通常需要是文本、且存放位置可访问才可采集。对接采集日志:对于未符合采集要求的应用,可以ops提供日志上报接口,可以由应用调用ops接口上报日志。告警、KPI、日志接入园区的运维台的方案图2 接入园区的运维台方案介绍说明:目前所有部署形态(例如HC,HCS,Cube)下都可以接入本地线下运维台,但是Cube部署形态能够接入线上运维台。产品的KPI和告警: 通过Zabbix Agent或者Zabbix Sender上报给Zabbix Proxy,或者直接调用Zabbix的API接口上报。需要支持同时上报到两个Zabbix Proxy。 Grafana可以读取Zabbix Server中的KPI数据展示图标。产品使用的中间件的监控KPI和告警也有对应产品负责。产品的日志文件:日志通过Filebeat采集,上报给园区OPS的logstash,logstash对日志进行规整和解析后存入ElasticSearch。运维人员可以通过Kibana检索日志,Grafana可以读取ES中的KPI数据展示图标。ES触发的告警、Grafana触发的告警可以通过Webhook上报给Zabbix Server。伙伴开发流程定义监控的KPI和告警。开发SDK或脚本来上报KPI和告警。开发Zabbix的主机模板、KPI模板、告警模板等。filebeat的采集配置。设计和开发Grafana上的视图模板、告警模板等。
  • [运维宝典] hive设置永久udf函数流程(启用Ranger场景,未在ranger中设置用户为is Role admin权限)
    背景:由于有些场景在启用Ranger情况下,客户在分配权限时候对高权限有特别要求,尽可能给用户设置低权限,无法在ranger中设置用户为 is Role admin权限(hive管理员权限)测试版本:MRS-3.1.2版本(hive启用ranger鉴权)操作流程:1、在Ranger中配置用户具有udf创建查看权限以rangeradmin用户登录Ranger——>点击hive​添加一个新的策略​创建策略(注意步骤2可以选择指定库,步骤3中默认是table要选成udf,值可以定义为*)​(步骤4选择添加的用户,步骤5中至少要给create权限,drop权限为删除udf函数权限可选是否给)​2、在客户端安装节点,把UDF函数jar包打包(如AddDoublesUDF.jar),并上传到HDFS指定目录下(例如“/user/hive_examples_jars”)。创建函数的用户与使用函数的用户都需要具有该文件的可读权限。示例语句:hdfs dfs -put ./hive_examples_jars /user/hive_examples_jarshdfs dfs -chmod 777 /user/hive_examples_jars3、安全模式,需要使用具有udf create管理权限的用户登录beeline客户端,执行如下命令:kinit Hive业务用户beeline4、在Hive Server中定义该函数,以下语句用于创建永久函数:(其中addDoubles是该函数的别名,用于SELECT查询中使用)CREATE FUNCTION addDoubles AS 'com.huawei.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar';以下语句用于创建临时函数:CREATE TEMPORARY FUNCTION addDoubles AS 'com.huawei.bigdata.hive.example.udf.AddDoublesUDF' using jar 'hdfs://hacluster/user/hive_examples_jars/AddDoublesUDF.jar';•addDoubles是该函数的别名,用于SELECT查询中使用。•关键字TEMPORARY说明该函数只在当前这个Hive Server的会话过程中定义使用。5、在Hive Server中使用该函数,执行SQL语句:SELECT addDoubles(1,2,3);6、在Hive Server中删除该函数,执行SQL语句:DROP FUNCTION addDoubles;
  • [技术干货] 【2.3管理中心】RPA管理中心部署常见问题
    1、安装管理面,在安装FusionStage报错:无法连接pass-core01节点的22端口定位过程:①登录paas-core01节点,输入ss -anot命令,发现没有om网卡ip放通22端口②查看sshd_config文件,发现om网卡ip没有监听解决方法:进入/etc/ssh/sshd_config文件,增加OM网卡ip监听地址2、数据面adc-batch服务安装异常,error:adc-batch status is abnormal定位过程:登录管理面前台页面查看到,该服务的实例正常,但堆栈状态异常,堆栈创建失败。该服务的日志也没有报错且服务安装成功。Gkit页面因堆栈状态刷新失败,仍显示之前安装失败结果。解决方法:刷新adc-batch堆栈状态①登录管理面前台,依次点击“应用上线”->“TOSCA堆栈部署”->“adc-abtch堆栈”,点击重载。②登录Gkit前台页面,点击“继续安装”。3、2.1版本升级2.3版本,升级数据面时报,报错:invoke lb api to delete original adc lb config route_adc_dmz_210.config failed原因:ADC预置证书失效解决方法:①以paas用户远程登录Linux虚机,进入Gkit目录②进入 adc-upgrade-package 证书路径cd tenant/adc-upgrade-package-2.3.0/scripts/adc-lb③将附件中 client-adc-enc.key 和 client-adc.pem 证书文件上传拷贝至当前目录,修改属主和权限,与现网环境当前目录下保持一致④替换证书后,Gkit页面点击“继续升级”。4、2.1升级2.3版本后验证,管理中心无法推送第三方推送的数据定位:进入adc-intg容器,日志中得出无法识别“default”原因:升级到2.3版本后追加了xms服务,xms服务没有对接intg服务,因此显示“default”解决方法:登录管理面前台页面,重启adc-intg服务。5、2.3.0升级2.3spc20版本,管理面准备阶段失败,报错:thinpool空间不足定位:以paas用户登录管理面后台,切换root用户,lvs查看到数据占有率较高。解决方法:清理管理面节点的thinpool操作步骤:以paas用户登录管理面后台,切换到root用户,执行以下命令。res=$(docker images | grep -v canal-agent | grep -v lib-roa | grep -v euler | grep -v cfe-pause | grep -v middleware | grep -v sles | grep -v db-preinstall | grep -v dpa-elasticsearch | grep -v kubenode-upload | grep -v coredns | grep -v ecm-upload | grep -v preset-broker | grep -v cfe-addons | awk '{print $3}');for i in ${res[@]}; do docker rmi -f $i; done如清理冗余后,Data%值仍为50%以上,大概率需要为thinpool扩容。 
  • [问题求助] 新人求助,yum安装perf后执行报错
    通过yum命令安装的perf,在执行时报错 yum install perf perf --help -bash: /usr/bin/perf: cannot execute binary file: Exec format error操作系统版本:euleros2.0linux版本:Linux version 5.10.0-60.18.0.50.h322_1.hce2.x86_64perf版本:perf-5.10.0-60.18.0.50.r665_5.hce2.x86_64
  • [技术干货] 【2.1管理中心】RPA管理中心配置域名访问操作指导
    背景: OP(私有化)环境部署后,运维页面和管理中心是以“ip+端口”形式访问,如访问形式改为“域名+端口”,需要在系统中添加域名访问方式。 前提条件: 已申请域名,此域名映射为公网ip 操作步骤 按照文档:见附件
  • [问题求助] AICC 8.22.100 CMS安装完登陆报401错误
    【问题来源】深圳星网【问题简要】CMS登陆报401错误【问题类别】【必填】AICC-CMS【AICC解决方案版本】【必填】    【MYSQL 5.7数据库】    【AICC 8.22.100】    【UAP UAP9600 V100R005C00SPC100】    【CTI  ICD V300R008C25SPC007】             【期望解决时间】【选填】尽快问题现象描述】【必填】附相关日志
  • 检查gaussdb进程配置OS core是否生效工具
    工具功能在DWS数据节点配置OS core后,检查配置core是否生效。注意事项1.该工具只能检查单节点配置是否生效。2.执行用户 root/omm/Ruby均可。使用方法1.将检查工具check.sh上传至待检查节点,附件为check.txt改为check.sh,执行dos2unix check.sh。2.执行sh check.sh -s unlimited检查该节点gaussdb进程可core大小是否为unlimited配置生效回显     ulimit -c is same as checksize ${size}.Configuration takes effect配置未生效两种回显  1.检查ulimit -c 不匹配ulimit -c is different from checksize, ulimit is ${ulimit_size} checksize is ${size}.2.检查/proc/${pid}/limits不匹配Configuration is not effective. Please see the checkresult.log.未生效请参考配置core工具操作,重新配置后再检查。配置OS core工具案例 https://bbs.huaweicloud.com/forum/thread-192730-1-1.html
  • [技术干货] 【管理中心】虚拟机组网上下电操作指导
    一、上下电总流程1、下电操作流程2、上电操作流程3、注意事项Manas、Portal、API Fabric、ADC等依赖DSP的中间件服务,所以下电时,需要先批量停止Manas、Portal、API Fabric、ADC等应用的堆栈,再批量停止DSP所有堆栈;上电时,先批量启动DSP所有堆栈,再批量启动Manas、Portal、API Fabric、ADC等应用的堆栈。下电前需要停止APP安装、升级和运维操作。二、操作步骤详细操作指导见文档:虚拟机组网上下电操作指导
  • [运维二三事] DevOps学习心得与技巧分享
    一、 DevOps 的本质DevOps从本质来讲只是倡导开发运维一体化的理念(MindSet)。这个理念的提出是为了解决很多企业面临的转型挑战,也就是将业务数字化,并且缩短数字化业务上线的周期,快速试错,快速占领市场。DevOps并没有改变固有的软件生命周期:需求,设计,开发,测试,交付。但伴随着基础设施,软件设计方法等的改变,软件开发的思路,或者方式产生了比较大的变化。DevOps带来的最大好处是,软件生命周期数据链路的打通。这不仅仅是运维和开发的结合。从顶层视角看,这是业务和生产的紧密结合。以前从业务和开发是脱节的。想要查看需求的实现进度,需要大量的人工汇报,更别提运营了。而现在以一个微服务实现一个特性的粒度来看,可以从需求,开发,测试,部署一直追溯到这个特性运营情况。这也是DevOps成为数字化企业基因的原因,业务和生产实现了完美的结合。从敏捷实践的角度来讲,你会发现开发组织中参与者好似生物体中的神经元,大家各司其职,自成一体,接受反馈,并向外主动反馈。团队的自组织使得工作更加自然,能产生更大的效能。由以前的项目经理驱动,改为自我驱动的协作方式。每个人都可以给相关的团队以及责任人提需求,大家有机的协调在一起。二、 微服务、容器和DevOps的关系微服务只是一种设计思路,或者说他给出了如何用正确的方法来进行SOA的实施。理论上来讲他的确和DevOps没什么关系,但是从如何实践DevOps的角度来讲,微服务是非常有意义的。此外,随着诸如Spring Cloud以及微软Fabric等SDK的完善,微服务开发模式也逐步完善,实现了概念的落地Docker可谓是一种敏捷化的虚拟化技术(较之虚拟机而言)。其实微软Fabric或者CloudFoundry也都脱离开容器的概念提供了微服务开发的解决方案,所以这两者并不是强绑定的关系。但是容器用不可变配置架构实现了微服务从开发到运维的质量保真度,这恰好解决了粒度小,数量多的微服务所带来的运维难题。再加上K8S,Swarm等容器云的支持,docker容器已经形成了事实上的标准。如何利用这个强大的运行环境帮助企业敏捷,推进业务数字化,并且加快业务的投产? DevOps为上面所说的开发模式提供了软件生产线。所以总结的来讲,企业业务敏捷是DevOps发展的直接推动力,容器云,以及微服务为DevOps提供了技术可行性。而敏捷帮助提高DevOps工作效能。对于团队的拆分,这个问题真的要结合产品规模来看。团队的拆分有很多办法,贝索斯说的two pizza team,是建议一个团队中的人尽可能少,不要超过两个Pizza能吃饱的规模。用敏捷实践来讲,可以分为多个特性团队,以及维护团队,不同的团队各司其职,合理分工。在我以前的实践中,三个人可以做一个Feature,来交付一个月迭代的工作量。当然将原有的巨石应用分割成更小的微服务是挑战很大的事情。因为理论上的微服务的设计对现有的团队组织结构,以及工程师设计能力都带来了一定的挑战。有些组织按照DDD(领域驱动的设计)的方式去实践微服务,会发现以前一个应用的复杂度变得很高,对项目管理来讲也是一件头疼的事情。现在有个比较新的看法就是,大家宣称做微服务(MicroService)的时候,实际上做的是迷你服务(MiniService)。迷你服务的粒度较之微服务的粒度更粗一些,关注度由一个域Domain,变成了能力。一个迷你服务提供一种能力,这种能力的提供也许是跨越多个域的。最好的方法是以一个团队能承担的任务划定微服务的界限比较好,这样以来,不论是任务管理,代码构建,产品部署都会比较好做。更关注服务的能力,这样也会减少因为跨域而带来的复杂事物处理。三、关于DevOps学习和运维的一些注意事项1、代码管理,很多公司对代码管理非常头痛,尤其是客户多了,版本就乱,一次升级就成了一场灾难,因此,代码管理确实非常重要。2、项目进展管理,时间、成本和质量是项目管理的三要素,作为项目经理必须做好平衡。也需要协调好甲乙方资源,推进项目的完成。3、问题管理,要常规运用事故管理的模式,对问题进行根源分析,提出改进意见。这里用好PDCA,RCA这些管理工具,非常有必要。4、系统架构的稳定,架构不是一成不变的,也不应有普世标准。我们看《淘宝十年》就会发现,在不同时期,不同的体量规模下,淘宝的技术架构也在不断调整,稳定中的迭代发展是必由之路。但无论是什么时期,一个稳定可拓展的架构会让系统运维起来更顺利,体验更好。5、测试问题,不说啥黑盒白盒测试了,反正我觉得测试这个环节做的蛮不好的,我们用的软件不说进行漏洞测试了,就是一些错误都是上线了再去发现。比较欣慰的是,医疗信息化软件未来可能会作为医疗器械进行管理了,这样一来,一定会提升行业对测试工作的重视程度了。6、知识积累及传递,一个公司一个部门多年的实践经验的总结,这些总结需要靠时间的积累,在经验和教训的积累下慢慢沉淀。当你拥有了丰富的行业知识,你也就成了老油条了。一个团队需要从老油条身上提炼出老油来,这样对于公司和单位的能力提升都很有好处。小鲜肉一抹此油,容光焕发呀。7、运维前端可配置,与用户接触最紧密的就是我们的运维工程师,用户对他提出的需求也最多,系统的灵活性体现在他能运用何种工具对所管理的系统进行客户化配置,以适应客户的大量且多样的需求。如果运维工程师啥都干不了,不但影响公司形象,也会大大拉低研发工程师的效率。8、性能监督和度量,监督和度量能够让我们了解系统的瓶颈和改变方向,尤其是利用一些锚点设置,更能了解用户的习惯,促进用户画像数据的产生,从而做到比用户更了解他自己,做出更好的产品。9、团队建设构建协作共进的IT文化,协作共赢,相互信任是DevOps的初衷和追求目标。而要达成这个目标,就需要培养团队成员之间的认同感。这种认同感不仅是在工作中产生,也需要通过文化进行熏陶和培养。10、采用必要的自动化管理工具,很多新的工具确实是当年没有的,一些新技术的运用,也让当年的一些模式和方法需要改进。自动化的工具会让我们工作更有效率,沟通更顺畅。(关于DevOps具体如何学习大家可以参考以下链接:cid:link_0)
总条数:95 到第
上滑加载中