前言
在实际工作中,常需要初始化系统,批量执行命令或脚本,上传文件等操作。
为便于以上操作执行和查看结果,故开发“基础运维作业平台”,现已在生产上使用.
下面把开发用的组件和平台主要功能介绍下。
主要开发用组件
1 | saltstack |
主要功能
选取执行目标
可从cmdb平台,saltstack分组, 自定义动态分组选取待执行目标主机。
下图是从cmdb平台选取执行目标主机.
勇于尝试心中所想
在k8s中部署gocd-server,因需要持久化数据,gocd-server相关数据目录挂载到了nfs volume,
但这导致gocd-server启动失败.错误提示如下:
1 | root@master01:~/k8s-test/gocd-server# kubectl logs -f test-gocd-server-deployment-5c849557d9-5prc2 -n test |
xtengine
封装tengine为docker镜像, 基于cloudposse/tengine,增加了状态监控和动态调整upstream pool,后期会加入监控和管理UI。
install & config
docker run -d -p 80:80 -p 443:443 -p 8081:8081 itwye/xtengine
在你的工作主机增加dns解析, 如在”/etc/hosts”增加如下, $docker_server请替换为你的docker宿主机IP.
1 | $docker_server prod.xtengine.com |
Summary
在更新nginx upstream pool时,一般方案是更新nginx配置文件,然后reload nginx, 在nginx繁忙时会导致worker process长久处于shutdowning,
在频繁reload ng时,可能会导致nginx挂掉.
本文用的方案是:consul + cosnul-template + tengine dyups + python script , 当服务有变动时,触发consul-template渲染模板并持久化,同时
consul-template触发执行python脚本,python脚本先调用consul api获取对应服务信息,然后将新的服务信息调用dyups管理接口写入nginx upstream pool.
这个方案有两个好处, 一是将nginx upstream pool持久化了 二是在服务出现变动时,不需要再reload nginx了。
简略流程如下: