Puppet nginx+passenger模式配置

一.简述:Puppet 运行在单台服务器上默认启动的是一个puppetmaster进程,当遇到client高并发的请求时,基于ruby的WEBRick HTTP服务便无法高效的处理请求,甚至有的client直接会报400错误。所以在单台服务器上,可以使用nginx+passenger 来做puppetßßßß多负载配置。

二.原理:使用nginx代替ruby的webrick ,并且处理对client的ssl认证进行处理和转发。后台passenger 根据client 请求量的大小,动态的启动puppetmaster进程,从而实现puppet多进程负载

三.实现步骤:

1.使用gem安装rake rack

gem install rake rack

2.安装passenger

由于线上使用的ruby和puppet版本比较新,所以如果使用默认安装的话会安装passenger-5.0版本,而最新版passenger的语法较之前有很大更新,所以,建议使用4.0.19稳定版

gem install passenger -v 4.0.19

3.安装nginx

安装方式有两种,可以自行下载nginx的源码包编译安装,编译的时候需要添加passenger的模块,也可以使用passenger 自动安装,自动选择匹配的版本。下面使用passenger自动安装

执passenger-install-nginx-module

下面的选项1是自动安装nginx,2是自定义安装(可以自定义编译的模块等等),选择1即可

选择完之后,会自动下载nginx源码包,到下面这一步,选择安装nginx的安装路径即可

nginx安装完成

4.配置nginx的主配置文件nginx.conf

添加如下参数;

passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19; #指定passenger的root目录,可以使用passenger-config –root得到

passenger_ruby /usr/bin/ruby;  #指定ruby命令的执行路径

passenger_max_pool_size 15;    #定义puppetmaster动态调用的最大进程数量

为了更好的处理请求,可以视情况修改下面参数

proxy_buffer_size 4000k;

proxy_buffering on;

proxy_buffers 32 1280k;

proxy_busy_buffers_size 17680k;

client_max_body_size 10m;

client_body_buffer_size 4096k;

5.增加vhosts文件puppet.node.kddi.op.xywy.com.conf,内容如下:

server {

listen           8140 ssl; #由于puppet通信使用的是ssl,所以此处必须定义ssl

server_name      puppet.node.kddi.op.xywy.com;  #puppet服务器的主机名

root         /etc/puppet/rack/public;  #nginx和passenger的协作目录

access_log       /data/logs/nginx/proxy.puppet-access.log;

error_log        /data/logs/nginx/proxy.puppet-error.log;

passenger_enabled on;    #启用passenger模式

passenger_set_cgi_param    HTTP_X_CLIENT_DN $ssl_client_s_dn; #标记client 请求时提供的dn和 VERIFY,用于传递到puppet

passenger_set_cgi_param    HTTP_X_CLIENT_VERIFY $ssl_client_verify;

#ssl 证书的相关配置

ssl_session_timeout  5m;

ssl_certificate /var/lib/puppet/ssl/certs/puppet.node.kddi.op.xywy.com.pem;

ssl_certificate_key /var/lib/puppet/ssl/private_keys/puppet.node.kddi.op.xywy.com.pem;

ssl_client_certificate  /var/lib/puppet/ssl/certs/ca.pem;

ssl_crl      /var/lib/puppet/ssl/ca/ca_crl.pem;

ssl_ciphers      SSLv2:-LOW:-EXPORT:RC4+RSA;

ssl_prefer_server_ciphers on;

ssl_verify_depth     1;

ssl_session_cache    shared:SSL:128m;

ssl_verify_client optional;

}

6.创建rack和public目录,并修改puppet的配置文件puppet.conf

mkdir -pv  /etc/puppet/rack/public

cp /usr/share/puppet/ext/rack/config.ru  /etc/puppet/rack/

chown -R puppet.puppet /etc/puppet/rack

在puppet.conf的[master]下增加下面参数

ssl_client_verify_header = HTTP_X_CLIENT_VERIFY

ssl_client_header = HTTP_X_CLIENT_DN

7.关闭puppetmaster进程,并启动nginx,开始测试

/etc/init.d/puppetmaster stop

/usr/local/xywy/nginx/sbin/nginx

可以使用passenger-status查看现在的状态

同时,nginx也记录了client的请求

Puppet nginx+passenger模式配置的更多相关文章

  1. Nginx pathinfo模式配置

    正常配置 location ~ \.php$ { fastcgi_pass ; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $docu ...

  2. Nginx安装及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  3. Nginx安装及配置详解包括windows环境

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  4. Nginx安装及配置详解【转】

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  5. [转帖]Nginx安装及配置详解 From https://www.cnblogs.com/zhouxinfei/p/7862285.html

    Nginx安装及配置详解   nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP ...

  6. nginx简介和配置gd

    转自:https://www.cnblogs.com/zhouxinfei/p/7862285.html nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也 ...

  7. puppet负载均衡之nginx+passenger

    由于3.x系列已不再支持mongrel,所以就采用nginx+passenger来做负载均衡:之前有发过nginx+mongrel,puppet version是2.7系列的,所以还是可以用的: 环境 ...

  8. nginx中error_page没有生效(nginx+passenger+rails)

    应用部署方式为 nginx + passenger + rails 当我想要用nginx来默认处理400以上状态时,发现在rails返回respose之后,nginx不会再次执行error_page( ...

  9. LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

随机推荐

  1. Maven POM

    POM代表项目对象模型.它是 Maven 中工作的基本单位,这是一个 XML 文件.它始终保存在该项目基本目录中的 pom.xml 文件.POM 包含的项目是使用 Maven 来构建的,它用来包含各种 ...

  2. php中urlencode()和urldecode()URL编码函数浅析[转]

    URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu.Google等搜索引擎中输入中文查询时候,生成经过Encode过的网页URL.URLEncode的方式一般 ...

  3. 各大引擎矩阵的矩阵存储方式 ----行矩阵 or 列矩阵

    OpenGL  里面的矩阵 float  m[16]; OpenGL中的矩阵是这样的 m[0] m[4] m[8] m[12] m[1] m[5] m[9] m[13] m[2] m[6] m[10] ...

  4. 【Intel AF 2.1 学习笔记三】

    AF中自带一些Css矢量图标,使用时需要设置class,例如下面代码显示一个左箭头图标: <a class="icon left"></a> AF中可用的图 ...

  5. php 获取某文件内容

    获取某文件下 的文件夹和文件 public function dirRead($dir=''){ //$dir = './upload/images'; $result = ''; if (is_di ...

  6. JUnit 3一个例子就懂

    JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture f ...

  7. 如何使用 URLOpenStream 函数

    URLOpenStream 和 URLDownloadToFile 类似, 都是下载文件的 COM 函数; 前者是下载到 IStream 流, 后者是直接下载到指定路径; 不如后者使用方便. 它们都声 ...

  8. Android开发学习笔记-SharedPreferences的用法

    SharedPreferences介绍:   做软件开发应该都知道,很多软件会有配置文件,里面存放这程序运行当中的各个属性值,由于其配置信息并不多,如果采用数据库来存放并不划算,因为数据库连接跟操作等 ...

  9. PHP 数组current和next用法

    1.current   当前数组 <?php $transport = array('foot', 'bike', 'car', 'plane'); $mode = current($trans ...

  10. JAVA内存泄露分析及解决

    一,问题产生     项目采用Tomcat6.0为服务器,数据库为mysql5.1,数据库持久层为hibernate3.0,以springMVC3.0为框架,项目开发完成后,上线前夕进行稳定性拷机,测 ...