简单的运维操作hotfix
以下为我认为技术支持需要掌握的简单的运维操作命令:
1.查看服务日志
打个比方,需要查看schedule日志
docker ps|grep schedule
会获取schedule的容器id,下图左边的1bd31a716bbd就是schedule的容器id
然后docker logs -f 1bd31a --tail 200 就可以查看schedule的容器日志,--tail 200的作用是限制logs的输出,不然会太多一直打印。
其他的容器日志同理,docker ps|grep 服务名,获取id后,docker logs -f <容器id> --tail 200即可查看日志。
那我会查看日志了,我怎么把他导出到一个文件拿出来给开发看,或者说容器重启后日志就没了,我想保存下当前日志怎么弄呢?
以上述schedule日志为例,怎么导出?
docker logs -f 1bd31a > schedule.log
> 的作用是将输出重定向到一个文件中,覆盖掉原先的文件的内容,如果是新文件就是将内容导出到新文件。
2.更新镜像操作,尤其是web
某些客户是有测试环境的,测试环境的更新web、更新其他服务镜像的操作可以自行操作,生产环境的自己有把握也可以自行操作,或者让运维操作,或者运维在旁观看,技术支持操作。
登录环境后,首先查看服务环境是什么版本,是单机还是多机,怎么判断呢
如下图所示,服务名带有youdata就是单机,如果是ydswarm就是多机,镜像tag8.18就是818版本,判断这个的目的在于web镜像更新需要在单机做还是多机都需要做。
怎么查看web镜像:
如下图,22a9开头的字段就是镜像id,怎么查看镜像id就通过docker images|grep 服务名 命令就可以
在操作更新之前,习惯是需要备份下镜像
docker tag localhost:5000/yddocker/web:lts-8.18 localhost:5000/yddocker/web:lts-8.18_bakxxxx(xxxx通常为日期)
这一步操作是为了备份镜像,防止万一更新后出了问题可以再使用之前的镜像,方便回滚。
然后将需要更新的web镜像包解压,
tar xvf web-8.18-240802-1516-8f8155-f43e52-4708fe.tar.gz
解压后会有个tar包,和一个带有包日期的config文件,现在基本上config都是对的上的,不用管,但我的习惯还是比对下md5值。如下图:
这么做的意义是为了保证新的web包和原先的config下的文件是完全一致的,这样服务不会出问题。
然后load新的web镜像包
docker load -i web-lts-8.18-4708fe.tar
执行完成后,docker images|grep web 检查下镜像id是否对的上,比如web-lts-8.18-4708fe.tar这个包就是4708fe开头的镜像id。
最后重启web,inner-web服务
docker service update --force youdata_web
docker service update --force youdata_inner-web
如果环境是双机,甚至是三机的环境,就需要每台机器上都需要做一次上述的操作,最后重启web,inner-web的命令为
docker service update --force ydswarm_web
docker service update --force ydswarm_inner-web
执行完成后,dp|grep web查看web容器启动的时间,或者dv ls查看整体的服务状态
curl localhost/api/dash/hello 调用接口查看返回是否有数据,有数据就更新完成。
3.更换LICENSE
拿到license之后,需要上传到服务器上传到/youdata/目录下。
将原来的license进行备份:
然后将上传的新LICENSE改名后弄到/youdata/目录下
mv LICENSE /youdata
最有一步通过命令(bash /youdata/scripts/status_reset.sh youdata)重启所有服务:
等待执行完毕
如果是多机器或者双机需要每台机器的/youdata下都传新的LICENSE,并执行bash /youdata/scripts/status_reset.sh ydswarm这个命令。等待执行完成。
最后一步再清理一下da的缓存
单机清理redis缓存
进入服务器里面,使用dx youdata_redis命令,进入redis,执行bash:
然后执行 redis-cli -a youdata:
在执行flushall命令和dbsize :
执行完成之后exit退出就可以了
如何再redis清理da缓存
进入服务器里面,查看清理的命令,cat /youdata/scripts/status_reset.sh:
redis-cli -a youdata scan 0 match "da*" count 10000000 | xargs redis-cli -a youdata DEL
进入redis容器里面:
dx youdata_redis
执行上面的语句:
多执行几次,当(integer)为0的时候,才算清理完成
然后退出redis容器(exit命令),重启一下da容器:docker service update --force youdata_da。
重启完成之后刷新一下页面就可以了。
4.基础监控查看
基础监控是monitor组件,dv ls查看服务有无monitor开头的,没有就是没有部署监控,有的话就是部署了监控服务
监控服务的配置文件在/youdata/installer下的docker-stack.monitor.yaml,登陆监控的用户名密码默认是
youdata,YOUDATA_2017security。如果有改动会在下图的grafana服务里修改。
5.查看服务日志
容器日志有时候太多,看不出有用的信息,需要进入宿主机日志目录下看对应服务日志。
/youdata/logs下有多个服务名称的文件夹:
需要看哪个服务日志,进入到对应文件夹,看对应日期的log就可以
查看log的命令 less xxxxx.log就可以,按q退出。
以上内容对您是否有帮助?