puppet负载均衡之nginx+passenger
由于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的结合都做完了
本文出自 “TNT、运维之路” 博客,请务必保留此出处http://tntdba.blog.51cto.com/1199791/1187739
puppet负载均衡之nginx+passenger的更多相关文章
- 动态负载均衡(Nginx+Consul+UpSync)
Http动态负载均衡 什么是动态负载均衡 传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件, 因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upst ...
- 反向代理负载均衡之nginx
一.集群 1.1 什么是集群 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性 ...
- 终于等到你---订餐系统之负载均衡(nginx+memcached+ftp上传图片+iis)
又见毕业 对面工商大学的毕业生叕在拍毕业照了,一个个脸上都挂满了笑容,也许是满意自己四年的修行,也许是期待步入繁华的社会... 恰逢其时的连绵细雨与满天柳絮,似乎也是在映衬他们心中那些离别的忧伤,与对 ...
- nginx 负载均衡-- 常用nginx配置
中文官方网站http://wiki.nginx.org/Chshttp://www.howtocn.org/ --------------------------------------------- ...
- 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)
课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...
- [Open Source] 负载均衡之Nginx
目录 简介 常用命令 功能 代理 反向代理 集群 HTTP集群 TCP集群 重定向 静态文件 HTTPS配置 常见问题 简介 Nginx ("engine x") 是一款轻量级,高 ...
- 负载均衡之 nginx
什么是负载均衡负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据[均匀]分摊到多个操作单元上执行,负载均衡的关键在于[均匀].在使用nginx负载均 ...
- 负载均衡之nginx
什么是负载均衡负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据[均匀]分摊到多个操作单元上执行,负载均衡的关键在于[均匀].在使用nginx负载均 ...
- Nginx负载均衡——扩展功能(NGINX Plus)
本文主要是介绍了NGINX Plus的相关功能,横跨了NGINX Plus R5/R6/R7/R9等各个不同版本的更新. 什么是NGINX Plus? 顾名思义,就是Nginx的加强版或者扩展版.我们 ...
随机推荐
- pramfs安装
1. 拷贝 linux-3.11 pramfs-1.5.0-3.11 pramfs-Tools 到电脑中(我是新建目录linux中) 2.解压 3.cd pramfs-1.5.0-3.11/ 4.将p ...
- 学习笔记:CentOS7学习之十三(1):硬盘介绍
1. SAS-SATA-SSD-SCSI-IDE硬盘讲解 1.1 常见硬盘类型: SAS硬盘:SAS(Serial Attached SCSI),串行连接SCSI接口,串行连接小型计算机系统接口.SA ...
- [转帖]calico网络原理及与flannel对比
calico网络原理及与flannel对比 https://blog.csdn.net/ganpuzhong42/article/details/77853131 2017年09月05日 16:34: ...
- Redis(1.8)Redis与mysql的数据库同步(缓存穿透与缓存雪崩)
[1]缓存穿透与缓存雪崩 [1.1]缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的 ...
- shell中防止意外发生的两个实用的设置
set -o nounset set -o errexit set -o nounset 在默认情况下,遇到不存在的变量,会忽略并继续执行,而这往往不符合预期,加入该选项,可以避免恶果扩大,终止脚本的 ...
- 石子合并(直线版+环形版)&(朴素写法+四边形优化+GarsiaWachs算法)
石子合并-直线版 (点击此处查看题目) 朴素写法 最简单常见的写法就是通过枚举分割点,求出每个区间合并的最小花费,从而得到整个区间的最小花费,时间复杂度为O(n^3),核心代码如下: ; i < ...
- 界面(UI)测试基础
界面测试,在web程序雏形后就持续测试到项目交付. 项目中的界面测试 此刻需要感慨下“产品经理”的重要性:没有产品把关整个项目,做出来的东西只能叫做“程序”而非“产品” 有产品的工作流,测试在界面测试 ...
- Win32汇编过程与宏调用
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...
- 版本管理工具svn(转)
这种操作类的文章就不自己再写了,感觉浪费时间. 找了一个写的不错的文章转载. 文中流程有些变动,但是问题不大,可能是版本原因. SVN服务器的本地搭建和使用 http://www.2cto.com/o ...
- Codeforces 1237D. Balanced Playlist
传送门 首先显然的,如果一个位置开始播放了两圈还没结束,那么就永远不会结束 先考虑位置 $1$ 开始播放,用一个 $multisetset$ 维护一下当前听的所有歌,直到某一首歌 $r$ 不合法了就停 ...