安全:
官方目前对于Puppet Dashboard 的安全解决方案不是很成熟,有如下3个办法:
1、使用防火墙之类的工具,只容许某个IP访问
2、使用隧道加密技术,类似于ssh、stunnel
3、使用http认证代理
性能优化:
当master管理了大量主机,Puppet Dashboard的性能会下降,可以从如下几个方面做些优化:
1、定期删除reports这张表的数据,比喻保持一周或者15天。有2个办法清理:
1) 运行rake RAILS_ENV=production reports:prune upto=1 unit=mon,或者执行运行rake reports:prune,根据提示来选择删除1小时前、1天前或者一周前的记录
2) 直接登录数据库,执行delete from reports where time like "2011-01-11%";
这里有个地方需要注意,MySQL建立数据库默认的引擎是InnoDB,如下:
mysql> show create table reports;
+---------+-------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table +---------+-------------------------------------------------------------------------------------------------------------------------+
| reports | CREATE TABLE `reports` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`node_id` int(11) DEFAULT NULL,
`report` mediumtext,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
`success` tinyint(1) DEFAULT NULL,
`host` varchar(255) DEFAULT NULL,
`time` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_reports_on_node_id_and_success` (`node_id`,`success`),
KEY `index_reports_on_time_and_node_id_and_success` (`time`,`node_id`,`success`)
) ENGINE=InnoDB AUTO_INCREMENT=217324 DEFAULT CHARSET=utf8 |
+---------+-------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
删除时会报错:ERROR 1534 (HY000): Writing one row to the row-based binary log failed,需要把reports这张表引擎转为MyISAM,alter table reports engine = MyISAM;
2、在Puppet Dashboard目录运行rake RAILS_ENV=production db:raw:optimize,优化Dashboard
3、运行Dashboard时加上-e production参数,./script/server -e production,默认的会是development,没有使用缓存并且有大量的log
4、使用Phusion Passenger,多进程来应付并发,提高性能,可以用nginx配合Phusion Passenger。
阅读(1832) | 评论(1) | 转发(0) |