Puppet apache + passenger模式扩展

puppet使用SSL(https)协议来进行通讯,默认情况下,puppet server端使用基于Ruby的WEBRick HTTP服务器。由于WEBRick HTTP服务器在处理agent端的性能方面并不是很强劲,因此需要扩展puppet,搭建Apache或者其他web服务器来处理客户的https请求。

Passenger是一个将Ruby程序嵌入执行的apache的一个模块,它可以让你运行Rails,即Rack应用内的一个Web服务器.能够自动增减集群进程的数量.能提高性能并增加Master和agent之间的并发连接数量。

工作原理如下:

安装好apache和passenger,然后配置apache处理puppet agent的SSL验证请求,最后将apache连接到puppet master.在处理SSL验证请求时,apache会验证puppet agent的证书是否由puppet CA签发,apache 会先验证请求.如果授权通过,则调用master.同时,apache会提供给puppet agent一个证书用于验证服务器的真实性,再将SSL证书存放在适当的位置.打开passenger模块并为puppet master服务创建一个虚拟主机来配置apache.

下面来配置一番:

1.安装apache等相关组件

yum install httpd httpd-devel mod_ssl ruby-devel rubygems libcurl-devel

2.使用ruby gem安装passenger

更换gem镜像 使用淘宝源:

gem sources --remove http://rubygems.org/
gem sources -a http://ruby.taobao.org/
gem sources -l
*** CURRENT SOURCES ***

http://ruby.taobao.org/
gem install rack passenger        #安装passenger
passenger-install-apache2-module  #整合apache和passenger  按照相关提示解决依赖关系
安装过程会提示配置apache虚拟主机时需要增加passenger模块配置文件
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.55/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
    PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.55
    PassengerDefaultRuby /usr/bin/ruby
</IfModule>

查看passengeroot目录.
[email protected]:~# passenger-config --root
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.55 

3.配置apache和passenger

需要在puppet master创建rack应用,创建一个目录用来存放config.ru配置文件,并创建一个虚拟主机配置文件.rack为web服务器提供了用来和puppet服务交换请求和响应的一些常用API.Rack适用于Ruby类的HTTP服务,可以用于多台服务器之间部署服务.

创建rack框架目录,拷贝配置文件,赋予puppet权限.

mkdir -p /etc/puppet/rack/puppetmaster/{public,tmp}
cp /usr/share/puppet/ext/rack/config.ru /etc/puppet/rack/puppetmaster/
chown puppet. /etc/puppet/rack/puppetmaster/config.ru

配置apache虚拟主机文件:

cp /usr/share/puppet/ext/rack/example-passenger-vhost.conf  /etc/httpd/conf.d/puppet.domain.com.conf
vim /etc/httpd/conf.d/puppet.domain.com.conf
# This Apache 2 virtual host config shows how to use Puppet as a Rack
# application via Passenger. See
# http://docs.puppetlabs.com/guides/passenger.html for more information.

# You can also use the included config.ru file to run Puppet with other Rack
# servers instead of Passenger.

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.55/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
    PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.55
    PassengerDefaultRuby /usr/bin/ruby
    # you probably want to tune these settings
    PassengerHighPerformance on
    PassengerMaxPoolSize 12
    PassengerPoolIdleTime 1500
    # PassengerMaxRequests 1000
    PassengerStatThrottleRate 120
#    RackAutoDetect Off
#    RailsAutoDetect Off
</IfModule>

Listen 8140

<VirtualHost *:8140>
        SSLEngine on
        SSLProtocol             ALL -SSLv2 -SSLv3
        SSLCipherSuite          EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
        SSLHonorCipherOrder     on

        SSLCertificateFile      /var/lib/puppet/ssl/certs/puppet.domain.com.pem
        SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/puppet.domain.com.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
        SSLCACertificateFile    /var/lib/puppet/ssl/ca/ca_crt.pem
        # If Apache complains about invalid signatures on the CRL, you can try disabling
        # CRL checking by commenting the next line, but this is not recommended.
        SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem
        # Apache 2.4 introduces the SSLCARevocationCheck directive and sets it to none
        # which effectively disables CRL checking; if you are using Apache 2.4+ you must
        # specify ‘SSLCARevocationCheck chain‘ to actually use the CRL.
        # SSLCARevocationCheck chain
        SSLVerifyClient optional
        SSLVerifyDepth  1
        # The `ExportCertData` option is needed for agent certificate expiration warnings
        SSLOptions +StdEnvVars +ExportCertData

        # This header needs to be set if using a loadbalancer or proxy
        RequestHeader unset X-Forwarded-For

        RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
        RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e

        DocumentRoot /etc/puppet/rack/puppetmaster/public/
        RackBaseURI /
        <Directory /etc/puppet/rack/puppetmaster/>
                Options None
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

检查配置
[email protected]:~# service httpd configtest
Syntax OK  启动apache
[email protected]:~# /etc/init.d/httpd start
检测端口及进程
[email protected]:~# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22000               0.0.0.0:*                   LISTEN      811/sshd            
tcp        0      0 127.0.0.1:55939             0.0.0.0:*                   LISTEN      15291/Passenger Rac 
tcp        0      0 :::8140                     :::*                        LISTEN      15234/httpd         
tcp        0      0 :::80                       :::*                        LISTEN      15234/httpd         
tcp        0      0 :::22000                    :::*                        LISTEN      811/sshd            
tcp        0      0 :::443                      :::*                        LISTEN      15234/httpd

4.客户测试:

[email protected]:~# puppet agent --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for agent.domain.com
Info: Applying configuration version ‘1418805297‘
Notice: Finished catalog run in 0.36 seconds

5.查看passenger状态

[email protected]:~# passenger-status
Version : 4.0.55
Date    : Wed Dec 17 17:24:28 +0800 2014
Instance: 15234
----------- General information -----------
Max pool size : 12
Processes     : 1
Requests in top-level queue : 0

----------- Application groups -----------
/etc/puppet/rack/puppetmaster#default:
  App root: /etc/puppet/rack/puppetmaster
  Requests in queue: 0
  * PID: 15291   Sessions: 0       Processed: 62      Uptime: 49m 35s
    CPU: 0%      Memory  : 85M     Last used: 1m 24s ago

[email protected]:~# passenger-memory-stats
Version: 4.0.55
Date   : Wed Dec 17 17:24:32 +0800 2014

---------- Apache processes ----------
PID    PPID   VMSize    Private  Name
--------------------------------------
15234  1      203.0 MB  0.4 MB   /usr/sbin/httpd
15254  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
15255  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
15256  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
15257  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
15258  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
15259  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
15260  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
15261  15234  203.3 MB  0.5 MB   /usr/sbin/httpd
### Processes: 9
### Total private dirty RSS: 4.27 MB

-------- Nginx processes --------

### Processes: 0
### Total private dirty RSS: 0.00 MB

----- Passenger processes -----
PID    VMSize    Private  Name
-------------------------------
15236  211.6 MB  0.3 MB   PassengerWatchdog
15239  564.9 MB  0.7 MB   PassengerHelperAgent
15244  210.5 MB  0.8 MB   PassengerLoggingAgent
15291  190.6 MB  85.4 MB  Passenger RackApp: /etc/puppet/rack/puppetmaster
### Processes: 4
### Total private dirty RSS: 87.20 MB
时间: 2024-10-03 10:54:41

Puppet apache + passenger模式扩展的相关文章

Puppet单台架构扩展(nginx/apache + passenger)

系统环境:rhel6.5,puppet 3.7.4 Master server1.example.com(192.168.88.128) Agent server2.example.com(192.168.88.129) 原理:使用apache或nginx代替puppet原生态的Webrick以提升master的吞吐量,在master上启webserver以负责监听8140端口并处理客户端的请求.file文件以及验证的客户端请求,将编译部分代理转发到后端的master.极大扩展master能够管

Puppet扩展(一):纵向扩展Apache+Passenger

1.功能说明 puppet默认使用基于Ruby的WEBRickHTTP来处理HTTPS请求, 单个服务器使用Apache+Passenger替换掉WEBRickHTTP, Passenger是用于将Ruby程序进行嵌入执行的Apache模块, 在安装前,首先至少要执行一次service puppetmaster start,生成本地证书 官方配置指南:https://docs.puppetlabs.com/guides/passenger.html 2.安装apache [[email prot

使用Apache+Passenger部署高性能PuppetMaster

前言: 最近在服务器系统上安装了最新的Puppet客户端,发现跟老版本的PuppetMaster做同步时出现了一些问题,警告类的信息很好解决,注释掉配置文件templatedir该行即可,后来又对PuppetMaster做了次升级,直接升为最新的3.6.1,随后发现PuppetMaster默认安装的WEBrick的web服务器性能较低且最新版本3.6.1存在bug以至于无法同时接受多台Agent客户端请求,因此使用Apache+Passenger方案替代原WEBrick,提高并发性能,同时解决b

Apache NiFi深度扩展

Apache NiFi深度扩展 介绍 该高级文档旨在深入了解NiFi的实施和设计决策.它假设读者已经阅读了足够的其他文档来了解NiFi的基础知识. FlowFiles是NiFi的核心,也是基于流程的设计.FlowFile是一种数据记录,由指向其内容(有效负载)的指针和支持内容的属性组成,该指针与一个或多个起源事件相关联.属性是用作FlowFile元数据的键/值对,例如FlowFile文件名.内容是文件的实际数据或有效负载.原产地是FlowFile发生的事情的记录.这些部分中的每一个都有自己的存储

apache工作模式介绍

apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多中,目前主要有两种模式:prefork模式和worker模式 . prefork模式:这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程兼容性问题的系统.它要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求. 这个MPM具有很强的自我调节能力,只需要很少的配置指令调整.最重要的是将M

ThinkPHP应用模式扩展之谜

ThinkPHP应用模式提供了对核心框架进行改造的机会,可以让你的应用适应更多的环境和不同的需求.每个应用模式都有自己的模式定义文件,相对与ThinkPHP3.1版本,ThinkPHP3.2版本对应用模式的扩展更加明确和清晰,在ThinkPHP3.1版本中定义了Cli.Lite.Thin.AMF.PHPRPC.REST模式,其定义方式和ThinkPHP3.2版本的方式大同小异,如有需要可以参考修改,其中Cli模式被ThinkPHP框架内置,不用单独定义Cli模式即可正常使用,如需要更细化调整可以

设计模式解密(22)- 访问者模式 - 扩展篇(分派的概念)

前言:访问者模式拆分  访问者模式基础篇 :http://www.cnblogs.com/JsonShare/p/7380772.html  访问者模式扩展篇 - 分派的概念: http://www.cnblogs.com/JsonShare/p/7381705.html 1.分派的概念 变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type):而变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type).比如:

apache工作模式worker以及prefork的切换

apache比较常用的工作模式有worker以及prefork两种方式. 如果在编译时候不指定,系统默认的是prefork模式:如果需要换成worker模式,需要在编译的时候带上编译参数:--with-mpm=worker 查看apache的用的什么方式:apachectl -l 有同学跟我说,编译指定了worker,但用apachectl -l查看时候是下面的结果: 从图中可以看出apache是prefork方式, 其实这里同学们有个误区: 1.linux系统会默认带一个apache,像上图查

http服务(一)——apache工作模式

apache作为现今web服务器用的最广泛也是最稳定的开源服务器软件,其工作模式有许多中,目前主要有两种模式:prefork模式和worker模式 一.两种模式 prefork模式: prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程.每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大.    这个多路处理模块(MPM)实现了一个非线程型的.预派生的web服务器,它的工作方式类似于Apache 1.3.它适合于没有线程安全库,需要避免线程