社区管理系统的设计与实现
关键词:电脑操作系统,计算机输入输出设备,系统软件
重点阐述了计算机系统管理中应考虑的重要因素。规划集群安装时必须考虑的事项;在选择硬件时应该关注的因素;集群安装的性能规范。
Fabric库
Fabric库是一个用于简化系统管理任务的库。Chef库和Puppet库倾向于专注于管理服务器和系统库,而Fabric库则更专注于应用程序级别的任务,比如部署。
安装Fabric库:
$ pip install fabric
下面的代码将创建我们可以使用的两个任务:memory_usage和deploy。前者将输出每台机器上的内存使用情况。后者将SSH进入每个服务器,进入到我们的项目目录,激活虚拟环境,获取最新的代码库,并重新启动应用服务器。
from fabric.api import cd, env, prefix, run, task
env.hosts = [my_server1, my_server2]
@task
def memory_usage():
run(free -m)
@task def deploy():
with cd(/var/www/project-env/project):
with prefix(. ../bin/activate):
run(git pull)
run(touch app.wsgi)
前面的代码保存在名为fabfile.py的文件中,我们可以使用以下方法检查内存使用情况:
$ fab memory_usage
[my_server1] Executing task memory
[my_server1] run: free -m[my_server1] out: total used free shared buffers cached
[my_server1] out: Mem: 6964 1897 5067 0 166 222
[my_server1] out: -/ buffers/cache: 1509 5455
[my_server1] out: Swap: 0 0 0
[my_server2] Executing task memory
[my_server2] run: free -m
[my_server2] out: total used free shared buffers cached
[my_server2] out: Mem: 1666 902 764 0 180 572
[my_server2] out: -/ buffers/cache: 148 1517
[my_server2] out: Swap: 895 1 894
我们可以这样部署:
$ fab deploy
其他功能包括并行执行、与远程程序交互以及主机分组。
Salt工具
Salt是一个开源基础设施管理工具。它支持从中心点执行远程命令(主主机)到多个主机(仆从)。它还支持系统状态,可用于配置多个状态使用简单模板文件的服务器。
Salt支持Python 2.6和2.7版本,可以通过pip安装:
$ pip install salt
在配置主服务器和任意数量的仆从主机之后,我们可以在仆从主机上运行任意shell命令或使用预构建的复杂命令模块。
下面的命令使用ping模块列出了所有可用的仆从主机。
$ salt * test.ping
主机过滤是通过匹配仆从id或使用数据系统来完成的。数据系统使用静态主机信息,如操作系统版本或CPU架构,为主机提供分类盐模块。
下面的命令列出了所有在CentOS中使用数据系统运行的仆从:
$ salt -G os:CentOS test.ping
Salt也提供了一个状态系统。状态可以用来配置仆从主机。
例如,当一个minion主机被命令读取以下状态文件时,它将安装并启动Apache服务器:
apache:
pkg:
- installed
service:
- running
- enable: True
- require:
- pkg: apache
可以使用YAML、Jinja2模板系统或纯Python编写状态文件。
Psutil接口
Psutil是不同系统信息(如CPU、内存、磁盘、网络、用户和进程)的接口。
下面是一个需要注意服务器过载的示例。如果任何测试(网络、CPU)失败,它将发送一封电子邮件。
# Functions to get system values:
from psutil import cpu_percent, net_io_counters
# Functions to take a break:
from time import sleep
# Package for email services:
import smtplib
import string
MAX_NET_USAGE = 400000
MAX_ATTACKS = 4
attack = 0
counter = 0
while attack lt;= MAX_ATTACKS:
sleep(4)
counter = counter 1
# Check the cpu usage
if cpu_percent(interval = 1) gt; 70:
attack = attack 1
# Check the net usage
neti1 = net_io_counters()[1]
neto1 = net_io_counters()[0]
sleep(1)
neti2 = net_io_counters()[1]
neto2 = net_io_counters()[0]
# Calculate the bytes per second
net = ((neti2 neto2) - (neti1 neto1))/2
if net gt; MAX_NET_USAGE:
attack = attack 1
if counter gt; 25:
attack = 0
counter = 0
# Write a very important email if attack is higher than 4
TO = 'you@your_email.com'
FROM = 'webmaster@your_domain.com'
SUBJECT = 'Your domain is out of system resources!'
text = 'Go and fix your server!'
BODY = string.join(('From: %s' %FROM,'To: %s' %TO,'Subject: %s' %SUBJECT, '',text), ' ')
server = smtplib.SMTP(127.0.0.1)
server.sendmail(FROM, [TO], BODY)
server.quit()
glance是一个基于Psutil并具有客户机-服务器监控能力的完整终端应用程序。
Ansible工具
Ansible是一个开源的系统自动化工具。相对于Puppet 或Chef,它最大的优势在于它不需要
要求客户端机器上有一个代理。剧本是Ansible的配置、部署和编排并使用YAML编写,使用Jinja2进行排版。
Ansible支持Python 2.6和2.7版本,可以通过pip安装:
$ pip install ansible
Ansible需要一个目录文件来描述它可以访问的主机。下面是一个主机和能ping通库存文件中所有主机的文件。
下面是一个示例目录文件:
剩余内容已隐藏,支付完成后下载完整资料
英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[595998],资料为PDF文档或Word文档,PDF文档可免费转换为Word
社区管理系统的设计与实现 |
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。