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

[经验分享] Puppet master nginx 扩展提升性能(puppet自动化系列4)

[复制链接]

尚未签到

发表于 2015-9-16 10:50:44 | 显示全部楼层 |阅读模式
  puppet使用SSL(https)协议来进行通讯,默认情况下,puppet server端使用基于Ruby的WEBRick HTTP服务器。由于WEBRick HTTP服务器在处理agent端的性能方面并不是很强劲,因此需要扩展puppet,搭建nginx或者其他强劲的web服务器来处理客户的https请求。
  需要解决的问题:


  • 扩展传输方式:提高性能并增加Master和agent之间的并发连接数量。
  • 扩展SSL:采用良好的SSL证书管理方法来加密Master和agent之间的通讯。
  Nginx+Passenger方式:
6.1 安装编译nginx所需要的开发包


[iyunv@puppetmaster1 ~]# groupadd -g 3001 nginx
[iyunv@puppetmaster1 ~]# useradd -u 3001 -g 3001 nginx
[iyunv@puppetmaster1 ~]# yum install ruby-devel gcc make pcre-devel zlib-devel openssl-devel pam-devel curl-devel rpm-build
6.2 安装passenger

  最好是更换gem源,gem sources -a http://ruby.taobao.org
  gem sources -u
  gem install  rake rack passenger --no-rdoc --no-ri
  
6.3 编译并安装nginx

  备注:主要是为了将模块passenger-config编译进来。
  wget http://nginx.org/download/nginx-1.7.9.tar.gz
  wget http://sourceforge.net/projects/pcre/files/pcre/8.36/pcre-8.36.tar.gz
  

[iyunv@puppetmaster1 ~]# cd /usr/local/src/nginx-1.7.9/
[iyunv@puppetmaster1 ~]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.36 --add-module=`passenger-config --root`/ext/nginx
[iyunv@puppetmaster1 ~]# make && make install
  
  与passenger结合
  备注:注意config.ru的属主和属组应该为puppet

[iyunv@puppetmaster1 ~]# mkdir  -p /etc/puppet/rack/public
[iyunv@puppetmaster1 ~]# cp /usr/share/puppet/ext/rack/config.ru  /etc/puppet/rack/public
[iyunv@puppetmaster1 ~]#  chown -R puppet. /etc/puppet/rack/
  7、配置nginx(建议此处配置成虚拟主机)
  备注:注意和puppet结合的证书名称及路径
  情况一:直接passenger配置在nginx主配置文件
[iyunv@puppetmaster1 conf]# cat nginx.conf

user  nginx nginx;

worker_processes  1;

pid        /var/run/nginx.pid;

events {

    worker_connections  1024;

}

http {

    passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-4.0.55;

    passenger_ruby /usr/bin/ruby;

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;


    server {

        listen 8140                ssl;

    server_name                puppetmaster;

    passenger_enabled          on;

    passenger_set_cgi_param    HTTP_X_CLIENT_DN $ssl_client_s_dn;

    passenger_set_cgi_param    HTTP_X_CLIENT_VERIFY $ssl_client_verify;

    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;

    access_log /var/log/nginx/puppet_access.log;

    error_log /var/log/nginx/puppet_error.log;

root /etc/puppet/rack/public;

#此处切记是public下,不是public的话passenger就不知道哪里去找 config文件,导致 *4 directory index of "/etc/puppet/rack/" is forbidden, client: 192.168.122.1, server: pm01.jq.com, request: "GET / HTTP/1.1", host: "pm01.jq.com:8140"

    ssl off;

    ssl_session_timeout 5m;

    ssl_certificate /var/lib/puppet/ssl/certs/puppetmaster1.jq.com.pem;

    ssl_certificate_key /var/lib/puppet/ssl/private_keys/puppetmaster1.jq.com.pem;

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

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

    ssl_verify_client optional;

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

    ssl_prefer_server_ciphers on;

    ssl_verify_depth 1;

    ssl_session_cache shared:SSL:128m;

    # File sections

    location /production/file_content/files/ {

      types { }

      default_type application/x-raw;

      alias /etc/puppet/files/;

  }

}

  include vhosts/*.conf;

}



情况二、passenger配置成虚拟机主机,配置如下:
[iyunv@pm01 conf]# cat nginx.conf
user  nginx nginx;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}


http {
    passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-4.0.57/;
    passenger_ruby /usr/local/bin/ruby;
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       8088;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


    }

    include vhosts/*.conf;
}
虚拟主机配置
[iyunv@pm01 conf]# cat vhosts/passenger.conf
    server {
        listen 8140                ssl;
    server_name                pm01;
    passenger_enabled          on;
    passenger_set_cgi_param    HTTP_X_CLIENT_DN $ssl_client_s_dn;
    passenger_set_cgi_param    HTTP_X_CLIENT_VERIFY $ssl_client_verify;
    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;
    access_log /var/log/nginx/puppet_access.log;
    error_log /var/log/nginx/puppet_error.log;
    root /etc/puppet/rack/public;
    ssl off;
    ssl_session_timeout 5m;
    ssl_certificate /var/lib/puppet/ssl/certs/pm01.jq.com.pem;
    ssl_certificate_key /var/lib/puppet/ssl/private_keys/pm01.jq.com.pem;
    ssl_client_certificate /var/lib/puppet/ssl/certs/ca.pem;
    ssl_crl /var/lib/puppet/ssl/ca/ca_crl.pem;
    ssl_verify_client optional;
    ssl_ciphers SSLv2:-LOW:-EXPORT:RC4+RSA;
    ssl_prefer_server_ciphers on;
    ssl_verify_depth 1;
    ssl_session_cache shared:SSL:128m;
    # File sections
    location /production/file_content/files/ {
      types { }
      default_type application/x-raw;
      alias /etc/puppet/files/;
  }
}




  配置puppet.conf

[iyunv@puppetmaster1 ~]# vim /etc/puppet/puppet.conf
[master]
    certname = puppetmaster
    ca       = false
    ssl_client_verify_header = HTTP_X_CLIENT_VERIFY
    ssl_client_header = HTTP_X_CLIENT_DN
  8、启动nginx

[iyunv@puppetmaster1 gem]# mkdir /var/log/nginx/
[iyunv@puppetmaster1 nginx-1.4.2]# /etc/init.d/puppetmaster stop
[iyunv@puppetmaster1 nginx-1.4.2]# chkconfig puppetmaster off
[iyunv@puppetmaster1 nginx-1.4.2]# /etc/init.d/nginx start
[iyunv@puppetmaster1 nginx-1.4.2]# chkconfig nginx on
  9、测试
  在多个节点发起puppet agent -t命令动作,查看nginx日志看nginx+passenger是否代理成功。

[iyunv@ag1 ~]# puppet  agent -t
[iyunv@puppetmaster1 ~]# tailf  /var/log/nginx/puppet_access.log

运维网声明 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.yunweiku.com/thread-114372-1-1.html 上篇帖子: Puppet 下篇帖子: 扩展Puppet – 建立Puppet CA集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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