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的请求
Puppet nginx+passenger模式配置的更多相关文章
- Nginx pathinfo模式配置
正常配置 location ~ \.php$ { fastcgi_pass ; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $docu ...
- Nginx安装及配置详解
nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...
- Nginx安装及配置详解包括windows环境
nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...
- Nginx安装及配置详解【转】
nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...
- [转帖]Nginx安装及配置详解 From https://www.cnblogs.com/zhouxinfei/p/7862285.html
Nginx安装及配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP ...
- nginx简介和配置gd
转自:https://www.cnblogs.com/zhouxinfei/p/7862285.html nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也 ...
- puppet负载均衡之nginx+passenger
由于3.x系列已不再支持mongrel,所以就采用nginx+passenger来做负载均衡:之前有发过nginx+mongrel,puppet version是2.7系列的,所以还是可以用的: 环境 ...
- nginx中error_page没有生效(nginx+passenger+rails)
应用部署方式为 nginx + passenger + rails 当我想要用nginx来默认处理400以上状态时,发现在rails返回respose之后,nginx不会再次执行error_page( ...
- LVS + Keepalived + Nginx安装及配置
1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...
随机推荐
- SpringMVC系列(十五)Spring MVC与Spring整合时实例被创建两次的解决方案以及Spring 的 IOC 容器和 SpringMVC 的 IOC 容器的关系
一.Spring MVC与Spring整合时实例被创建两次的解决方案 1.问题产生的原因 Spring MVC的配置文件和Spring的配置文件里面都使用了扫描注解<context:compon ...
- JAR 文件格式提供了许多优势和功能
JAR 文件格式提供了许多优势和功能,其中很多是传统的压缩格式如 ZIP 或者 RAR 所没有提供的.它们包括: 安全性 可以对 JAR 文件内容加上数字化签名.这样,能够识别签名的工具就可以有选择地 ...
- unity3d-----Collider 组件参考
Collider 组件参考 点击 属性检查器 下面的 添加组件 按钮,然后从 添加碰撞组件 中选择需要的 Collider 组件,即可添加 Collider组件到节点上. Collider 组件属性 ...
- 多媒体开发之ftp---一个很现实的需求把ftp转换成rtmp协议做点播
http://www.dy2018.com/i/96131.html# http://www.hdpfans.com/thread-15684-1-1.html ftp://xc:xc@dz.dl12 ...
- 使用openstackclient调用Keystone v3 API
本文内容属于个人原创,转载务必注明出处: http://www.cnblogs.com/Security-Darren/p/4138945.html 考虑到Keystone社区逐渐弃用第二版身份AP ...
- Erlang Trace机制
从FTP模块学习先进的诊断技术(Erlang Trace机制) http://blog.yufeng.info/archives/466
- YII2常用数据库操作
//1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll(&q ...
- XML 中可嵌入 cmd命令脚本
原文要参照代码 1. XML解析 Task逻辑块可相互组合,形成复杂的树状结构,其结构用XML表示,即写成XML文件的形式. 样例如下: <!-- 顺序执行块 --> <seq> ...
- DWZ主从表界面唯一性验证(自写js)(二)
上篇介绍了自写js判断的前三项,本篇博客介绍第四步,关于触发课程代码文本框的离开事件后,判断一整列的课程代码之间是否有重复的值. 此问题可以提取为判断一个数组里是否有重复值,重复值是什么. 第四步→判 ...
- Spring Boot项目使用Eclipse进行断点调试Debug
1.在命令行下定位到项目根目录,启动Spring Boot项目,命令如下: java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=80 ...