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

[经验分享] puppet负载均衡之nginx+passenger-TNT、运维之路

[复制链接]

尚未签到

发表于 2018-8-3 07:36:20 | 显示全部楼层 |阅读模式
  由于3.x系列已不再支持mongrel,所以就采用nginx+passenger来做负载均衡;之前有发过nginx+mongrel,puppet version是2.7系列的,所以还是可以用的;
  环境说明:
  操作系统:centos 5.8 64位
  puppet版本:3.1系列
  


  • 1,升级ruby至1.8.7,安装rubygems
  • # rpm -Uvh http://rbel.frameos.org/rbel5
  • # yum install -y ruby rubygems ruby-devel.x86_64

  • 2,安装puppet server
  • # rpm -ivh http://yum.puppetlabs.com/el/5/products/x86_64/puppetlabs-release-5-1.noarch.rpm
  • # yum install -y puppet puppet-server

  • 3,安装nginx相关的依赖包
  • # yum install -y gcc make pcre-devel zlib-devel openssl-devel pam-devel curl-devel rpm-build

  • 4安装rake, rack and passenger ruby gems
  • # gem install rake rack passenger --no-rdoc --no-ri

  • 5,安装nginx
  • 编译参数如下,必须包含passenger模块
  • # tar -xjf pcre-8.32.tar.bz2 -C /usr/local/src   ----pcre自己下载
  • # tar -xzf nginx-1.2.1.tar.gz -C /usr/local/src  ----解压nginx
  • cd /usr/local/src/nginx-1.2.1
  •     ./configure --prefix=$NGINX_PATH --with-   http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.32 --add-module=`passenger-config --root`/ext/nginx
  • # make
  • # make install

  • 6,与passenger的结合
  • # mkdir -p /etc/puppet/rack/public
  • # cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/
  • # chown -R puppet:puppet /etc/puppet/rack/
  • # nginx.conf里面具体的内容如下


  • user www www;

  • worker_processes  1;

  • error_log  /usr/local/nginx/logs/error.log;
  • #error_log  logs/error.log  notice;
  • #error_log  logs/error.log  info;

  • pid        /usr/local/nginx/nginx.pid;

  • #Specifies the value for maximum file descriptors that can be opened by this process.
  • worker_rlimit_nofile 65535;

  • events {
  •     use epoll;
  •     worker_connections  65535;
  • }

  • http {
  •     server_tokens off;
  •     include       mime.types;
  •     default_type  application/octet-stream;

  •     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  •                       '$status $body_bytes_sent "$http_referer" '
  •                       '"$http_user_agent" "$http_x_forwarded_for"';

  •     #access_log  logs/access.log  main;

  •     charset utf-8;

  •     server_names_hash_bucket_size 128;
  •     client_header_buffer_size 32k;
  •     large_client_header_buffers 4 64k;
  •     client_max_body_size 8m;

  •     tcp_nopush     on;
  •     tcp_nodelay on;
  •     keepalive_timeout 60;
  •     fastcgi_intercept_errors on;
  •     fastcgi_connect_timeout 300;
  •     fastcgi_send_timeout 300;
  •     fastcgi_read_timeout 300;
  •     fastcgi_buffer_size 64k;
  •     fastcgi_buffers 4 64k;
  •     fastcgi_busy_buffers_size 128k;
  •     fastcgi_temp_file_write_size 128k;

  •     open_file_cache max=65535 inactive=10s;
  •     open_file_cache_valid 30s;
  •     open_file_cache_min_uses 1;

  •     gzip on;
  •     gzip_min_length  1k;
  •     gzip_buffers     4 16k;
  •     gzip_http_version 1.0;
  •     gzip_comp_level 2;
  •     gzip_types       text/plain application/x-javascript text/css application/xml;
  •     gzip_vary on;

  •     # Passenger needed for puppet
  •     passenger_root  /usr/lib/ruby/gems/1.8/gems/passenger-3.0.19;
  •     passenger_ruby  /usr/bin/ruby;
  •     passenger_max_pool_size 15;
  •     index index.html index.htm index.php;

  •     server {
  •         listen       80;
  •         server_name  localhost;

  •         #access_log  logs/host.access.log  main;

  •         location / {
  •             root   html;
  •             index  index.php index.html index.htm ;
  •         }

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

  •         location ~ \.php$ {
  •             root           html;
  •             #fastcgi_pass   127.0.0.1:9000;
  •             fastcgi_pass unix:/dev/shm/php.socket;
  •             fastcgi_index  index.php;
  •             fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
  •             include        fastcgi_params;
  •         }

  •     }

  •     server {
  •       listen                     8140 ssl;
  •       server_name                client.domain.com;

  •       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;

  •       access_log                 /usr/local/nginx/logs/puppet_access.log;
  •       error_log                  /usr/local/nginx/logs/puppet_error.log;

  •       root                       /etc/puppet/rack/public;

  •       ssl_certificate            /var/lib/puppet/ssl/certs/client.domain.com.pem;
  •       ssl_certificate_key        /var/lib/puppet/ssl/private_keys/client.domain.com.pem;
  •       ssl_crl                    /var/lib/puppet/ssl/ca/ca_crl.pem;
  •       ssl_client_certificate     /var/lib/puppet/ssl/ca/ca_crt.pem;
  •       ssl_ciphers                SSLv2:-LOW:-EXPORT:RC4+RSA;
  •       ssl_prefer_server_ciphers  on;
  •       ssl_verify_client          optional;
  •       ssl_verify_depth           1;
  •       ssl_session_cache          shared:SSL:128m;
  •       ssl_session_timeout        5m;
  •     }


  • }
  • 注意下,我这里puppet server的hostname 是client.domain.com,至于具体的key路径之类的 大家自己按各自的环境自己改
  • 然后调整下puppet.conf
  • [main]

  • [agent]
  •   server = client.domain.com

  • [master]
  •   certname = client.domain.com

  • 7,验证
  • 启动nginx
  • # lsof -i:8140
  • COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  • nginx   20855 root    9u  IPv4 421091      0t0  TCP *:8140 (LISTEN)
  • nginx   20856  www    9u  IPv4 421091      0t0  TCP *:8140 (LISTEN)
  • 可以发现8140端口已经起来
  • # puppet agent --test --server client.domain.com
  • Info: Retrieving plugin
  • Info: Caching catalog for client.domain.com
  • Info: Applying configuration version '1366960369'
  • Notice: Finished catalog run in 0.16 seconds
  • 发现已能正常使用
  • # tail /usr/local/nginx/log/puppet_access.log  查看nginx日志
  • 192.168.200.220 - - [26/Apr/2013:21:12:15 +0800] "GET /production/node/client.domain.com? HTTP/1.1" 200 3502 "-" "-"
  • 192.168.200.220 - - [26/Apr/2013:21:12:16 +0800] "GET /production/file_metadatas/plugins?&links=manage&recurse=true&checksum_type=md5&ignore=---+%0A++-+%22.svn%22%0A++-+CVS%0A++-+%22.git%22 HTTP/1.1" 200 283 "-" "-"
  • 192.168.200.220 - - [26/Apr/2013:21:12:17 +0800] "POST /production/catalog/client.domain.com HTTP/1.1" 200 1033 "-" "-"
  • 192.168.200.220 - - [26/Apr/2013:21:12:17 +0800] "PUT /production/report/client.domain.com HTTP/1.1" 200 14 "-" "-"
  • 已经有记录,

  • 8.调整
  • 如果puppetmaster服务已经做成开机启动,记得关掉
  • # chkconfig puppetmaster off
  • # chkconfig nginx on
  

  至此Puppet 负载均衡到此结束,nginx分别与passenger,mongrel的结合都做完了

运维网声明 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-545596-1-1.html 上篇帖子: 技术选择 – 我们为什么不选择Puppet? 下篇帖子: 自动化运维之 - puppet 简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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