运维工具ansible+cobbler+zabbix

运维工作

一.系统

硬件----部署操作系统---多个主机

如何高效的安装操作系统

1.部署在裸机上的操作系统 bare metal

pxe预执行环境:网卡自身有一个rom,可以自己加载来获得IP地址,能够到文件服务器上加载bootloader文件,依赖于网卡和网络预先提供的安装服务

但是pxe只能预引导1中操作系统

二次封装的pxe:cobbler 将多版本的操作系统环境支持 *

【但是都需要支持pxe】

2.虚拟机器 virtual machine *

二.程序

configurtion 自动完成安装程序,到配置文件的都可以完成

puppet(ruby)所有互联网公司都在使用 *

saltstack(python)与puppet一个作用 开发语言不同而已

【两者都很重量级,没有达到几十上百台不能良好发挥,成本也高,门槛也高】

所以,有了ansible,早些年的chef,cfengine等configurtion

三.操作

command and control:批量运行一些命令,统一命令操作工具

fabric(python):轻量级

func

ansible *

以及监控工具*

四.程序发布(电子商城,论坛)

1.人工智能(手动发布)

2.脚本

3.发布程序:公司内部研发的专门的运维程序框架

要求:

1.【给飞行中的飞机(双发)换发动机】

不能影响用户体验

2.系统不能停机

3.不能导致系统故障或系统完全不可用

【程序发布一般不会在访问量很多的白天进行,=并且在系统部署的时候要留有性能空间,即便停止一部分设备,剩余的也可以轻松的处理请求,所以部署的时候要预留30%左右的性能,但是又容易造成性能浪费,所以有了弹性计算】

弹性计算:如果发现用户量很小,一批一批的而关闭主机,用户量大的时候,一批批的开启

灰度模型:

一次只更新一部分主机,一般在凌晨,访问量较小,将一部分的权重该为零,然后停止服务器,添加新应用,重启,改回正常的权重,然后看请求是不是正常进行,正常就依次重启

1.基于主机做灰度

2.基于用户做灰度

发布路径

在调度器上下线一批主机(标记为维护模式--软离线)---关闭服务(后端主机的服务)----部署新版本---启动服务(后端主机服务)----调度器上启动这些主机

版本上线   应用程序发布

问题:

1.但是如果有回话怎么办

一般session都是放在server上的

【http的长连接是不超过10秒的,权重设置为0的等10秒就好了可以下线(冷模式,一定要停掉,反正已经下线了)了,有回话就等回话的最长时间】

2.发了新版本后发现有bug怎么办

回滚

3.如果用户上传文件了怎么办,又不能覆盖

一般nginx可以将用户上传的文件(静态)单独放到一个目录或服务器来,到时候软连接等就好

五.运维工具分类

管理主机需要拥有被管理主机的特殊权限,但是不安全,所以有了两种方式

无agent(agentless): ansible,

ssh,但是管理主机会有被管理主机的管理员用户账号密码,如果管理主机沦陷,后边的都有危险,于是,都创建一个基于sodu命令的用户

agent:puppet,func

每个主机都装一个程序,2者通过一个加密协议来进行通信,该进程由管理员的身份运行,所有命令都基于该程序运行,也就都有了被管理主机的管理员的权限

六.ansible:能够兼具以上四种功能的工具,第二种第三种完整提供【第一种在开发,第四种要自己配置】,轻量化

configuration

command and control

特性:

高度模块化:调用特定模块完成特定任务

基于python语言实现,paramiko pyYAML和jinja三个关键模块

部署简单:agentless

支持自定义模块

支持playbook(剧本,编排) yaml格式配置文件,可自行编写,可以编排:第一步做什么,第二部做什么...*

幂等性:一个命令执行一遍和多遍结果都一样,不回因为多次操作而变化*

快速失败:在一个程序出错,会快速的告诉你那里出错,不用自己找*

【ansible框架图】

playbook(剧本,编排) yaml格式配置文件,可自行编写,可以编排:第一步做什么,第二部做什么...,调用模块进行,做什么操作就写什么

connection plugins:连接插件,最有名的,标准,默认的是ssh

host..:清单,被管理主机清单,那些主机被管理都要列在里边,不在的将不被ansible管理

应用:一台ansible管理 三台被管理(2台c7,1台c6)

【扩展:要是又多了乌班图主机呢】

当你的被管理主机有不同版本的同一系统(c6,c7)或不同系统(centos,ubautu)的时候,你的配置文件要有条件判断,循环

主配置文件 /etc/ansible/ansible.cfg

hosts:主机清单文件*

roles

/usr/bin/ansible:主程序

ansible-playbook:跑剧本的

ansible-doc:查看配置文件的

主机清单图

hosts:[websrvs]

IP地址【同一主机可以再多个清单中】

[dbsrvs]

ansible-doc -l:查看所以模块

ansible -h:帮助

ansible <host-pattern> [options]

host-pattern:可以统配

ansible all[所有主机] -m ping

简单使用格式

ansible  HOST-PATTERN  -m MOD_NAME  -a  MOD_ARGS

-a 指明模块参数

【省略模块的时候会自动调用command模块】

-u sodoname :指明sudo用户

例如:ansible all[所有主机] -m ping

ansible具体模块

查看所以模块

ansible-doc -l

模块文件查找路径,在主配置文件中查找

查看模块使用方法

ansible-doc -s MOD_NAME

例如 ansible-doc -s ping

帮助

ansible[-doc|-playbook] -h

1.command:远程主机上运行名令

ansible  HOST-PATTERN  -m command  -a ‘命令’

不支持管道功能以及一些shell特性

2.shell:远程主机上执行命令,调用一个shell进程,命令是shell子进程执行

ansible  HOST-PATTERN  -m shell  -a  ’命令‘

支持管道等shell特性的命令

3.copy:把文件复制到制定的远程节点位置

ansible  HOST-PATTERN  -m copy  -a  MOD_ARGS

[带=的表示必须要带的参数]

格式:args=

src:那个文件|目录发送到远程主机

dest=:复制到远程主机的什么位置,必须是绝对路径,不存在创建,已存在覆盖,规则同cp

content:自己写要发送什么到远程主机

dest=

mode:指明文件在目标主机上的权限

owner:属主属组指明

4.cron

ansible  HOST-PATTERN  -m cron  -a  MOD_ARGS

name=:指明任务名字,必须写

state:创建还是删除cron任务,创建present,删除absent

minute= */#:没几分钟,基本上规则等于cron的配置文件中的规则,#;每小时的第几中做什么

hour,day,mouth,weekday,reboot

job=:那个时间做什么

5.fetch:从远程主机上拉取文件

ansible  HOST-PATTERN  -m fetch  -a  MOD_ARGS

src= 目标的存放位置,可以使目录或者是文件

dest= 拉取过来的文件存放的位置,只能是目录

通常上是讲从一个节点上fetch,除非是一个目录

6.file:设定文件属性,什么属主属组啊之类的

ansible  HOST-PATTERN  -m file  -a  MOD_ARGS

(1).path=:指明文件路径,比给参数

src:源文件

state:directory

例:ansible all -m file -a "src=/tmp/fstab path=/tmp/fstab.link state=link"

(2).path=file group= owner= mode=

修改文件属性

(3).path= state=directory

创建目录

7. hostname

ansible  HOST-PATTERN  -m hostname  -a  MOD_ARGS

name=:主机不同命,可以用循环或者是变量

8.mysql_db:在远程数据库上添加数据库

9.pip:让远程主机的python环境自动安装python依赖的模块等

10.yum:基于yum管理程序包(要求远程主机支持yum)

ansible  HOST-PATTERN  -m MOD_NAME  -a  MOD_ARGS

name=:包名,可以带版本号

state:present 安装最新版本

latest

absent 删除

11.service:管理服务

ansible  HOST-PATTERN  -m MOD_NAME  -a  MOD_ARGS

name=:必给

state:started|stopped restarted

enabled:是不是开机自动启动

runlevel:那几个级别开机启动,默认2345

12.uri:想指明的每个web服务器请求个uri

ansible  HOST-PATTERN  -m MOD_NAME  -a  MOD_ARGS

url=:url完整格式,通常用变量

user,password

13.user:管理 用户|组 账号

ansible  HOST-PATTERN  -m MOD_NAME  -a  MOD_ARGS

name=:

state:present

latest

absent

system:是不是系统账号yes|no

uid

group:基本组

groups:附加组

shell

home

move_home:移动家目录

remove:删除用户的时候同时删除用户的家目录

14.group:管理组

ansible  HOST-PATTERN  -m MOD_NAME  -a  MOD_ARGS

name=:必给的,组名

state:

system:

gid:

15.scripts模块:执行脚本的,本地路径上的脚本,自动复制道远程主机上在进行执行

ansible  HOST-PATTERN  -m MOD_NAME  -a “/path/to/script_file"

用法很像shell和command

YAML:数据结构描述格式【key value】清单,散列表,标量

多个key:value在一起叫散列表,就是字典

例如 { name:"user11",group:"group11"}

house:

family:

name: Doe

parents:

- John

- Jane

children:

- Paul

age:17

aa:16

- Mark

- Simone

address:

number: 34

street: Main Street

city: Nowheretown

zipcode: 12345

上边整体都可以叫做一个字典,因为是多个键值对组成的,address和family也是字典,parents就是列表

列表children中,其中一个值又是一个字典

一个键多个值,值是列表,列表的值前边要有-

例如 packages:

-httpd

-php

-php-mysql

【可以嵌套】

family:

name: Doe

parents:

- John

- Jane

children:

- Paul

- Mark

- Simone

family是一个键,他的值是嵌套的一个键值对,一个列表,而且,本身family就是一个字典

【.yaml|.yml结尾】

playbook 核心元素

Hosts:

Tasks:任务,模块加参数

Vsrisble:变量 [自带|自定义]

Templates:模板,包含了模板语法的文本文件

handlers:处理器,在特定条件下才会被触发的任务,本质上还是Tasks

举例,一个playbook定义了安装程序,提供配置文件,启动服务三个步骤,当配置文件变化的时候,由于幂等性的原因,ansible发现程序安装了,就不会在安装了,发现配置文件变了,会重新传一份新配置文件,发现服务启动了,就不会在启动一遍服务了,所以,这个时候的新的配置文件是不会生效的,因为playbook之定义了启动服务,这个时候就需要handlers来设定,一旦发现配置文件有变化立马重启服务(|重读配置文件)使配置文件生效

Roles:角色,由以上元素组成的特定结构

playbook的基础组件

*1.hosts:运行指定任务的目标主机;可以是一个或多个以:分割的主机,但是要事先在配置文件定义

2.remote_user:在远程主机上执行任务的用户,可以是一个全局用户,也可以单任务指定

3.sudo_user:以sudo的方式运行时,于哪个用户运行,某些场景的可选用户

*4.tasks:任务列表,第一个任务在三台主机运行完,再将第二个运行三台主机,一旦有一个主机运行出问题,会终止,修改好后在运行,不会影响之前运行

过的主机

模块,模块参数

格式:

1.action:module arguments(仅新版支持)

2.module:arguments(所有版本都支持)

command|shell:命令

其余的都严格遵循key=value

【每一个任务都要有个名字,以便于出错了给你报名字name:taskname】

某任务的状态字运行后为change时,可以通过notify来通知

任务可以通过tags打标签,可在ansible-playbook命令使用标签-t,多个用:或空白隔开

图片示例

ansible-playbook /path/to/file option

-v:详细信息

--list-hosts:只输出主机列表,不执行任何命令

--check:只测试不执行

-t tags :指明那个标签上边的用户

-e VARS:命令行传导参数项,就是想awk -v一样在命令行定义变量

-s:以sudo的方式运行

运行结果图

ok=#:主机上有几个成功执行的任务

changed=#:有几个是通过修改以后完成的

unreachable=#:有几个主机联系不到的

failed=#失败的个数

主机的facts变量:手机远程主机的facts 变量,在每次运行playbook之前都会自动运行

手动:ansible all -m setup -a facts

手动执行就可以看见目标主机的所有变量了

运行playbook的方式

1.测试

ansible-playbook --check file.yml

只测试运行结果,不真正的执行

ansible-playbook --list-hosts

列出运行的主机

2.运行

ansible-playbook /path/to/file

handlers:在特定条件下触发,在关注的资源发生改变的时候触发,或接受到通知时触发

经常在某任务的状态在运行后为changed的时候使用notify的方式通知处理器

使用方法:那配置文件来举例

在更改配置文件的task(被更改的任务)的下面,加上

notify:handler_name,

然后在这个列表结束后加上

handler:

-name:handler_name

动作

要求就是notify和handler的handler_name必须是一致的

-hosts:192.168.1.101

remote_user:root

tasks:

-name:install httpd

yum:name=httpd state=present

-name:configure

copy:src=file dest=hosts/path/to/dir

notify:restart httpd

-name:start httpd

service:name=httpd state=started

handler:

-name:restart httpd

service:name=httpd state=restart

直接写在hosts栏的后方

【主要处理正常流程下,没有关系的资源,给他们创建练习来工作】

tags:加个标签,结合-t

ansible-playbook -t TAGS_NAME1,TAGS_NAME2,.... file

只执行有标签的任务,当然,前提是先在指定的任务下边加上

tags:tags_name

然后就可以用了,可以给多个任务打标签,同一个任务也可以有多个标签,两个任务的标签可以一样,-t后边也可有多个标签,用逗号或空白隔开就好

variables:变量 只能以字母开头,使用{{ value }}调用变量 注意空格

1.facts:setup模块提供,可直接调用

2.使用ansible-playbook的命名传递 -e

...-e “var=value”,想awk -v一样,可以定义多个变量,使用多个-e就好

3.通过roles传递变量

4.Host Inventiry

想不通的主机传递不同的变量,可以加上端口号

IP地址1/HOSTNAME1[:port] var=value

IP地址2/HOSTNAME2[:port] var2=value2

向组中主机传递相同变量

在hosts文件中的组后边加上

[组名:vars]

var=value

例如[websrvs:vars]

http_port:8080

5.计算

变量可以进行计算,包括下边的template的时候也做过

直接在花括号中写入变量参与的表达式

例如{{ ansible_processor_vapus-1 }}

Inventiry参数:

定义ansible远程连接目标主机时使用的参数,而不是传递给playbook的变量

要注意区分

ansible_ssh_host

port

user

pass:密码

ansible_sudo_pass:密码

templates:模板

文本文件,内部嵌套脚本,使用模板编程语言编写的脚本

python:嵌入式模板编程语言jinja2

字面量:常见的就是字符串 用"" ‘‘引用;

数字:整数,浮点数;

列表:[item1,item2...]可变;

元组: (item1,item2..)不可变;

字典:{"key1":value1,"key2":value2....};

算术运算:+ ,- ,* ,/ ,//(不要余数只留商), %,**;

比较操作:==,!=,>,>=,<,<=;

逻辑运算:and,or,not

迭代,条件判断

template模块:基于模板方式生成一个文件复制到远程主机

ansible  HOST-PATTERN  -m template  -a  MOD_ARGS

src=:要指明本地的jinja2的模板文件路径.j2结尾

dest=:远程主机上用于运用的路径,通常是绝对路径

owner

group

mode

上边是命令行的template模块使用方法,下面是写入到配置文件.yml中的方法

就是在tasks下边记上

template:src=xxx.jinja2 dest=xxxx

用法和以前的没什么不同,还可以用tags和notify(handler)

写好用ansible-playbook file.yml就好了

playbook的条件测试:

when语句:在task中使用,jinja2的语法格式

when:ansible_distrubtion == "7"

- name: install conf file to centos7

template: src=files/nginx.conf.c7.j2

when: ansible_distribution_major_version == "7"

- name: install conf file to centos6

template: src=files/nginx.conf.c6.j2

when: ansible_distribution_major_version == "6"

循环:迭代,需要重复执行的任务;

对迭代项的引用,固定变量名为“item”,要在task中使用with_items给定要迭代的元素列表;

列表方法:

字符串

字典

-name:install some package

yum:name={{ item }} state=present

with_items:

-nginx

-memcached

-php-fpm

-name:groups

group:{{ item }} state=present

with_items

- group11

- group12

- group13

-name:add some user

user:name={{ item }} group={{ item }}

with_items

-{ name:"user11",group:"group11"}

-{ name:"user11",group:"group11"}

-{ name:"user11",group:"group11"}

角色(roles)

角色就像一个目录,有个roles的总目录,地下是好多的角色名命名的子目录

/etc/ansible/roles/ 具体位置可以定义.cfg

每个角色以特定的曾级目录结构进行组织

例如 mysql/

files/      存放copy或script模块调用的文件

templates/   存放template模块查找模板的文件

tasks/      必须有的目录,至少包含一个main.yml的文件;其余的.yml都是要借用main.yml加载,要在main.yml中以include包含

handlers/   至少包含一个main.yml的文件,规则同上,handler

vars/      var中也至少有一个main.yml文件,规则同上,存放变量

meta/  至少一个main.yml,规则同上,定义当前角色的特殊设定及依赖关系

default/ 设定默认变量时使用此目录中的main.yml

角色只能用自己目录下的子目录或文件,所以,子目录要有这些模块要用到的文件或子目录

在playbook调用角色

-hosts:websvrs

remote_user:root

roles:

-mysql

-memcached

-nginx

启动起来后,ansible会自动的跑到这几个角色的目录下,将他目录下的子目录中的所有代码跑一边

创建角色:

1.在roles中创建角色同名目录

mkdir -pv nginx

创建子目录

mkdir -pv nginx/{...}

2.将需要的文件放进去(main.yml)

编辑main.yml

一些任务,但是任务中要用到同目录下的文件时候,直接写文件名就好,不用写路径,会自己去找的,实例参见配图templates项,好比我现在是在task下编辑main.yml,我想调用files下的文件,并不需要写什么局对路径相对路径,直接写文件名字,他会自己去找

对于一个角色,最重要的是任务,所以先编辑tasks,格式很多都可以省略,比如hosts,这个是让人调用的角色所以不能指定hosts,比如tasks,这个是可以省略的,因为本身就是在task目录下了

但是,要区分主要运行的剧本和这里的main.yml也好自己定义的其他名字的yml也好,都是不同的,playbook要运行的剧本老老实实的写hosts和tasks等

handler也是,在handlers的目录下写main.yml,在要运行的yml中只写notify就好了

在playbook中使用变量,在运行的yml中,remote_user的下边加上

var:value

就可以直接调用了,多个可以使用列表,但是,每次要修改变量还要去到配置文件中去修改配置文件,不过,ansible可以再命令行设置变量,并且优先级还要高于配置文件中的变量

ansible-playbook -e var=value2  file.yml

实际上的var的值是value2

在角色中更贱简单,在ansible的rules下的相关角色的vars目录下编辑main.yml,然后直接在运行的里边使用就好,只要是字典格式就好,不要加-

或者是在角色调用的时候来实现传递变量

Roles:

-{ role:nginx,username:mymy }

把角色那一栏做成字典,第一蓝是角色,后边是变量

还可以在角色调用还可以做条件判断

Roles:

-{ role:nginx,when:xxxxxx == "7" }

只有满足什么条件的时候才会调用角色

实战作业:1.两台主机nginx+keepalived   主从模式,主主更好,制作好ansible角色

2.后端两台主机跑php,lap,

3.再有一台主机跑mysql

注意:写角色要判断操作系统,nginx,mysql的安装包都不同,还有apache也不是很一样

部署一个论坛程序更好

顺便博客作业,把ansible内容写上

ansible如何基于sudo使用,建议把使用sudo的组加到wheel组中

www.ansible.com.cn

cobbler服务依赖于pxe

pxe依赖于dhcp,ftp等服务

DHCP服务:动态主机配置协议

IP/MASK:mask与自己和对方的ip做与运算,计算是不是同一网段

gateway

DNS:第一台是最重要的,第一台不可用(而非解析不了)才用第二台

wins server, ntp server

参数的配置方式:

静态方式指定

动态配置分配:

bootp:boot protocol无盘工作站

无盘工作站:后端有服务器,上边有多个独立空间给子机存储文件,还有一个单独的空间存放模板,基于tcp/ip协议通信,但是往往刚装的时候没有系统怎么配置IP地址呢

有一个基于网卡级别的服务来自动配置,类似于只能网卡,在局域网中广播,让服务来给自己配置IP地址,然后在对文件服务器通信

boot协议:一旦分配出去,就不会在收回,除非重新配置

但是现在的都是有盘计算机,不需要再去服务器读系统,所以直接去拿地址就好

dhcp:有一个地址池,里边有一段连续的IP地址,有自己独立的DNS和网关,计算机关机后自动回收

引入租约(使用时间)的bootp,也可以为实现为特定主机保留某固定的IP地址(MAC地址来识别,从而实现保留固定地址)

rarp:反向arp,将MAC地址解析为ip地址

arp:ip地址解析协议,将ip解析为MAC地址

监听端口:服务端udp67   客户端udp68

客户端监听是因为二者之间是要进行通信的

实现程序:dhcp(重量级)

dnsmasq(同时提供dns请求转发和dhcp功能)

工作流程    客户端广播发现服务器端(discover阶段)

服务器端offer,提供一个地址(offer阶段)

多个服务器提供offer的时候,用最先到达的那个,应为最先证明他的性能好

客户端收到后,请求使用此地址(request阶段)

发送了request,也就告诉了所有的服务器端我选择了那个,其他的服务器就可以把IP地址返回地址池,而选定的服务器就要把IP地址从地址池删除

服务器端同意(ack阶段)

可以使用,结束通信

报文:广播,广播是不能跨越网关的,只能在局域网中进行,但是可以中继,配置一个路由器做dhcp服务器的中继器

使用路由器监听在udp67端口,路由器将广播中继成到dhcp服务器的单播,然后收到的单播传递到另一个局域网广播

但是想要管理别人的局域网,要想将自己的局域网管理好了

续租:提前续租,续租成功的时候,再延长一个租期,但是如果续租的时候联系不上服务器,可以缓一段时间再去找服务器续租,如果总是联系不上,就准备重新discover计算

50%:第一次续租 75% 87.5%

额外功能:可以区分系统(Windows,非Windows)配置不同的地址池,可以区分是不是虚拟机等

如何配置使用dhcp服务

dhcp:只提供dhcp服务

dnsmasq:还能提供dns服务

dhcp:

dhcpd:服务器

dhcrelay:dhcp中继器

融合在一起,所以服务叫dhcp,但是中继和正常的dhcpd不能一起进行,因为都是监听在67端口的

dhcpd:因为他是要给别人分配地址的,所以自己也要有地址,而且要是静态分配的地址,不能发生变化

配置文件:/etc/dhcp/dhcpd.conf

空的,要cp dhcpd.conf.example到这里覆盖

dhcpd.service dhcpd6.service dhcrelay

dhcpd.leases:租约,每个地址的租约都放在里边,分配出去的地址的信息也都在里边

配置:

参数类配置:配置客户端的

指令类配置:配置自己的工作配置

option domain-name "example.org";

搜索域

option domain-name-servers dns server1, dns server2;dns server3;

dns服务器

default-lease-time 600;

默认租约时长  单位:秒

max-lease-time 7200;

最长租约时长

[时间长好还是时间短好呢,长好,关机就释放,所以长了没关系,但是短了每个一段时间就要广播,增加了服务器压力]

log-facility local7;

日志记录[要去rsyslog配置local7]

subnet 172.16.0.0 netmask 255.255.255.0 {

range 172.16.100.1 172.16.100.99;

分配的地址池

option routers 172.16.0.1;

配置网关的,后边指明真正的gw

filename:指明引导文件名称

next-server:指明引导文件的服务器地址

}

管理的子网地址;不管配置几个地址,首先都要先有一个自己网络的

filename:表示只对网段中的主机查找引导,而且只在刚分配完后的短时间内生效,其他时间不生效

[options有范围限制的,范围越小会越有限生效]

host HOST_ID {

hardware Ethernet MAC地址;

fixed-address IP;

option....

}

固定IP地址,这个ip不能出现在上边的地址池,另外HOS_ID只是个标示,不一定与主机名一致,但是要能标示

其他配置

filename:指明引导文件名称

next-server:指明引导文件的服务器地址

例子:filename "pxelinux 0";

next-server 172.16.0.1;

但是这个是对网卡有特殊要求的,要求网卡有tftp协议,简单文件传输服务

怎么指明使用哪个dhcp服务

先关掉vm的dhcp服务,停止dhcp服务的虚拟机桥接,改成仅主机

再来一台仅主机的虚拟机 dhclient -d 追踪分配地址

再次启动的时候,先默认发送一个续租请求(使用了固定地址后,固定地址优先级比请求高,会使用固定地址)

pxe:提供操作系统的技术,网络引导技术,自动化的方式完成操作系统的安装   intel牵头研发的技术,硬件级别(芯片级别)

必须网卡内置了pxe支持才行,在今天网卡都默认支持,而且虚拟机也支持pxe引导了

我们通常那他进行操作系统安装

CentOS系如何配置实现pxe:

硬件支持

dhcp server:配置ip 掩码 dns gw等;filename,next-server

tftp server:加载bootloader和kernel,initrd

yum repository:ftp,http,nfs提供安装树

kickstart:完成自动化安装

tftp server :类似于ftp但是监听在udp69端口

c/s:tftp-server

tftp

/usr/sbin/in.tftpd

启动的服务文件:瞬时守护进程

/usr/lib/systemd/system/tftp.socket

非守护进程

/usr/lib/systemd/system/tftp.service

根目录

/var/lib/tftpboot

配置文件

/etc/xinetd.d/tftp

centos6:

chkconfig tftp on

service xinetd restart

centos7:

systemctl enable tftp

systemctl start tftp

dhcp server:配置range filename next-server

安装httpd vsftpd syslinux(提供各种引导文件)

测试环境192.168.12.0/24

服务器192.168.12.1/24

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

挂载光盘 挂载到/var/www/html/centos7

cp vmlinuz initrd.img /var/lib/tftpboot

cp /usr/share/syslinux/{mboot.c32,menu.c32,memdisk,chain.c32} /var/lib/tftpboot

在/var/lib/tftpboot中创建目录

mkdir pxelinux.cfg目录

创建default文件

default menu.c32  那个生成菜单的

prompt # 菜单显示时间

timeout # 超时时间

MENU TITLE xxx 菜单名字

LABEL linux 短格式显示菜单

MENU LABEL install Centos7

KERNEL vmlinux 在哪个加载内核

APPEND initrd(参数名)=initrd.img文件名 install.repo=ftp://192.168.12.1/pub/centos/$re...仓库名

LABEL linux_autoinstall

MENU LABEL install c7 auto

KERNEL vmlinux

APPEND initrd=initrd.img install.repo=ftp://192.168.12.1/pub/centos[/$re...](仓库名) ks=ftp://192.168.12.1/pub/kickstart.cfg[注意文件的权限问题,ks权限没有r的话无读取]

记得先把ks文件放到/var/www/html下,要用http访问

另一个主机设置成从网路引导

dos--boot-network的第一项

boot:linux  调用第一项

这么调用可以再后边添加一些选项,比如加上ks=....就和第二项一样了

[本地就有一个ks文件 anaconda-ks.cfg,手动安装时生成的]

[ks文件语法检查工具ksvalidator]

centos6:前边一样,后边的菜单方式不太一样,可以使用centos6自带的图形工具生成

挂载光盘 挂载到/var/www/html/centos6

复制vmlinuz,initrd.img

复制isolinux下的boot.msg vesamenu.c32 splash.jpg

mkdir -pv /var/lib/tftpboot/pexlinux.cfg/

cp -v isolinux/isolinux.cfg /var/lib/tftpboot/pexlinux.cfg/default

vesa:使用boot调用,采用图形安装

menu default:默认项,只能有一个

ks之类的还是加载append后边

但是install.repo不用指明,系统会自动加载的

ks要放到/var/www/html下边,而且要给上读权限r

cobbler:配置多系统版本安装环境

cloud or VM:image lanch

VM:

第一台是安装出来,后边可以镜像

云OS:

将影像文件下载到节点上,以此为硬盘来安装

Bare Metal:OS Install

只能是安装,但是可以借助工具自动批量安装

基本上第一次都是安装的,或者是下载网上别人分享的镜像文件

基本上所有工具都是基于pxe,cobbler当然也不例外

cobbler:

PXE

Koan

核心概念:cobbler(核心)

cobbler_web(补充组件,增进用户体验,提升管理效率)

distros:定义发行版

profiles:基于distros,配合ks,安装不同的部署环境(主机只使用一个服务,如mysql专机)

systems:即便是同一个profile,也是有不一样的地方,比如ip等,这些就叫system,但是很少进行精细管理

repos:yum仓库,发行版,epel(但是不能拿来安装)

images:镜像文件

management classes:分区管理

file resources:文件管理

常用的只有 distros profile

需要服务:

TFTP

rsync

DHCP

DNS

子命令:

import

sync

cobbler图解

distribution:

KERNEL

initrd

profile:

distribution

ks file

repository

system:

profile,IP,MAC

安装:yum安装或编译,epel源

配置文件:/etc/cobbler

服务:cobblerd.service

(运行cobbler之前要强依赖httpd,所以先开启httpd,还有tftp,rsync)

帮助

cobbler [command] --help

检测cobbler环境是不是完备

cobbler check

解决check问题

编辑cobbler/settings

1.server 127....改掉

2.next_server 172.16.100.7 本机地址

3.default_passwd_crypted:"密码"

chkconfig tftp on

loader不用管可以,syslinux提供的就够

chkconfig rsync on   监听873tcp端口

debmirror c7不用,c6需要

/var/www/cobbler

命令号格式

cobbler command [subcommand] [--arg1=value1] [--arg2=value2]

command: distro   profile   system  import  sync

distro :centos直接挂载光盘就有,会自动放在/var/www/cobbler的ks_mirror下

使用cobbler import导入 --help

cobbler import 也要指明ks文件,是因为他在创建distros的时候会自动创建profile,不需要就删除

cobbler import --name=centos-6-x86_64 --path=/mnt(挂载关盘目录)

会自动放在/var/www/cobbler的ks_mirror下

cobbler distro list:查看列表

remove:删除

profile: ks文件放在/var/lib/cobbler/kickstarts/下边

cobbler profile add --name="centos6" --distro=Centos-6-x86_64 --kickstart=/var/lib/cobbler/kickstarts

profile list

然后使用cobbler sync 同步一遍,会自动生成default文件

再做一遍就多一个,可以做个c7的

cobbler_web

/etc/cobbler/auth.conf

/modules.conf

[authentication]

module = authn_pam

[authorization]

module = authz_allowall

/users.conf

admin = "管理员名字"

cobbler = "普通用户名字"

记得passwd命令给个密码

/cobbler_web.conf

require all granted

zabbix:监控系统   **绝对不允许不受监控的系统到生产环境**

硬件:硬件自身带传感器

软件:操作系统本身.系统上某进程

业务指标:例如httpd有几个用户,多少请求等

NMS:网络管理系统

监控数据采集通道:

监控系统处于一个数据抓取的工具上,每隔一段时间从被监控的主机中读取数据

snmp协议:简单网络管理协议

ssl/telnet:但是有权限问题,必要的时候还要管理员

ipmi接口:Intel智慧平台管理接口

agent:监控系统在被监控主机安装一个程序,两者可以通过某种协议通信,被监控主机用管理员身份运行该程序就好,需要访问用户控制**

master/agent

sensor:传感器,观察数据指标

工作方式:

1.只对当下数据进行采集,一旦异常立马警报

2.对过去的数据进行观察,检查异常的范围波动频率时间等(要求数据存储)

监控系统基本功能:NMS实现,其采集通道见上,工具见下

1.数据的采样:按固定的周期频率,为了观察;历史数据,还要保存下来,历史数据经过一段时间后可丢弃,只保留趋势数据就好

趋势数据:每一段时间(一天)最大值最小值平均值之类的

2.数据的存储

3.告警(报警):在某一数据一致不正常就像用户报警,邮件短信甚至人工合成声音的电话

脚本:触发脚本自动完成一些功能,是在不行再报警

操作:配合云环境,虚拟化,发现某一虚拟机挂了,kill掉在重建一个配置好加入到环境中

媒介:邮件.短信,微信

4.展示:visual,可视化,随时可以用形象的方式经结果展示给用户

常见开源监控工具:

cacti naglos zabbix ganglia

cacti:本质上不是监控工具,本身不具备监控功能,基于协议构成,能够存储数据并将其数据通过mysql前台展示出来,但是报警功能差

通常和naglos结合使用

zabbix:既能监控又能报警,取代了上两者集合,使用的是mysql的数据系统

ganglia:对多台主机的数据聚合展示,今天有人集合g,z使用,尤其是超级计算机进行计算的

数据存储:

对数据库的写压力太大,千台主机监控指标就到十万指标,cpu的使用率,网卡的,还有多网卡,内存的,是非常大的数据

历史数据:NVPS

趋势数据:

存储系统:

关系型数据库:mysql,性能都不是很好,不是保证事务就不要用

rrd:环装数据库,满了就在覆盖存储一圈,类似一致性哈希算法,在节店上存储,空间,存储槽都是早就创建好了的

*NoSQL:不支持事务,没有复杂的关系.工作空间是内存,因此性能非常好,每隔一段时间同步到硬盘

时间序列存储

SNMP:简单网络管理协议(古老的协议,没涉及复杂的安全功能,所以有别的就不要使用它,能不用就不用)

有agent的,nms/agent组成

每一个通过他监控的各种各样的设备都內建他的agent

snmpd服务

nms:cli,命令行工具  gui,图形工具

agent:service,监控在某个端口,接受请求采集数据返回响应给请求者,说起来想server端..

为避免agent端信息泄露要进行认证

v1版snmpd没有任何安全

v2c(community社区) 类似社区,有令牌通过就可以响应,public社区可以公开出去的社区

v3使用了很强的加密功能,但是网上很少有支持的

操作:

获取操作:get,getnext,bulk(一次获取多个)

管理操作:

陷阱机制,被监控端主动向监控端发送数据,类似dns的通知

MIB,OID

ZABBIX:开源监控系统 2.0稳定成熟的版本

LTS:建议选择的版本,如2.2 3.0 长期支持维护的版本

特性:

数据采集

snmp,ssh/telnet,agent,ipmi,jmx(java management extensions)

自定义采样操作:userprameter

告警

告警升级:执行脚本,在告警(notification)

展示(zabbix_web)

实时绘图:需要看图时候,在数据库中取数据,动态绘制出来

单个graph图片

多个graph组成screen

slide show:多个屏显示,每个多少秒换个屏

map:各设备之间创建一个拓扑图,某设备故障,在拓扑图中将那台机那条线不同色标出来

存储

mysql/pgsql

支持模板:实现快速监控主机添加

网络自动发现:扫描一个网段,将内部的主机自动套上模板添加进来

分布式监控:减少监控,各设备读写压力,有代理主机替你采集指标(每个代理主机采集一部分指标),client只要拿过来就好了

server-----proxy-----agent/ssh/ipmi

丰富的API接口

程序组件:  zabbix_web GUI php研发

zabbix_database

zabbix_server  c语言  web page

icmp/impi/snmp devices

agent:zabbix_agentd

JMX

zabbix_proxy      web page

icmp/impi/snmp devices

agent

zabbix_server

agentd

proxy:代理,可选,不做分布式的时候不需要

get:命令行工具,手动测试向agent发起数据采集请求

sender:运行与agent端,手动向server端发送数据

java_gateway:java网关JMX JVM

database:和zabbix自身没关系,是mysql被用来做数据存储

web:基于web接口展示的gui,对zabbix所有操作几乎都是通过gui来进行,所以他也是个管理接口

zabbix逻辑组件:内部完成一次完整的监控操作用到的组件

主机组

主机

监控项:item;

key,事先定义好的能够采集数据的命令或脚本的名称,key后边加一个参数,参数将会传递给命令,通过修改参数,可以达成一个key监控多个项

应用:application,同一类监控项item的集合

触发器:trigger,一个逻辑表达式(或调用了函数的表达式),监控item接受的数据key对应的数据是不是在合理范围内,即阈值,大与阈值时候,从ok转到problem,会在范围内转回ok

一般都是在范围内problem,不在为ok

事件:event,发生一个值得关注的事情,如ok转换,发现一个新主机,可以针对事件来做相关操作,一旦事件发生了就会发生后续一系列操作

会牵连到告警操作

动作:action 对于特定事件事先定义的处理,包含操作(operations)和条件(condition)

条件不同,操作不同

常见:通知,告警

报警升级:escalation,

报警:

媒介:media,发送通知的手段或通道,email,messages等

通知:notification,告警内容

升级:

层层上诉,县长不行市长,市长不行省长

可以定义多个操作,先执行什么远程命令,还不行就升级报告

远程命令:remote command,预定义的命令.在主机处于特定条件下自动执行

模板:template,快速定义被监控主机的各监控项的预设项目集合

通常包含item,trigger,graph,screen

图形:graph,监控项中采集到的历史数据,用图像的方式展示出来就叫graph

支持现状图面积图饼图爆炸图

屏幕:screen,多个graph集合组成

逻辑组件逻辑关系图

maintenance:维护,定义维护期,维护期内遇到任何异常都不要报警

zabbix poller:数据的采集器.轮训工具,采集一次又一次

internal监控:针对于自身,采集了几次数据之类的

服务端进程

poller:轮训数据

watchdog:监控进程是不是正常,不正常重启

housekeeper:内务管家,管理数据库中的数据,比如清理数据库

alerter:报警工具

escalator:报警升级

httppoller

discover:发现主机,上线下线等

nodewatcher:监控节点

timer:计时器

db_config_syncer

db_data_syncer:完成配置同步和数据同步

pinger:探测主机的

监控级别(最低限度)图

monitored host:被监控主机数

zabbix注意:对于不是关键性指标,监控间隔就可以长一点,重要的就要设置短一点

监控数据库支持  图

监控需要的扩展   图

server端需要扩展  图

jabber那个用不到

zabbix组件:server,agent,database可以分开设置

实际部署:同一台主机上进行,不同主机自己去试

sever,agent,web*,proxy*,get,sender

trousers-0.3.13

mget *3.0.3*

1.mariadb-server安装---配置文件---innodb_file_per_table=ON skip_name_reslove=ON----启动服务

2.创建数据库----授权用户

3.安装服务端 zabbix-server-mysql/get/

4.安装zabbix-web

安装php,httpd,php-mysql,php-gd,php-ldap,php-xml,pgp-mbstring,php-bcmath

5.安装agent

安装zabbix-sender

6.服务端数据库初始化

2.x:三个sql脚本

按官方文档的固定数据导入三个脚本

3.x:一个sql脚本

create.sql(server-mysql提供)

mysql -u   -h  database_name  < create.sql

7.启动

配置文件:/etc/zabbix/zabbix_server.conf

先备份

配置段:

general parameters:通用参数

listenport:监听端口,默认10051

sourceIP:限定采集数据向外通告自己的ip是什么,不然基于ip的访问控制会拒绝

logtype:=日志类型

logfile=/path/to/file

logsize:设置日志滚动大小,0不滚动

debuglevel:日志级别0-5,默认3,自己测试定义5

DBhost:数据库地址     *

dbname:数据库名称     *

dbuser:               *

dbpasswd:             *

dbsocket:mysql.sock

dbport:与上边的socket有一个就好;mysql 3306

advanced ...:高级参数

高级参数就是定义服务端的那几个进程的参数

loadable:模块

tls....:安全

[mandatory:是不是强制配置]

8.配置web gui

先编辑php的时区 /etc/php.ini date.timezone(所有php程序都遵循)

到/etc/httpd/conf.d下的zabbix.conf里边的data.timezone   Asia/shanghai

然后重启httpd

172.16.7.5/zabbix

安装生成的配置文件/etc/zabbix/web/zabbix.conf

monitoring:监控 *

inventor:

reports:报告

configuration:配置 *

administrator:管理 *

*:将来基本上就对这几个做操作

9.agent端配置

/etc/zabbix/zabbix_agentd.conf

zabbix-agent

备份

general parameters

passive checks relate 被动监控

server:=ip1,ip2(代理服务器)..

允许那些主机过来采集数据

listenport:端口,默认10050

listenip:0.0.0.0监听的地址,所有

startagents:=

下午第一节可

active checks relate 主动向server报告

serveractive:=ip1[:port],iP2...

hostname:=zabbix server

主机名,与服务器端配置添加的主机名完全保持一致,区分大小写

hostmatedata:定义知己元数据,在自动进程上使用

hostmetadataitem:定义那些采集项

refreshactivecheck:刷新频率,默认120秒

buffersend

buffersize:发送缓冲大小

advanced ...

user-defined monitored... 用户自定义参数

loadable 模块

tls.... 安全

[mandatory:是不是强制配置]

10.监控配置

host groups --> host-->application--->item--->trigger--->event(不用配置)---->action(condition,operation)--->通知

graph:

simple:自动生成的

customed:将多个item的图形数据整合在一个图形数据进行展示

11.items

key:

內建

type:

agent:

agent(active)

snmp v1

用户自定义

12.采集到的数据

数值:

整数

浮点数

字符串

字符串

文本

13.存储的值:

as is:不对数据做任何处理

速率:变化速度

简单变化:变化量,这次值减上次值,除时间(秒)可以求出速率

ntpdate 172.16.0.1

14.trigger

逻辑表达式,阈值;通常定义数据的不合理区间

OK:正常状态,较老的版本中叫FALSE

PROBLEM:非正常状态,较老的版本叫TRUE

OK-->PROBLEM:出问题了

PROBLEM-->OK:recovery恢复

通常是拿最近5次的平均值,最大值,最小值与阈值比较

或是最后一个值与阈值比较

可调用函数:

nodata()没数据

last()最后一次

参数

function(#300)记上#是最近多少次

不加#是最近多长时间

事件的严重级别 图

not classified

information

warning

average

high

disaster

表达式

{hostname:key[parameters].function(arguments)}

<>=#(not equal)

+-*/

&|

trigger之间是可有依赖关系的

被依赖的出现问题,依赖的就不用报告了

一个item上可以定义多个trigger

media媒介

告警信息的传递通道

类型

email:邮件

script:自定义脚本

sms

jabber

ez texting

接受信息的目标为zabbix用户:

需要用户上定义对应各种媒介通道的接受方式

发送内容由zabbix自动生成

action:

action  图

conditions 图

A:不在正常的维护区间

B:转换到problem

多个条件之间具有逻辑关系

operations 图

条件满足时触发的操作

remote_command:命令

notification:通知

点new定义  图

3600s 表示每3600秒定义一步,启动什么服务

step 从第几步到第几步

1-1  2-5  第1步做什么;等级上升;第2-5步做什么;等级上升

send message

media type:传递信息的通道

email

script报警脚本

脚本位置:zabbix_server.conf文件中alertscriptspath定义的路径下

/usr/lib/zabbix/alertscript

zabbix服务器在调用脚本时,会传递三个参数

$1:经由此信道接受信息的目标{ALERT.SENDTO}

$2:主题subject{ALERT.SUBJECT}

$3:body,邮件正文{ALERT.MESSAGE}

信息接收人

user groups:组内的人都能收到

user

remote_command

功能:

在agent所在主机上执行用户指定命令或者脚本

重启

通过ipmi重启服务器

完成任何用户自定义脚本中定义的操作

可执行命令类型

ipmi

ssh

telnet

custom script

global script

前提要求:

1.zabbix用户要有所需要的执行权限

2.允许agent进程执行远程命令,默认是关闭的

enableremotecommands=1

3.sudo注释掉 default requiretty用户不需要控制终端

或default zabbix !requiretty

host groups --> host-->application--->item(key)--->trigger--->event(不用配置)---->action(condition,operation)--->通知

media type

user/user group

action operations:可定义为升级方式

send message

remote_command

如何使用宏,自定义图形,自定义参数,如何使用自定义key,分布式监控

展示接口:

graph:simple自带 custom自定义

screen:整合多个graph

slide show:多个screen以幻灯的方式展示

模板:一系列配置的集合

items

trigger

graph

application

screen等

创建完成后,让主机连接到模板,类似软连接那样子.并且当模板更改的时候,连接改模板的主机也会做出相应的修改

创建模板-----添加模板的各种选项----添加新主机---在添加新主机的时候点template天机模板

注意:

模板可继承,可以再模板的情况上继续添加监控项等

宏:(macros)类似于变量,预设的文本替换模式,文本类型的替换机制,跟变量还是不完全相同的,只是字符串变化,没有变量的浮点数啊之类的

生效级别:

全局:administrator---右侧上方gui哪里下拉箭头找macros

模板:编辑模板---macros

主机:编辑主机---macros

生效顺序:应用范围小的优先级高

类型:

內建宏:{macro_name}

自定义宏:{$macro_name}多个$符

自定义命名要求:大写字母,数字,下划线

网络发现:network discovery     上午第二节课

根据用户实现定义的规则,来扫描一个网段,或者是ping或者是某个服务(80端口有没有被监控?监控了就添加主机到监控中)从而添加主机,并且还能自动套上模板,并且某主机不在线还能自动移除主机

时间间隔很长

功能:加快部署,减轻管理工作,经常发生变化的工作环境中不用手动管理

基于以下信息

ip ranges

service(ftp,http等)

zabbix agent

SNMP

阶段:

discovery

disconvery:发现事件

lost:丢失事件

actions

configuration---discovery

注意:low level(也是发现,但是能区分Windows和linux,并且连接像对应的模板,是一种低级别的发现,一般是调用脚本完成)

低级别是指对操作系统比较近

ip range :扫描的网段 xxxxx-xxxxx

check:检查的项

delay:每多长时间检测一次

configuration----action--右上方改成discovery

自定义key:

item type:和key本身的可用是有关系的,不同类型适用的接口有可能不同,一些key只能用在制定的接口之上

agent

agent(active)

simple

snmpv1

snmpv3

ssh

...

接口类型:agent snmp impi

自定义key值得是在zabbix agent端的配置文件上游用户通过userparameter指令定义的key

UserParameter=<key>,<command>

=mysql.ping,mysql -umkmk -pmy123 -h127.0.0.1

注意:

重启agent生效

注意一定不能重名,并且只能通过agent接口运行

是调用/bin/sh(centos中默认bash)运行

监控自定义key的时候,一定要确保被监控的主机上游这个自定义key

UserParameter=<key[*]>,<command>

可以接受参数,参数会传递给后边的命令当参数

*:任意数量参数,$1,$2......$0是命令本身

UserParameter=memory.usage[*],awk ‘^/$1/{print $$2}‘ /proc/meminfo

$1,前边传递的参数 $$2是awk自身的变量

zabbix_get -s 172.16.7.5 -k memory.usage[MemFree]

web监控

首先定义web方案(scenarios)

一个或多个httpd请求或步骤(step)

步骤的执行过程将按照预先定义俄顺序进行执行

通过web监控获得信息

整个web方案中所有步骤的平均下载速度

失败的步骤号

失败的报错信息

在方案的具体步骤中,可以按需使用以下信息

该步骤的下载速度

回应时间

回应状态码

zabbix可以检测获取到的html页面是不是包含预设的字符串,还可以实现登录和页面点击

application---web方案

configuration---host----web

创建完会自动生成一些items,可以直接拿来用

主动监测:

agent需要的基本配置:

serveractive=

hostname=:要与server端添加的而主机名完全一致

主动被动和主机没有关系.和items有关,要选zabbix agent(active)

在监控项非常多的时候会减轻服务器的压力

zabbix proxy :主要是用在分布式监控的

server---proxy---agent

使用proxy,用web gui添加就好

/etc/zabbix/zabbix_proxy.conf

heartbeat frequency每隔多长时间健康监测一次

config

datasender

agent端把server和serveractive改成proxy的IP地址,然后重启zabbix-agent

proxy mode

active主动:自己制动去获取

passive被动:等待发送过来

proxy的主机名记得在hosts中表明解析

Zbbix proxy的配置过程:

1、配置proxy主机,启动服务;

(1) 安装程序包

# yum install zabbix-proxy-mysql zabbix-agent  zabbix-sender  zabbix-get

(2) 准备数据库

创建、授权、导入方案

(3) 修改配置zabbix_proxy.conf

Server=

Hostname=,与GUI端添加时候的名字要一直并且保证能解析改名称

DBHost=

DBName=

DBUser=

DBPassword=

ServerActive=

heartbeatfrequency每隔多长时间健康监测一次

config  拉取的时间间隔

datasender 发送的时间间隔

2、在server端的GUI上添加此代理服务器;

Administration --> proxies

注意名字要和上边的配置文件中的hostname一致,并且是必须添加主机名

3、在server端的GUI上添加通过porxy进行监控的主机;

注意:通过proxy监控的各agent要授权proxy主机有监控权限;

zabbix performance tuning:性能调优

nvps:new values per second

最基本的性能指标

100w/m, 15000/s

官方给的最多能承载数据,实际肯定没这么多

调优:

Database:历史数据不要保存太长时间;尽量让数据集可缓存到数据库服务器内在中;

触发器表达式:减少使用min(), max(),avg(),尽量使用last(), nodate();

数据收集:polling较慢(减少使用SNMP/agent-

less/agent);尽量使用trapping(agent(active));

数据类型:文本型数据处理较慢,尽量少收集类型为text或string的数据,多使用类型为Numeric的数据;

zabbix服务的配置:

(1)zabbix internal类型的监控来获知zabbix自己的状态;

(2)服务器组件数量:

alerter, discoverer, escalator, http poller, housekeeper, icmp pinger, ipmi poller, poller, trapper

configuration syncer, db watchdog

StartPollers=100

StartPingers=10

StartPollersUnreachable=50

StartIPMIPollers=10

StartTrappers=20

StartDBSyncers=8

数据库优化:

分表;

history_*, trends*, events*

博客作业:

zabbix-server, zabbix-proxy, zabbix-agent应用;

时间: 2024-10-16 15:20:24

运维工具ansible+cobbler+zabbix的相关文章

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

运维工具Ansible浅谈playbook讲解以及YAML语法和JSON语法的互化

引言:运维发展到今天已经远远不是传统的运维做一些重复性的枯燥工作,面对海量爆发的访问量,传统的运维已经很吃力,比如让你装三五台机器的系统,这个so easy,那要是安装几百上千台呢,还easy吗.我要安装nginx服务,并提供好相应的端口转发机制以及location资源访问机制,但是有多发十几台这样的机制,并且每台机器转发机制都不相同,这个对我们来说是一个不小的挑战,因此运维进入了自动化时代,自动化运维就显得重要了.因此本文就是围绕自动化运维工具Ansible来展开的. 一,为什么要使用Ansi

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

3.1 自动化运维工具ansible

自动化运维工具ansible 运维自动化发展历程及技术应用 Iaas 基础设施即服务Pass 平台服务SaaS 软件即服务 云计算工程师核心职能 Linux运维工程师职能划分 自动化动维应用场景 文件传输命令执行 应用部署配置管理任务流编排 企业实际应用场景分析 1 Dev开发环境 使用者:程序员功能:程序员开发软件,测试BUG的环境管理者:程序员123 2 测试环境 使用者:QA测试工程师功能:测试经过Dev环境测试通过的软件的功能管理者:运维说明:测试环境往往有多套,测试环境满足测试功能即可

Linux自动运维工具Ansible的使用

Linux自动运维工具Ansible的使用 我们熟悉这个工具后, 可以很轻松的安装k8s. 一.介绍 ansible - run a task on a target host(s) Ansible是一个用Python开发的运维工具, 可以在本地让远程主机执行命令, 项目地址: Github源码, 中文文档 二.安装 简单上阵, 我们的主机都是ubuntu, 请使用root用户: sudo su apt install ansible ansible --version 配置文件: ls /et

自动化运维工具ansible的基本应用

在很多场景中我们都需要在多个主机上执行相同的命令或者是做相同的配置工作,此时,为了简化操作,我们可以借助一些自动化的工具来完成我们的需求,这种工具我们称之为自动化运维工具.ansible就是其中之一,下面我们就来用ansible来实现一些简单操作. 下面是ansible可以实现很多工具的功能,框架图如下所示:ansible不能实现操作系统的安装 ansible作者就是早期puppet和func的维护者之一,因为ansible充分吸取了puppet和func的优势,又力图避免他们的劣势. OS P

轻量级自动化运维工具ansible之一:介绍及初步使用

一.常见的自动化运维工具: OS Provisioning:PXE, Cobbler OS Config:puppet, saltstack, chef, func Task Exec:fabric, saltstack, func Program Deployment:fabric 管理主机控制被管理节点的方式: agent:被管理节点上需要安装代理程序以接受管理主机的操作:如puppet, func agentless:被管理节点不需安装代理程序,管理主机借助ssh传递操作指令,如ansib

自动化运维工具--Ansible(安装部署、模块简介与操作)

一.Ansible概述 互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式. 自动化运维工具划分为两类: 一是需要使用代理工具的,也就是基于agent程序来实现管理功能,例如puppet.func.zabbix等 二是不需要代理配置工具的,可以直接基于SSH服务来完成管理功能,如ansible,fabric等. 自动化运维工具比较: 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python