<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 使用 Passenger 擴展 Puppet 的部署規模 如果你的 Puppet 基礎設施開始出現依依呀呀的裂縫,罪魁禍首很可能出現在 Puppetmaster 的 Web 服務器上。 Puppet 攜帶了一個名為 **Webrick** 的簡單 Web 服務器來處理客戶端與 Puppetmaster 的連接。Webrick 確實不適合在生產環境下運行 Puppet; 超過幾個客戶請求處理之后就會使 Puppetmaster 一蹶不振,嚴重影響其性能。 有時會建議使用 **Mongrel** 替換 Webrick,因為 **Mongrel** 比 Webrick 有少許的性能提升,但不太明顯。為了擴展 Puppetmaster 能服務于數百臺服務器, 首選的方法是切換到高性能的 Web 服務器,如使用包含 **Passenger**(mod_rails) 擴展模塊的 Apache。 Puppet 在 Passenger 下運行需要些必要的配置,你需要安裝 Apache 和 Passenger,并添加一個合適的虛擬主機。下面的示例是基于 Ubuntu 10.4 的。 你可以在 Puppet Labs 的站點 [http://projects.puppetlabs.com/projects/1/wiki/Using_Passenger](http://projects.puppetlabs.com/projects/1/wiki/Using_Passenger) 上找到 Red Hat Linux、CentOS以及其它發行版本的對應操作指示。 #### 準備工作 為了方便配置,需要有你要運行的 Puppet 的源代碼包(**tarball**), 因為它提供了用于配置 Passenger 的一些模板文件和配置片段。 例如,假如你要運行 Puppet 2.7.1,就要下載這個文件: [http://puppetlabs.com/downloads/puppet/puppet-2.7.1.tar.gz](http://puppetlabs.com/downloads/puppet/puppet-2.7.1.tar.gz) 。 若你使用不同的版本,請到 [http://puppetlabs.com](http://puppetlabs.com) 下載合適的版本。 下載之后使用如下命令解開源碼包: ``` tar xzf puppet-2.7.1.tar.gz ``` #### 操作步驟 1. 安裝 Apache 和 Passenger, 及其所依賴的軟件包: ``` # apt-get install apache2 libapache2-mod-passenger rails librack-ruby libmysql-ruby # gem install rack ``` 2. 為 Passenger 查找 Puppet 的配置創建必要的目錄: ``` # mkdir -p /etc/puppet/rack # mkdir -p /etc/puppet/rack/public ``` 這兩個目錄的屬主為 root 且權限為 0755。 ``` # chown -R root:root /etc/puppet/rack # chmod -R 0755 /etc/puppet/rack ``` 3. 創建文件 config.ru ,此文件告知 Passenger 如何啟動 Puppet 應用程序。 你可以使用 Puppet 發布中提供的示例文件: ``` # cp /tmp/puppet-2.7.1/ext/rack/files/config.ru /etc/puppet/rack/ # chown puppet /etc/puppet/rack/config.ru ``` 對于 Puppet 2.7.1, 應該包含如下內容: ``` # a config.ru, for use with every rack-compatible webserver. # SSL needs to be handled outside this, though. # if puppet is not in your RUBYLIB: # $:.unshift('/opt/puppet/lib') $0 = "master" # if you want debugging: # ARGV &lt;&lt; "--debug" ARGV &lt;&lt; "--rack" require 'puppet/application/master' # we're usually running inside a Rack::Builder.new {} block, # therefore we need to call run *here*. run Puppet::Application[:master].run ``` 4. 你現在需要在 Apache 上創建一個虛擬主機,使其監聽正確的端口并向 Puppet 應用程序發送請求。同樣地,你可以使用 Puppet 發布中提供的示例文件: ``` # cp /tmp/puppet-2.7.1/ext/rack/files/apache2.conf \ /etc/apache2/sites-available/puppetmasterd # a2ensite puppetmasterd ``` 文件的內容如下所示: ``` # you probably want to tune these settings PassengerHighPerformance on PassengerMaxPoolSize 12 PassengerPoolIdleTime 1500 # PassengerMaxRequests 1000 PassengerStatThrottleRate 120 RackAutoDetect Off RailsAutoDetect Off Listen 8140 &lt;VirtualHost *:8140&gt; SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP SSLCertificateFile /etc/puppet/ssl/certs/cookbook. bitfieldconsulting.com.pem SSLCertificateKeyFile /etc/puppet/ssl/private_keys/cookbook. bitfieldconsulting.com.pem SSLCertificateChainFile /etc/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /etc/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 /etc/puppet/ssl/ca/ca_crl.pem SSLVerifyClient optional SSLVerifyDepth 1 SSLOptions +StdEnvVars DocumentRoot /etc/puppet/rack/public/ RackBaseURI / &lt;Directory /etc/puppet/rack/&gt; Options None AllowOverride None Order allow,deny allow from all &lt;/Directory&gt; &lt;/VirtualHost&gt; ``` 5. 編輯這個文件,將 SSLCertificateFile 和 SSLCertificateKeyFile 的值修改為你自己的證書(最簡單地生成證書的方法是你已經運行 Puppet 至少一次)。 6. 你還要在 Apache 中啟用 Passenger 和 mod_ssl 模塊: ``` # a2enmod passenger ssl ``` 7. 添加如下的行到你的 /etc/puppet/puppet.conf 文件: ``` ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY ``` 8. 停止正在運行的 Puppetmaster。 9. 啟動 Apache: ``` # /etc/init.d/apache2 restart ``` 10. 如果一切工作正常,你可以像往常一樣運行 Puppet: ``` # puppet agent --test info: Caching catalog for cookbook.bitfieldconsulting.com info: Applying configuration version '1294145142' notice: Finished catalog run in 0.25 seconds ``` #### 工作原理 Puppet 內置的 web 服務器處理速度相當慢,每次只能處理一個請求,使用 Apache 替換它之后,現在你就可以使用這個高性能多線程的 web 服務器了。 在這種情況下,Puppet 是一個使用 Rack 框架(Rack framework) 的嵌入式應用程序, 這大大提高了運行效率。你應該會發現,使用 "Apache + Passenger" 的配置能處理更多的客戶端和更頻繁的 Puppet 請求,并且改善了服務器內存的占用, 使用的內存比標準的 Puppetmaster 守護進程占用的內存更少。 #### 更多用法 下面是一個 Puppet 配置清單的示例,用于為你實現上面的處理步驟(基于 Ubuntu 系統): ``` class puppet::passenger { package { [ "apache2-mpm-worker", "libapache2-mod-passenger", "librack-ruby", "libmysql-ruby" ]: ensure => installed, } service { "apache2": enable => true, ensure => running, require => Package["apache2-mpm-worker"], } package { "rack": provider => gem, ensure => installed, } file { [ "/etc/puppet/rack", "/etc/puppet/rack/public" ]: ensure => directory, mode => "755", } file { "/etc/puppet/rack/config.ru": source => "puppet:///modules/puppet/config.ru", owner => "puppet", } file { "/etc/apache2/sites-available/puppetmasterd": source => "puppet:///modules/puppet/puppetmasterd.conf", } file { "/etc/apache2/sites-enabled/puppetmasterd": ensure => symlink, target => "/etc/apache2/sites-available/puppetmasterd", } exec { "/usr/sbin/a2enmod ssl": creates => "/etc/apache2/mods-enabled/ssl.load", } } ``` 一旦你以 Passenger 方式運行,就可以使用如下命令重新啟動 Puppetmaster 應用程序: ``` # service apache2 restart ``` 為了監視 Passenger 正在運行,可以檢查名為 ApplicationPoolServerExecutable 的進程。 你也可以用配置常規 web 應用的方法為 Passenger 實例配置負載均衡。 更多詳細信息,或者如果你遇到問題,可以參考 **Puppet-on-Passenger** 文檔: [http://projects.puppetlabs.com/projects/1/wiki/Using_Passenger](http://projects.puppetlabs.com/projects/1/wiki/Using_Passenger) 。 #### 參見本書 * 本章的 [創建去中心化的分布式 Puppet 架構](#ch01sec10) 一節
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看