运维规划之标准化与自动化
一,运维标准化:
- 程序启动的用户
- 程序systemd service文件
- 主目录
- 主目录/二进制
- 主目录/配置
- 主目录/数据
- 主目录/日志
- 动态库或插件
- 比如filebeat:
-
home
Home of the Filebeat installation.
path.home主目录
bin
The location for the binary files.
{path.home}/bin二进制
config
The location for configuration files.
{path.home}配置
path.config
data
The location for persistent data files.
{path.home}/data数据
path.data
logs
The location for the logs created by Filebeat.
{path.home}/logs日志
path.logs
安装部署:
1,使用程序权限启动,
etcd,用etcd用户和etcd组
mongodb,用mongod用户和mongod组
2,二进制安装目录
/usr/local/mongodb/bin
/usr/local/etcd/bin
3,配置文件
/etc/mongod.conf
/etc/etcd.conf
/etc/nginx/default.conf
配置文件的权限,基本都是只有root用户可以更改以及所运行的程序可以更改。
一般默认是属于root用户,且权限为644
the config file at /etc/{beatname}/{beatname}.yml
will have the proper owner and permissions.
The file is owned by root
and has file permissions of 0644
(-rw-r--r--
).
4,数据目录
有数据盘,放/data下
无数据盘,
放/var/lib/mongod
/var/lib/etcd
5,日志目录
/var/log/应用名
6,pid目录
/var/run/应用名
-----------------------------------------------------------------------------------------------------------------------------------------
二,运维自动化:
(
发布系统:
现在已经有了基于gitlab,flask,ansible的cicd发布系统:https://www.cnblogs.com/mmgithub123/p/15951497.html,
然后按发布系统做checklist:
1,wiki里的cmdb,有变更第一时间更新,这里cmdb可以做成程序自动化
2,git里的发布系统资产配置。:
配置:/-/tree/main/conf
脚本:/-/tree/main/script
systemd的配置:/-/tree/main/systemdService
注意:目前Windows的进程管理配置文件还没有自动解决的方案,如果有更新,目前需要手动停止,copy,在手动启动
hosts的配置,所以运行资产的数据来源,很重要 /-/blob/main/hosts
3,更改falcon监控系统相关配置,这里也可以程序调用falcon接口自动化
4,进行引擎的checklist:扩容引擎 checklist,这是业务相关的checklist
6,最后验证程序运行正常:sh all_element_per_status_ansible.sh , sh windows_all_element_per_status_ansible.sh
)
安装部署中间件:
0,提前部署好中间件,比如etcd,kafka,redis,mongodb,samba,对象存储,jaeger等
在samba客户端挂载时,需要
sudo mount -t cifs //ip地址/scandata /opt/scandata -o uid=(指定挂载后目录的属主),gid=(指定挂载后目录的组),username=,password=
在fstab里:
//ip地址/scandata /opt/scandata cifs uid=,gid=,rw,suid,dev,exec,auto,nouser,async,username=,password= 0 0
mongodb最佳实践
mysql
mongodb
mongodb分片架构
etcd
redis
kafka
应用程序发布实施:
1,建立程序账户:testuser系统账户 uid为10000 属于testuser组 没有登录shell
ansible all -m shell -a "groupadd testuser"
ansible all -m shell -a "useradd -u 10000 -r -g testuser -s /sbin/nologin testuser"
1.1,review配置里的每一个字段,做到可解释
2,创建程序主目录,并更改为app所有(这个要在复制程序和配置之后做)。应用程序部署在/opt下。这里是否要建立bin conf log等子目录看自己场景
ansible all -m shell -a "sudo mkdir -p /opt/cloudscan/"
3,复制二进制程序和配置到程序主目录。复制完成后更改为app所有
ansible front -m copy -a "src='/home/kjs/cloudscan/app_bin/v0.0.0/app/csfront' dest='/opt/cloudscan/' mode=0755" 注意这里要带上权限,不然复制后会丢失可执行权限
ansible front -m copy -a "src='/home/kjs/cloudscan/scand_conf/csfront.yaml' dest='/opt/cloudscan/'"
ansible front -m shell -a "sudo chown -R app:app /opt/cloudscan/"
4,复制systemd service文件。并指定开机自启动
service文件:
[Unit]
Description=csfront process
[Service]
User=app
Group=app
Type=simple
Restart=on-failure
ExecStart=/opt/cloudscan/csfront --conf=/opt/cloudscan/csfront.yaml
[Install]
WantedBy=multi-user.target
ansible front -m copy -a "src='/home/kjs/cloudscan/systemd_service_file/csfront.service' dest='/usr/lib/systemd/system/'"
systemctl enable csfront
systemctl daemon-reload
systemctl start csfront
5,安装额外的库,plugin,tool
Image-ExifTool
trid等
6,接入日志
eck:Elasticsearch running in k8s use Kubernetes operator
es
当组件配置不能解决问题的时候,编写golang程序解析日志并发送至kafka:
https://github.com/mmgithub123/producer-consumer
7,接入监控
open-falcon
基准测试+线上监控图形+报警阈值
sre之监控报警---当我们监控报警的时候我们应该监控报警什么?
备份方案:
备份
例行工作与值排班:
1,每日处理:
windows 系统更新
2,报警处理
3,服务请求:
加权限
数据库ddl
盘点资产(生产发布review)做物理及逻辑架构图
部署脚本标准化,如开机自启,崩溃重启等
崩溃重启,可以用systemd管理
服务开机自启,需要 systemctl enable service-name
比如nfs开机自动挂载,需要向/etc/fstab写入:
10.10.33.38:/data /mnt/data/ nfs defaults 0 0
等等这些。
压力测试
容量规划
扫描量 20到50万
查询量时扫描量二到5倍(有突增)