DevOps学院

DevOps学院

中国新一代IT在线教育平台
运维知识体系

运维知识体系

运维知识体系总结,持续更新,欢迎转载。
缓存知识体系

缓存知识体系

运维知识体系之缓存,分层多级缓存体系。
速云科技

速云科技

DevOps咨询、企业内训、落地解决方案。

应用监控-Nginx状态监控

运维监控赵班长 发表了文章 • 0 个评论 • 2535 次浏览 • 2015-10-29 08:11 • 来自相关话题

开启方法server {
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}输出例子

Active connections: 3176
server accepts handled requests
 12633357212 12633357212 16331056076
Reading: 4 Writing: 97 Waiting: 3075

输出详情
Active connections:   当前 Nginx 正处理的活动连接数。serveraccepts handled requests — 总共处理了 233851 个连接 , 成功创建 233851 次握手 (证明中间没有失败的 ), 总共处理了 687942 个请求 ( 平均每次握手处理了 2.94 个数据请求 )。Reading :     nginx当前读取到客户端的 Header 信息数。writing :        nginx 当前返回给客户端的 Header 信息数。waiting:         开启 keep-alive 的情况下,这个值等于 active – (reading + writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。 查看全部
开启方法
server {
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
输出例子


Active connections: 3176
server accepts handled requests
 12633357212 12633357212 16331056076
Reading: 4 Writing: 97 Waiting: 3075


输出详情
  • Active connections:   当前 Nginx 正处理的活动连接数。
  • serveraccepts handled requests — 总共处理了 233851 个连接 , 成功创建 233851 次握手 (证明中间没有失败的 ), 总共处理了 687942 个请求 ( 平均每次握手处理了 2.94 个数据请求 )。
  • Reading :     nginx当前读取到客户端的 Header 信息数。
  • writing :        nginx 当前返回给客户端的 Header 信息数。
  • waiting:         开启 keep-alive 的情况下,这个值等于 active – (reading + writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。

应用监控-Apache状态监控

运维监控赵班长 发表了文章 • 0 个评论 • 2330 次浏览 • 2015-10-29 08:10 • 来自相关话题

开启方法

如果是源码安装的默认在httpd-info.conf里面有相关配置,可以在httpd.conf里面进行include。
httpd.conf:
Include conf/extra/httpd-info.conf
注意在httpd-info.conf里面有两个配置分别为server-status和server-info。分别依赖mod_status和mod_info模块。
Mod_status里面主要是Apache当前的连接状态,通过设置ExtendedStatus On可以输出更完整详细的内容。Mod_info的输出是Apache所有运行状态的完整输出,包括配置文件等,有点类似于phpinfo的效果。
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 124.192.11.16
</Location>
ExtendedStatus On
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 124.192.11.16
</Location>
需要强调的是,用户开启状态,注意设置Allow From,以免造成敏感信息的泄漏。 查看全部
开启方法

如果是源码安装的默认在httpd-info.conf里面有相关配置,可以在httpd.conf里面进行include。
httpd.conf:
Include conf/extra/httpd-info.conf
注意在httpd-info.conf里面有两个配置分别为server-status和server-info。分别依赖mod_status和mod_info模块。
  • Mod_status里面主要是Apache当前的连接状态,通过设置ExtendedStatus On可以输出更完整详细的内容。
  • Mod_info的输出是Apache所有运行状态的完整输出,包括配置文件等,有点类似于phpinfo的效果。

<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 124.192.11.16
</Location>
ExtendedStatus On
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 124.192.11.16
</Location>

需要强调的是,用户开启状态,注意设置Allow From,以免造成敏感信息的泄漏。

中小企业自动化部署实践和监控体系构建实践

DevOps赵班长 发表了文章 • 0 个评论 • 2169 次浏览 • 2015-10-28 10:14 • 来自相关话题

下面是我在微信公众号:高效运维分享的两篇文章,欢迎拍砖和转发!


中小企业自动化部署实践

中小企业监控体系构建实践 查看全部
下面是我在微信公众号:高效运维分享的两篇文章,欢迎拍砖和转发!


中小企业自动化部署实践

中小企业监控体系构建实践

SaltStack快速入门(5)-SaltStack与ZeroMQ

SaltStack赵班长 发表了文章 • 2 个评论 • 3966 次浏览 • 2015-10-27 22:46 • 来自相关话题

    我们进行自动化运维大多数情况下,是我们的服务器数量已经远远超过人工SSH维护的范围,SaltStack可以支数以千计,甚至更多的服务器。这些性能的提供主要来自于ZeroMQ,因为SaltStack底层是基于ZeroMQ进行高效的网络通信。ZMQ用于node与node间的通信,node可以是主机也可以是进程。

ZeroMQ简介
  ZeroMQ(我们通常还会用ØMQ , 0MQ, zmq等来表示)是一个简单好用的传输层,像框架一样的一个套接字库,他使得Socket编程更加简单、简洁和性能更高。它还是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。
发布与订阅
ZeroMQ支持Publish/Subscribe,即发布与订阅模式,我们经常简称Pub/Sub。






 Salt Master运行两个网络服务,其中一个是ZeroMQ PUB系统,默认监听4505端口。可以通过修改/etc/salt/master配置文件的publish_port参数设置。它是salt的消息发布系统,如果查看4505端口,会发现所有的Minion连接到Master的4505端口,TCP状态持续保持为ESTABLISHED。

[root@ master]# lsof -i:4505

    这样Salt Master发布一个消息,所有连接到4505这个Pub端口上的Minion都会接收到这个消息。然后每个Minion会再判断自己是否需要执行这个消息。

请求与响应
ZeroMQ支持Request-Reply,即请求与响应模式,我们经常简称REQ/REP。





     Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口,可以通过修改/etc/salt/master配置文件的ret_port参数设置。它是salt客户端与服务端通信的端口。比如说Minion执行某个命令后的返回值就是发送给Master的4506这个REP端口
由于我们在最初安装了python-setproctitle软件包,所以我们可以直接看到Salt Master启动的进程的名称。

[root@ops-node1 ~]# ps aux | grep salt
/usr/bin/salt-master -d ProcessManager  #中心进程管理器
/usr/bin/salt-master -d _clear_old_jobs  #清除旧的Jobs文件及更新fileserver
/usr/bin/salt-master -d Publisher       #将任务PUB到Minion端
/usr/bin/salt-master -d EventPublisher  #Event Publisher进程
/usr/bin/salt-master -d ReqServer_ProcessManager #ReqServer进程管理器
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorkerQueue #将Ret接口(ROUTER)数据转发到Worker(DEALER)
  查看全部
    我们进行自动化运维大多数情况下,是我们的服务器数量已经远远超过人工SSH维护的范围,SaltStack可以支数以千计,甚至更多的服务器。这些性能的提供主要来自于ZeroMQ,因为SaltStack底层是基于ZeroMQ进行高效的网络通信。ZMQ用于node与node间的通信,node可以是主机也可以是进程。

ZeroMQ简介
  ZeroMQ(我们通常还会用ØMQ , 0MQ, zmq等来表示)是一个简单好用的传输层,像框架一样的一个套接字库,他使得Socket编程更加简单、简洁和性能更高。它还是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。
发布与订阅
ZeroMQ支持Publish/Subscribe,即发布与订阅模式,我们经常简称Pub/Sub。

1.png


 Salt Master运行两个网络服务,其中一个是ZeroMQ PUB系统,默认监听4505端口。可以通过修改/etc/salt/master配置文件的publish_port参数设置。它是salt的消息发布系统,如果查看4505端口,会发现所有的Minion连接到Master的4505端口,TCP状态持续保持为ESTABLISHED。


[root@ master]# lsof -i:4505


    这样Salt Master发布一个消息,所有连接到4505这个Pub端口上的Minion都会接收到这个消息。然后每个Minion会再判断自己是否需要执行这个消息。

请求与响应
ZeroMQ支持Request-Reply,即请求与响应模式,我们经常简称REQ/REP。
2.png


     Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口,可以通过修改/etc/salt/master配置文件的ret_port参数设置。它是salt客户端与服务端通信的端口。比如说Minion执行某个命令后的返回值就是发送给Master的4506这个REP端口
由于我们在最初安装了python-setproctitle软件包,所以我们可以直接看到Salt Master启动的进程的名称。


[root@ops-node1 ~]# ps aux | grep salt
/usr/bin/salt-master -d ProcessManager  #中心进程管理器
/usr/bin/salt-master -d _clear_old_jobs  #清除旧的Jobs文件及更新fileserver
/usr/bin/salt-master -d Publisher       #将任务PUB到Minion端
/usr/bin/salt-master -d EventPublisher  #Event Publisher进程
/usr/bin/salt-master -d ReqServer_ProcessManager #ReqServer进程管理器
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorker  #工作进程
/usr/bin/salt-master -d MWorkerQueue #将Ret接口(ROUTER)数据转发到Worker(DEALER)
 


SaltStack快速入门(4)-SaltStack配置管理

SaltStack赵班长 发表了文章 • 3 个评论 • 3068 次浏览 • 2015-10-27 22:42 • 来自相关话题

      Salt使用State模块文件进行配置管理,使用YAML编写,以.sls结尾。如果进行配置管理首先需要再Master的配置文件中指定”file roots”的选项,Salt支持环境的配置,比如开发环节、测试环境、生产环境,但是base环境是必须的。而且Base环境必须包含入口文件top.sls。

 第一步:设置file_roots
修改Master配置文件,指定File_roots。

[root@master ~]# vim /etc/salt/master
file_roots:
   base:
     - /srv/salt

创建相应的目录
[root@master ~]# mkdir -p /srv/salt
重启Salt Master
[root@master ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                              [  OK  ]
Starting salt-master daemon:                               [  OK  ]

 第二步:设置top.sls
在top.sls入口文件设置环境(如生产、开发、测试对应不同的minion和模块)。

[root@master ~]# vim /srv/salt/top.sls
base:
  '*':
   - apache

解释:所有的Minion均执行base目录下的init模块下的pkg-init.sls。我们可以把很多的sls放在一个目录中,方便管理。在top.sls只需要指定目录结构即可。

 第三步:编写状态文件

[root@master ~]# vim /srv/salt/apache.sls
apache-install:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel
apache-service:
  service.running:
    - enable: True
    - reload: True

第四步:执行状态
[root@master ~]# salt '*' state.highstate

根据上面的设置,执行完状态后。Salt会检查Minion上是否有上面编写的三个软件包。如果没有就会自动使用Yum安装上。 查看全部
      Salt使用State模块文件进行配置管理,使用YAML编写,以.sls结尾。如果进行配置管理首先需要再Master的配置文件中指定”file roots”的选项,Salt支持环境的配置,比如开发环节、测试环境、生产环境,但是base环境是必须的。而且Base环境必须包含入口文件top.sls。

 第一步:设置file_roots
修改Master配置文件,指定File_roots。


[root@master ~]# vim /etc/salt/master
file_roots:
   base:
     - /srv/salt


创建相应的目录
[root@master ~]# mkdir -p /srv/salt
重启Salt Master
[root@master ~]# /etc/init.d/salt-master restart
Stopping salt-master daemon:                              [  OK  ]
Starting salt-master daemon:                               [  OK  ]

 第二步:设置top.sls
在top.sls入口文件设置环境(如生产、开发、测试对应不同的minion和模块)。


[root@master ~]# vim /srv/salt/top.sls
base:
  '*':
   - apache


解释:所有的Minion均执行base目录下的init模块下的pkg-init.sls。我们可以把很多的sls放在一个目录中,方便管理。在top.sls只需要指定目录结构即可。

 第三步:编写状态文件


[root@master ~]# vim /srv/salt/apache.sls
apache-install:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel
apache-service:
  service.running:
    - enable: True
    - reload: True


第四步:执行状态
[root@master ~]# salt '*' state.highstate

根据上面的设置,执行完状态后。Salt会检查Minion上是否有上面编写的三个软件包。如果没有就会自动使用Yum安装上。

SaltStack快速入门(3)-SaltStack远程执行

SaltStack赵班长 发表了文章 • 0 个评论 • 2793 次浏览 • 2015-10-27 22:39 • 来自相关话题

      在前面3个小节我们介绍了SaltStack并且讲解了Salt的安装部署。相信你现在已经只有拥有一个Master和至少一个Minion。我们能做点什么呢?下面的两个章节,带领读者快速的使用SaltStack的远程执行和配置管理功能。

    远程执行时SaltStack的核心功能之一。主要使用salt模块可以批量给选定的Minion端执行相应的命令,并获得返回结果。让我们执行第一个Salt命令。

[root@master ~]# salt '*' test.ping
minion.example.com:
True

    上面的命令用来查看有哪些Minion节点连接到Master。* 指的是选定的目标Minion,很显然代表所有。就是所有Minion端了。test.ping是salt远程执行的一个模块。(注意:这并不是一个ICMP ping。)

SaltStack可以使用cmd.run模块远程执行shell命令,使用cmd.run。如:让 Minion节点运行uptime命令。

[root@master ~]# salt '*' cmd.run 'uptime'
minion.example.com:
     18:00:04 up 8 min,  1 user,  load average: 0.00, 0.05, 0.03

      SaltStack提供了大量的命令模块可以使用。更详细远程执行的相关知识请参考第九章。好吧,也许你不想掌握更多的命令,那么尽情的用cmd.run吧。但是由于cmd.run可以执行所有的命令,所以不建议在生产环境中使用cmd.run。或者使用ACL来控制让哪些用户可以使用cmd.run。 查看全部
      在前面3个小节我们介绍了SaltStack并且讲解了Salt的安装部署。相信你现在已经只有拥有一个Master和至少一个Minion。我们能做点什么呢?下面的两个章节,带领读者快速的使用SaltStack的远程执行和配置管理功能。

    远程执行时SaltStack的核心功能之一。主要使用salt模块可以批量给选定的Minion端执行相应的命令,并获得返回结果。让我们执行第一个Salt命令。


[root@master ~]# salt '*' test.ping
minion.example.com:
True


    上面的命令用来查看有哪些Minion节点连接到Master。* 指的是选定的目标Minion,很显然代表所有。就是所有Minion端了。test.ping是salt远程执行的一个模块。(注意:这并不是一个ICMP ping。)

SaltStack可以使用cmd.run模块远程执行shell命令,使用cmd.run。如:让 Minion节点运行uptime命令。


[root@master ~]# salt '*' cmd.run 'uptime'
minion.example.com:
     18:00:04 up 8 min,  1 user,  load average: 0.00, 0.05, 0.03


      SaltStack提供了大量的命令模块可以使用。更详细远程执行的相关知识请参考第九章。好吧,也许你不想掌握更多的命令,那么尽情的用cmd.run吧。但是由于cmd.run可以执行所有的命令,所以不建议在生产环境中使用cmd.run。或者使用ACL来控制让哪些用户可以使用cmd.run。

SaltStack快速入门(2)-SaltStack部署

SaltStack赵班长 发表了文章 • 2 个评论 • 3819 次浏览 • 2015-10-27 22:38 • 来自相关话题

SaltStack支持多种操作系统,如CentOS、RedHat、Debian、Ubuntu、FreeBSD、Solaris、Fedora、SuSe、Gentoo、MAC OS X、Archlinux等,以及Windows(仅支持Minion)。

 RHEL/CentOS下安装SaltStack
对于Centos和RedHat用户,使用yum安装时最直接和快捷的。首先需要安装EPEL仓库。
For RHEL/CentOS 5

rpm -ivh http://mirrors.ustc.edu.cn/fed ... h.rpm

For RHEL/CentOS 6

rpm -ivh http://dl.fedoraproject.org/pu ... h.rpm


Salt Master安装:

[root@master ~]#yum install -y salt-master python-setproctitle

Salt Master启动:

[root@master ~]#/etc/init.d/salt-master start

Salt Master加入开机启动:

[root@master ~]# chkconfig salt-master on


Salt Minion安装:

[root@minion ~]#yum install -y salt-minion

Salt Minion 启动:

[root@minion ~]#/etc/init.d/salt-minion start

Salt Minion 加入开机启动:

[root@minion ~]#chkconfig salt-minion on


服务端日志:
[root@master ~]# tail -f /var/log/salt/master
客户端日志:
[root@minion ~]# tail -f /var/log/salt/minion

 Ubuntu下安装SaltStack
添加salt仓库

sudo add-apt-repository ppa:saltstack/salt     
sudo apt-get update    

安装master

sudo apt-get install salt-master    

安装minion

sudo apt-get install salt-minion

 Windows下安装Salt Minion
目前SaltStack的Master 还无法运行在windows 上,也许永远都不会。但是可以运行Minion。
Minion在Windows下安装:
在https://docs.saltstack.com/downloads/ 下载最新相对应的Salt-Minion-*-Setup.exe 直接运行安装即可。同时也可以在cmd窗口,通过命令安装:

Salt-Minion-*-Setup.exe /S /master=master-ip /minion-name=minion-name    

 其他操作系统安装
本文的案例环境是CentOS。可以通过以下网址获取到其它更多操作系统的安装方法:
http://docs.saltstack.com/en/l ... .html 

Salt配置文件

Salt Master配置
Master端的配置是修改/etc/salt下master配置文件。以下是Master端常用的配置。

interface:  指定bind 的地址(默认为0.0.0.0)
publish_port:  指定发布端⼝(默认为4505)
ret_port:  指定结果返回端⼝,  与minion配置⽂件中的master_port对应(默认为4506)
user: 指定master 进程的运⾏⽤户,  如果调整,  则需要调整部分目录的权限(默认为root)
timeout:  指定timeout时间,  如果minion规模庞⼤或⺴络状况不好,建议增⼤该值(默认5s)
keep_jobs:  默认情况下, minion 会执⾏结果会返回master, master会缓存到本地的cachedir ⺫录,  该参数指定缓存多⻓时间,  以供查看之前的执⾏结果,  会占⽤磁盘空间(默认为24h)
job_cache: master 是否缓存执⾏结果,  如果规模庞⼤(超过5000台),  建议使⽤其他⽅式来存储jobs,  关闭本选项(默认为True)
file_recv :  是否允许minion传送⽂件到master 上(默认是Flase)
file_roots: 指定file server⺫录,  默认为:
file_roots:    
   base:    
    - /srv/salt     
pillar_roots :  指定pillar ⺫录,  默认为:
pillar_roots:     
  base:     
    - /srv/pillar     
log_level:  执⾏⽇志级别,  ⽀持的⽇志级别有'garbage', 'trace', 'debug', info', 'warning', 'error', ‘critical ’ ( 默认为’warning’)

Salt Minion配置
Minion端配置非常简单,一般只需要修改两个配置即可。
[root@minion ~]# vim /etc/salt/minion

master: 192.168.56.111 (修改master为master的IP地址)
id: (客户端的id。默认不设置会取客户端的FQDN主机名)

Minion常用配置

master: 指定master 主机(默认为salt)
master_port: 指定认证和执⾏结果发送到master 的哪个端⼝,  与master 配置⽂件中的ret_port 对应(默认
为4506)
id:  指定本minion的标识. salt内部使⽤id 作为标识(默认为主机名)
user: 指定运⾏minion的⽤户.  由于安装包,启动服务等操作需要特权⽤户,  推荐使⽤root( 默认为root)
cache_jobs : minion 是否缓存执⾏结果(默认为False)
backup_mode:  在⽂件操作(file.managed 或file.recurse) 时,  如果⽂件发⽣变更,指定备份⺫标.  当前有效
的值为minion, 备份在cachedir/file_backups⺫录下,  以原始⽂件名称加时间戳来命名(默认为Disabled)
providers :  指定模块对应的providers, 如在RHEL系列中, pkg对应的providers 是yumpkg5
renderer: 指定配置管理系统中的渲染器(默认值为:yaml_jinja )
file_client :  指定file clinet 默认去哪⾥(remote 或local) 寻找⽂件(默认值为remote)
loglevel:  指定⽇志级别(默认为warning)
tcp_keepalive : minion 是否与master 保持keepalive 检查, zeromq3 以下版本存在keepalive bug,会导致某些情况下连接异常后minion⽆法重连master. 建议有条件的话升级到zeromq 3以上版本(默认为True)

SaltStack认证
Salt的数据传输是通过AES加密的,Master和Minion之间在通信之前,需要进行认证。通过认证的方式保证安全性,完成一次认证后,Master就可以自由的控制Minion来完成各项工作了。了解了认证的详细有助于我们在日常管理中管理Minion,已经及时处理问题。
1.minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和minion.pub(public key),然后将minion.pub发送给master。2.master在第一次启动时,会在/etc/salt/pki/master下自动生成master.pem和master.pub。在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 客户端会保存一份master的public key,在/etc/salt/pki/minion_master.pub3.通过两个步骤的验证,master就能对minion发送指令了。

 Master端Key认证
在上面一个小节已经提到了Master与Minion的认证方式,只有Master接受了Minion的Key后,才能进行管理。具体的认证命令为salt-key,常用的有如下命令。

-a ACCEPT, --accept=ACCEPT Accept the following key
-A, --accept-all    Accept all pending keys
-r REJECT, --reject=REJECT Reject the specified public key
-R, --reject-all    Reject all pending keys
-d DELETE, --delete=DELETE Delete the named key
-D, --delete-all    Delete all keys

例:查看需要认证的Minion:
[root@master ~]# salt-key
Accepted Keys:
Unaccepted Keys:
minion.example.com
Rejected Keys:
认证Minion:
[root@master ~]# salt-key --accept=*
The following keys are going to be accepted:
Unaccepted Keys:
minion.example.com
Proceed? [n/Y] Y
Key for minion minion.example.com accepted.

小提示:无论是accept还是delete都支持Linux的Shell通配符。 查看全部
SaltStack支持多种操作系统,如CentOS、RedHat、Debian、Ubuntu、FreeBSD、Solaris、Fedora、SuSe、Gentoo、MAC OS X、Archlinux等,以及Windows(仅支持Minion)。

 RHEL/CentOS下安装SaltStack
对于Centos和RedHat用户,使用yum安装时最直接和快捷的。首先需要安装EPEL仓库。
For RHEL/CentOS 5


rpm -ivh http://mirrors.ustc.edu.cn/fed ... h.rpm


For RHEL/CentOS 6


rpm -ivh http://dl.fedoraproject.org/pu ... h.rpm



Salt Master安装:


[root@master ~]#yum install -y salt-master python-setproctitle


Salt Master启动:


[root@master ~]#/etc/init.d/salt-master start


Salt Master加入开机启动:


[root@master ~]# chkconfig salt-master on



Salt Minion安装:


[root@minion ~]#yum install -y salt-minion


Salt Minion 启动:


[root@minion ~]#/etc/init.d/salt-minion start


Salt Minion 加入开机启动:


[root@minion ~]#chkconfig salt-minion on



服务端日志:
[root@master ~]# tail -f /var/log/salt/master
客户端日志:
[root@minion ~]# tail -f /var/log/salt/minion

 Ubuntu下安装SaltStack
添加salt仓库


sudo add-apt-repository ppa:saltstack/salt     
sudo apt-get update    


安装master


sudo apt-get install salt-master    


安装minion


sudo apt-get install salt-minion


 Windows下安装Salt Minion
目前SaltStack的Master 还无法运行在windows 上,也许永远都不会。但是可以运行Minion。
Minion在Windows下安装:
https://docs.saltstack.com/downloads/ 下载最新相对应的Salt-Minion-*-Setup.exe 直接运行安装即可。同时也可以在cmd窗口,通过命令安装:


Salt-Minion-*-Setup.exe /S /master=master-ip /minion-name=minion-name    


 其他操作系统安装
本文的案例环境是CentOS。可以通过以下网址获取到其它更多操作系统的安装方法:
http://docs.saltstack.com/en/l ... .html 

Salt配置文件

Salt Master配置

Master端的配置是修改/etc/salt下master配置文件。以下是Master端常用的配置。

interface:  指定bind 的地址(默认为0.0.0.0)
publish_port:  指定发布端⼝(默认为4505)
ret_port:  指定结果返回端⼝,  与minion配置⽂件中的master_port对应(默认为4506)
user: 指定master 进程的运⾏⽤户,  如果调整,  则需要调整部分目录的权限(默认为root)
timeout:  指定timeout时间,  如果minion规模庞⼤或⺴络状况不好,建议增⼤该值(默认5s)
keep_jobs:  默认情况下, minion 会执⾏结果会返回master, master会缓存到本地的cachedir ⺫录,  该参数指定缓存多⻓时间,  以供查看之前的执⾏结果,  会占⽤磁盘空间(默认为24h)
job_cache: master 是否缓存执⾏结果,  如果规模庞⼤(超过5000台),  建议使⽤其他⽅式来存储jobs,  关闭本选项(默认为True)
file_recv :  是否允许minion传送⽂件到master 上(默认是Flase)
file_roots: 指定file server⺫录,  默认为:
file_roots:    
   base:    
    - /srv/salt     
pillar_roots :  指定pillar ⺫录,  默认为:
pillar_roots:     
  base:     
    - /srv/pillar     
log_level:  执⾏⽇志级别,  ⽀持的⽇志级别有'garbage', 'trace', 'debug', info', 'warning', 'error', ‘critical ’ ( 默认为’warning’)

Salt Minion配置
Minion端配置非常简单,一般只需要修改两个配置即可。
[root@minion ~]# vim /etc/salt/minion


master: 192.168.56.111 (修改master为master的IP地址)
id: (客户端的id。默认不设置会取客户端的FQDN主机名)


Minion常用配置

master: 指定master 主机(默认为salt)
master_port: 指定认证和执⾏结果发送到master 的哪个端⼝,  与master 配置⽂件中的ret_port 对应(默认
为4506)
id:  指定本minion的标识. salt内部使⽤id 作为标识(默认为主机名)
user: 指定运⾏minion的⽤户.  由于安装包,启动服务等操作需要特权⽤户,  推荐使⽤root( 默认为root)
cache_jobs : minion 是否缓存执⾏结果(默认为False)
backup_mode:  在⽂件操作(file.managed 或file.recurse) 时,  如果⽂件发⽣变更,指定备份⺫标.  当前有效
的值为minion, 备份在cachedir/file_backups⺫录下,  以原始⽂件名称加时间戳来命名(默认为Disabled)
providers :  指定模块对应的providers, 如在RHEL系列中, pkg对应的providers 是yumpkg5
renderer: 指定配置管理系统中的渲染器(默认值为:yaml_jinja )
file_client :  指定file clinet 默认去哪⾥(remote 或local) 寻找⽂件(默认值为remote)
loglevel:  指定⽇志级别(默认为warning)
tcp_keepalive : minion 是否与master 保持keepalive 检查, zeromq3 以下版本存在keepalive bug,会导致某些情况下连接异常后minion⽆法重连master. 建议有条件的话升级到zeromq 3以上版本(默认为True)

SaltStack认证
Salt的数据传输是通过AES加密的,Master和Minion之间在通信之前,需要进行认证。通过认证的方式保证安全性,完成一次认证后,Master就可以自由的控制Minion来完成各项工作了。了解了认证的详细有助于我们在日常管理中管理Minion,已经及时处理问题。
  • 1.minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和minion.pub(public key),然后将minion.pub发送给master。
  • 2.master在第一次启动时,会在/etc/salt/pki/master下自动生成master.pem和master.pub。在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 客户端会保存一份master的public key,在/etc/salt/pki/minion_master.pub
  • 3.通过两个步骤的验证,master就能对minion发送指令了。


 Master端Key认证
在上面一个小节已经提到了Master与Minion的认证方式,只有Master接受了Minion的Key后,才能进行管理。具体的认证命令为salt-key,常用的有如下命令。


-a ACCEPT, --accept=ACCEPT Accept the following key
-A, --accept-all    Accept all pending keys
-r REJECT, --reject=REJECT Reject the specified public key
-R, --reject-all    Reject all pending keys
-d DELETE, --delete=DELETE Delete the named key
-D, --delete-all    Delete all keys


例:查看需要认证的Minion:
[root@master ~]# salt-key
Accepted Keys:
Unaccepted Keys:
minion.example.com
Rejected Keys:
认证Minion:
[root@master ~]# salt-key --accept=*
The following keys are going to be accepted:
Unaccepted Keys:
minion.example.com
Proceed? [n/Y] Y
Key for minion minion.example.com accepted.

小提示:无论是accept还是delete都支持Linux的Shell通配符。

SaltStack快速入门(1)SaltStack简介

SaltStack赵班长 发表了文章 • 1 个评论 • 4108 次浏览 • 2015-10-27 22:31 • 来自相关话题

     SaltStack是什么,它能干什么呢?我们首先介绍SaltStack的基本知识。然后快速的带领读者使用SaltStack的远程执行和使用SaltStack完成服务器配置管理的功能。让你快速的一睹SaltStack的风采。让我们立即开启敏捷的自动化运维之路!

SaltStack介绍
       
    SaltStack是一个新的基础平台管理工具,只需要花费数分钟即可运行起来,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递。SaltStack是使用Python语言开发的,同时提供Rest API方便二次开发以及和其它平台进行集成,同时官方也发布了一个Web管理界面halite。

SaltStack常用网址:
官方网站:http://www.saltstack.com官方文档:http://docs.saltstack.comGitHub:https://github.com/saltstack中国SaltStack⽤户组:http://www.saltstack.cn

SaltStack有三种运行方式:
 LocalMaster/MinionSalt SSH
    SaltStack的传统运行模式为Master/Minion(C/S结构),需要在被管理的节点上安装Minion。同时SaltStack也支持SSH的方式,无需安装Agent,通过SSH实现管理。

SaltStack目前拥有三大主要功能:
远程执行配置管理云管理
 
 SaltStack目前在业内的用户案例:
LinkedIn部署了约28,000的SaltStackWikipedia部署了约8,000 SaltStack用于代码更新,Rackspace大约一半的服务使用SaltStackHulu.com也采用了SaltStack。
国内目前各大公司也在研究和使用SaltStack。
  同时,你可以通过搜索引擎获得SaltStack与Puppet、Chef、Ansible等工具的对比,我们不准备列举和讨论这些对比,让我们快速的进入SaltStack的世界,相信你可以自己寻找到自己的答案。 查看全部
     SaltStack是什么,它能干什么呢?我们首先介绍SaltStack的基本知识。然后快速的带领读者使用SaltStack的远程执行和使用SaltStack完成服务器配置管理的功能。让你快速的一睹SaltStack的风采。让我们立即开启敏捷的自动化运维之路!

SaltStack介绍
       
    SaltStack是一个新的基础平台管理工具,只需要花费数分钟即可运行起来,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递。SaltStack是使用Python语言开发的,同时提供Rest API方便二次开发以及和其它平台进行集成,同时官方也发布了一个Web管理界面halite。

SaltStack常用网址:


SaltStack有三种运行方式:
  •  Local
  • Master/Minion
  • Salt SSH

    SaltStack的传统运行模式为Master/Minion(C/S结构),需要在被管理的节点上安装Minion。同时SaltStack也支持SSH的方式,无需安装Agent,通过SSH实现管理。

SaltStack目前拥有三大主要功能:
  • 远程执行
  • 配置管理
  • 云管理

 
 SaltStack目前在业内的用户案例:
  • LinkedIn部署了约28,000的SaltStack
  • Wikipedia部署了约8,000 SaltStack用于代码更新,
  • Rackspace大约一半的服务使用SaltStack
  • Hulu.com也采用了SaltStack。

国内目前各大公司也在研究和使用SaltStack。
  同时,你可以通过搜索引擎获得SaltStack与Puppet、Chef、Ansible等工具的对比,我们不准备列举和讨论这些对比,让我们快速的进入SaltStack的世界,相信你可以自己寻找到自己的答案。

CentOS 6.6 + Virtualbox + Mac_OSX_Yosemite 构建生产打包环境

系统管理赵班长 发表了文章 • 0 个评论 • 1990 次浏览 • 2015-10-20 17:17 • 来自相关话题

终于搞定了在Centos 6.6上使用Virtualbox安装Mac,用于在服务器上进行ios打包,记录一下。

1.创建虚拟机。System  ->  Chipset:PIIX3

2.执行命令。注意修改mac-node1为你实际的虚拟机名称。

VBoxManage setextradata "mac-node1"  "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
VBoxManage setextradata "mac-node1"  "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "mac-node1" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata "mac-node1" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "mac-node1" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

3.安装系统。

4.安装xcode

5.启动多个虚拟机,编写PHP进行打包。Nginx做负载均衡,终于解决了ios自动打包的问题。
  查看全部
终于搞定了在Centos 6.6上使用Virtualbox安装Mac,用于在服务器上进行ios打包,记录一下。

1.创建虚拟机。System  ->  Chipset:PIIX3

2.执行命令。注意修改mac-node1为你实际的虚拟机名称。

VBoxManage setextradata "mac-node1"  "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "MacBookPro11,3"
VBoxManage setextradata "mac-node1"  "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "mac-node1" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata "mac-node1" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "mac-node1" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1

3.安装系统。

4.安装xcode

5.启动多个虚拟机,编写PHP进行打包。Nginx做负载均衡,终于解决了ios自动打包的问题。
 

赵老师,能否介绍下cobbler的kickstart模块的一些常配参数

DevOpsrichie 回复了问题 • 2 人关注 • 2 个回复 • 2795 次浏览 • 2015-10-19 11:45 • 来自相关话题