zoukankan      html  css  js  c++  java
  • Puppet nginx+passenger模式配置

    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的请求

  • 相关阅读:
    maven
    Spring
    多线程
    IO流
    《第一行代码》阅读笔记(二十七)——多媒体播放Demo
    《第一行代码》阅读笔记(二十六)——内容提供器
    《第一行代码》阅读笔记(二十五)——PermissionsDispatcher(补充)
    《第一行代码》阅读笔记(二十四)——Android动态请求权限
    《第一行代码》阅读笔记(二十三)——数据库设计(补充)
    《第一行代码》阅读笔记(二十二)——LitePal操作数据库
  • 原文地址:https://www.cnblogs.com/pycode/p/6525167.html
Copyright © 2011-2022 走看看