httpd+passenger处理puppet大并发

puppetmaster默认使用的是ruby自带的web服务器WEBRick,它太过简陋,无法满足puppet客户端成百上千的并发,apache成熟稳定、功能强大,这里用apache替换WEBRick。步骤如下

禁用selinux ,修改/etc/selinux/config

  1. SELINUX=disabled 

(必须果断禁用selinux,我测试好久没成功都怪它捣鬼。方法有很多,在grub内核启动参数后加selinux=0 也可)

 

用puppet的方式安装apache 和 mod_ssl (等效于yum install)

  1. # puppet resource package httpd ensure=present 
  2. # puppet resource package mod_ssl ensure=present 
  3. # puppet resource service httpd ensure=stopped 

 

安装passenger

passenger是一套apache的ruby模块,工作方式跟mod_php差不多

  1. # rpm -Uvh  http://passenger.stealthymonkeys.com/rhel/6/passenger-release.noarch.rpm 
  2. # yum install mod_passenger --enablerepo=epel 

 

1、httpd的配置文件 

  1. # cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/rack.conf 

很不幸,这里的配置文件是给debian/ubuntu用的,需要修正一些设置,譬如ssl路径为/var/lib/puppet/ssl

 

还有两行要注意,证书名字需要替换,否则httpd报错文件不存在,无法启动httpd。

 

 将

  1. SSLCertificateFile  /etc/puppet/ssl/certs/squigley.namespace.at.pem 
  2. SSLCertificateKeyFile   /etc/puppet/ssl/private_keys/squigley.namespace.at.pem 

替换成

  1. SSLCertificateFile  /var/lib/puppet/ssl/certs/puppet.test.org.pem 
  2. SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/puppet.test.org.pem 

 

2、建立httpd虚拟主机的根目录,/etc/puppet/rack  

  1. # mkdir -p /etc/puppet/rack/{public,tmp}  
  2. # cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/  
  3. # chown puppet:puppet /etc/puppet/rack/config.ru  

 (config.ru 文件为触发apache调用puppetmaster )

3、测试成功

  1. # chkconfig puppetmaster off 
  2. # chkconfig httpd on  
  3. # service httpd start  
  4. # puppet agent --test   
  5. info: Caching catalog for apache01.test.org   
  6. info: Applying configuration version '1343463477'   
  7. notice: Finished catalog run in 0.02 seconds   

 (补充说明,8140端口被apache占据,因此puppetmaster应该禁用。 )