zoukankan      html  css  js  c++  java
  • CMDB和运维自动化

    CMDB和运维

    一、传统运维和自动化运维

    1、传统运维

    • 日常工作繁琐
    • 应用运行环境不统一
    • 运维及部署效率低下
    • 无用报警信息过多
    • 资产管理和应用管理混乱

    2、自动化运维

    • OS的选择统一化,同一个项目使用同样的OS系统部署其所需要的各类软件
    • 软件安装标准化,例如JAVA虚拟机,php,nginx,mysql等各类应用需要的软件版本,安装目录,数据存放目录,日志存放目录等
    • 应用包目录统一标准化,及应用命名标准化
    • 启动脚本统一目录和名字,需要变化的部分通过参数传递
    • 配置文件标准化,需要变化的部分通过参数传递
    • 日志输出,日志目录,日志名字标准化
    • 应用生成的数据要实现统一的目录存放
    • 主机/虚拟机命名标准化,虚拟机管理使用标准化模板
    • 使用docker比较容易实现软件运行环境的标准化

    二、项目

    1、项目上线

    a. 产品经理前期调研 (需求分析)
    b. 和开发进行评审
    c. 开发进行开发
    d. 测试进行测试
    e. 交给运维人员进行上线

    2、收集服务器元信息

    a. excel表格
        缺点: 
            - 人为干预太严重
            - 统计的时候也会有问题
    
    b. 一个系统(CMDB)
        作用: 自动的帮我收集服务器的信息,并且自动的记录我们的变更信息

    三、CMDB(资产管理系统)

    CMDB是所有运维工具的数据基础

    1、CMDB的功能

    1. 用户管理,记录测试,开发,运维人员的用户表
    2. 业务线管理,需要记录业务的详情
    3. 项目管理,指定此项目用属于哪条业务线,以及项目详情
    4. 应用管理,指定此应用的开发人员,属于哪个项目,和代码地址,部署目录,部署集群,依赖的应用,软件等信息
    5. 主机管理,包括云主机,物理机,主机属于哪个集群,运行着哪些软件,主机管理员,连接哪些网络设备,云主机的资源池,存储等相关信息
    6. 主机变更管理,主机的一些信息变更,例如管理员,所属集群等信息更改,连接的网络变更等
    7. 网络设备管理,主要记录网络设备的详细信息,及网络设备连接的上级设备
    8. IP管理,IP属于哪个主机,哪个网段, 是否被占用等

    2、CMDB的四种实现方式

    (1)agent采集

    agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库

    # agent方式本质:
    在各个服务器上执行 subprocess.getoutput() 命令,然后将每台机器上执行的结果,返回给主机API,然后主机API收到这些数据之后,
    放入到数据库中,最终通过web界面展现给用户
    # 优缺点: 优点:速度快 缺点:需要为每台服务器部署一个agent脚本 # 使用场景 服务器较多的场景

    (2)ssh方式(基于Paramiko模块)

    中控机通过 Paramiko(py模块) 登录到各个服务器上,然后执行命令的方式去获取各个服务器上的信息

    # ssh方式本质:
    中控机获取主机列表,登录服务器主机,利用paramiko模块获取服务器信息。中控机将信息发给API,API将结果写入数据库。
    后台管理可以从数据库中将服务器的信息数据从数据库中读出。
    # 优缺点: 优点:不用再服务器上部署agent脚本 缺点:速度慢,需要一台中控机登录服务器 # 使用场景 服务器较少的场景

    (3)salt-stack方式

    # 本质
    中控机将命令放在ZeroMQ队列中;服务器从队列中取通过执行:salt.cmd('主机地址', 'ifconfig命令')。服务器执行完命令,将结果(服务器信息)放进另一个队列中;
    中控机从结果队列中取出结果。中控机将服务器信息发给API,后台管理可以从数据库中将服务器的信息数据从数据库中读出。
    # 优缺点 优点:速度快, 开发成本低 缺点:每一台需要部署salt-stack # 使用场景 企业的服务器以前就装好了salt-stack

    (4)Puppet方式(很少用)

    Ruby语言开发。
    每隔30分钟,通过RPC消息队列将执行的结果返回给用户

    四、salt-stack的安装和配置

    1、安装和配置

    '''master主机端'''
    # 1. 安装salt-master
        yum install salt-master
    # 2. 修改配置文件:/etc/salt/master
        interface: 0.0.0.0    # 表示Master的IP 
    # 3. 启动
        service salt-master start
    
    
    '''slave从机端:'''
    # 1. 安装salt-minion
        yum install salt-minion
    # 2. 修改配置文件 /etc/salt/minion
        master: 10.211.55.4           # master的地址
        或
        master:
            - 10.211.55.4
            - 10.211.55.5
        random_master: True
        id: c2.salt.com                    # 客户端在salt-master中显示的唯一ID
    # 3. 启动
        service salt-minion start

    2、授权

    salt-key -L                # 查看已授权和未授权的slave
    salt-key -a  salve_id      # 接受指定id的salve
    salt-key -r  salve_id      # 拒绝指定id的salve
    salt-key -d  salve_id      # 删除指定id的salve

    3、执行命令

     在master服务器上对salve进行远程操作

    salt 'c2.salt.com' cmd.run  'ifconfig'

    参考安装:http://www.cnblogs.com/tim1blog/p/9987313.html

  • 相关阅读:
    Atitit sql计划任务与查询优化器统计信息模块
    Atitit  数据库的事件机制触发器与定时任务attilax总结
    Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx
    Atitit 图像处理 深刻理解梯度原理计算.v1 qc8
    Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx
    Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
    Atitit View事件分发机制
    Atitit 基于sql编程语言的oo面向对象大规模应用解决方案attilax总结
    Atitti 存储引擎支持的国内点与特性attilax总结
    Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折
  • 原文地址:https://www.cnblogs.com/zhangbingsheng/p/10242097.html
Copyright © 2011-2022 走看看