设为首页 收藏本站
查看: 871|回复: 0

[经验分享] Puppet nginx+passenger模式配置

[复制链接]

尚未签到

发表于 2017-12-23 15:45:48 | 显示全部楼层 |阅读模式
  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的请求

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-427212-1-1.html 上篇帖子: Nginx实现404页面的几种方法【转】 下篇帖子: Nginx+Keepalive实现高可用负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表