使用Apache+Passenger部署高性能PuppetMaster

运维 系统运维 前端
最近在服务器系统上安装了最新的Puppet客户端,发现跟老版本的PuppetMaster做同步时出现了一些问题,警告类的信息很好解决,注释掉配置文件templatedir该行即可,后来又对PuppetMaster做了次升级,直接升为最新的3.6.1……

前言:

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

 

环境:

Ubuntu 12.04 64-LTS

PuppetMaster: 3.6.1(升级前版本为3.4.3)

PuppetAgent: 3.6.1

1、安装Apache2

  1. $ sudo apt-get install apache2 ruby1.8-dev rubygems   
  2. $ sudo a2enmod ssl   
  3. $ sudo a2enmod headers 

 2、安装Rack/Passenger

  1. $ sudo gem install rack passenger   
  2. $ sudo passenger-install-apache2-module   
  3. # 按提示解决软件依赖关系后,再次运行命令安装passenger模块   
  4. Please edit your Apache configuration file, and add these lines:   
  5.     
  6. LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-4.0.44/buildout/apache2/mod_passenger.so   
  7. <IfModule mod_passenger.c>   
  8.   PassengerRoot /var/lib/gems/1.8/gems/passenger-4.0.44   
  9.   PassengerDefaultRuby /usr/bin/ruby1.8   
  10. </IfModule>   
  11.     
  12. $ sudo mkdir /etc/puppet/rack  
  13. $ sudo mkdir /etc/puppet/rack/{public,tmp}   
  14. $ sudo scp /usr/share/puppet/ext/rack/config.ru /etc/puppet/rack/  
  15. $ sudo chown -R puppet:root /etc/puppet/rack 

3、配置Puppet虚拟主机文件

  1. $ sudo cp /usr/share/puppet/ext/rack/example-passenger-vhost.conf /etc/apache2/sites-available/puppet.conf   
  2. $ sudo vim /etc/apache2/sites-available/puppet.conf   
  3. # 按之前的提示添加如下内容   
  4. LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-4.0.44/buildout/apache2/mod_passenger.so   
  5. <IfModule mod_passenger.c>   
  6.   PassengerRoot /var/lib/gems/1.8/gems/passenger-4.0.44   
  7.   PassengerDefaultRuby /usr/bin/ruby1.8   
  8.   PassengerHighPerformance on   
  9.   PassengerMaxPoolSize 12   
  10.   PassengerPoolIdleTime 1500   
  11. # PassengerMaxRequests 1000   
  12.   PassengerStatThrottleRate 120   
  13. # RackAutoDetect Off                 # 注释该行   
  14. # RailsAutoDetect Off                # 注释该行   
  15. </IfModule>   
  16.     
  17. Listen 8140   
  18.     
  19. <VirtualHost *:8140>   
  20.         SSLEngine on   
  21.         SSLProtocol             ALL -SSLv2   
  22.         SSLCipherSuite          ALL:!aNULL:!eNULL:!DES:!3DES:!IDEA:!SEED:!DSS:!PSK:!RC4:!MD5:+HIGH:+MEDIUM:!LOW:!SSLv2:!EXP   
  23.         SSLHonorCipherOrder     on   
  24.         # 修改为SSL实际路径及文件名   
  25.         SSLCertificateFile      /var/lib/puppet/ssl/certs/test.cominggo.com.pem   
  26.         SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/test.cominggo.com.pem   
  27.         SSLCertificateChainFile /var/lib/puppet/ssl/certs/ca.pem   
  28.         SSLCACertificateFile    /var/lib/puppet/ssl/certs/ca.pem   
  29.         # If Apache complains about invalid signatures on the CRL, you can try disabling   
  30.         # CRL checking by commenting the next line, but this is not recommended.   
  31.         SSLCARevocationFile     /var/lib/puppet/ssl/crl.pem   
  32.         SSLVerifyClient optional   
  33.         SSLVerifyDepth  1   
  34.         # The `ExportCertData` option is needed for agent certificate expiration warnings   
  35.         SSLOptions +StdEnvVars +ExportCertData   
  36.     
  37.         # This header needs to be set if using a loadbalancer or proxy   
  38.         RequestHeader unset X-Forwarded-For   
  39.     
  40.         RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e   
  41.         RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e   
  42.         RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e   
  43.     
  44.         DocumentRoot /etc/puppet/rack/public/  
  45.         RackBaseURI /   
  46.         <Directory /etc/puppet/rack/>   
  47.                 Options None   
  48.                 AllowOverride None   
  49.                 Order allow,deny   
  50.                 allow from all   
  51.         </Directory>   
  52.         ## Logging        # 设置Puppet访问日志(可选,默认日志为other_vhosts_access.log)   
  53.         ErrorLog "/var/log/apache2/puppet_error.log" 
  54.         ServerSignature Off   
  55.         CustomLog "/var/log/apache2/puppet_access.log" combined   
  56. </VirtualHost>   
  57.     
  58. $ cd /etc/apache2/sites-available/  
  59. $ sudo a2ensite puppet.conf 

4、移除WEBrick服务(puppetmaster),并重启Apache服务

  1. $ sudo update-rc.d -f puppetmaster remove   
  2. $ sudo /etc/init.d/apache2 restart   
  3. $ sudo ss -talnp | grep apache2   
  4. LISTEN     0      128      *:8140         *:*      users:(("apache2",30037,5),("apache2",29472,5),("apache2",29467,5))   
  5. LISTEN     0      128      *:80           *:*      users:(("apache2",30037,3),("apache2",29472,3),("apache2",29467,3))   
  6. LISTEN     0      128      *:443          *:*      users:(("apache2",30037,4),("apache2",29472,4),("apache2",29467,4))  

5、验证是否部署成功

1)访问HTTPS服务

  1. # 访问页面:https://test.cominggo.com:8140/   
  2. The environment must be purely alphanumeric, not '' 

2)PuppetAgent节点运行测试

  1. # PuppetAgent:   
  2. $ sudo puppet agent -t   
  3.     
  4. # PuppetMaster:查看apache访问日志是否有200状态请求   
  5. $ sudo tail /var/log/apache2/puppet_access.log   
  6. 172.16.2.22 - - [20/Jun/2014:19:11:53 +0800] "GET /production/file_metadata/modules/zabbix/check.sh?source_permissions=use&links=manage HTTP/1.1" 200 5987 "-" "-"  
  7. 172.16.2.22 - - [20/Jun/2014:19:11:53 +0800] "GET /production/file_metadata/modules/zabbix/zabbix-release_2.2-1+precise_all.deb?source_permissions=use&links=manage HTTP/1.1" 200 6003 "-" "-"  
  8. 172.16.2.22 - - [20/Jun/2014:19:11:53 +0800] "GET /production/file_metadata/modules/zabbix/game.conf?source_permissions=use&links=manage HTTP/1.1" 200 5971 "-" "-"  
  9. 172.16.2.22 - - [20/Jun/2014:19:11:53 +0800] "GET /production/file_metadatas/modules/game/release/data?checksum_type=md5&recurse=true&links=manage HTTP/1.1" 200 44519 "-" "-"  
  10. 172.16.2.22 - - [20/Jun/2014:19:11:54 +0800] "GET /production/file_metadata/modules/zabbix/netif.py?source_permissions=use&links=manage HTTP/1.1" 200 5987 "-" "-"  
  11. 172.16.2.22 - - [20/Jun/2014:19:11:56 +0800] "PUT /production/report/t1.cominggo.com HTTP/1.1" 200 5683 "-" "-"  

参考:

官方文档:http://docs.puppetlabs.com/guides/passenger.html

KissPuppet博客:http://kisspuppet.com/2013/11/08/apache-passenger/

博客地址:http://phenixikki.blog.51cto.com/7572938/1432633

责任编辑:林师授 来源: 51CTO
相关推荐

2017-05-25 10:50:16

Python高性能服务

2024-11-29 16:10:31

2021-05-06 21:26:00

BcacheCeph存储

2009-06-08 10:31:00

万兆以太网10GHPC

2011-04-02 13:37:05

SQL Server 索引视图

2023-12-26 00:58:53

Web应用Go语言

2019-03-01 11:03:22

Lustre高性能计算

2023-12-01 07:06:14

Go命令行性能

2011-03-11 09:51:47

Java NIO

2023-12-14 08:01:08

事件管理器Go

2016-11-28 09:19:27

2023-01-11 15:17:01

gRPC.NET 7

2022-06-09 08:36:56

高性能Disruptor模式

2017-11-28 17:14:16

华为云

2017-07-07 16:36:28

BIOIO模型 NIO

2020-07-16 08:06:53

网关高性能

2022-03-21 14:13:22

Go语言编程

2017-08-07 21:10:55

MySQLUbuntusysbench

2020-01-07 16:16:57

Kafka开源消息系统

2023-09-22 11:48:37

点赞
收藏

51CTO技术栈公众号