主页 > 知识库 > 服务器 > Apache/IIS >

puppet 运维自动化之使用nginx负载均衡

来源: 作者: 发表于:2012-08-18 13:36  点击:
【puppet nginx 负载均衡导读】 puppet 默认是监听8140端口的,但是随着客户端的不断增多,经常会出现timeout这类问题, puppet服务器压力也比较大,这次我们使用nginx的upstream模块来实现puppet 负载均衡。 【puppet nginx基

  【puppet nginx 负载均衡导读】

  puppet 默认是监听8140端口的,但是随着客户端的不断增多,经常会出现timeout这类问题,

  puppet服务器压力也比较大,这次我们使用nginx的upstream模块来实现puppet 负载均衡。

  【puppet nginx基础】

  本文是给对nginx有一定的了解,并且熟悉nginx模块。本次实验并不是多主机(puppetmaster)

  负载,还是单机,只是开了多个端口。用nginx作反向代理。

  【puppet nginx实验环境】

  1. 修改默认的puppetmaster监听端口,使其监听18140.18141,18142,18143(端口可以由你决定),

  确保四个端口没有使用,puppetmaster没有在运行。

  2.安装nginx,使用nginx监听8140,并使用upstream模块,分发请求到18140,18141,18412,18413四个端口。

  3.假设你已安装了puppetmaster,如没有安装,请使用yum -y install puppet 进行安装。

  【puppet nginx负载均衡安装】

  安装nginx负载均衡所需的rubygem-mongrel

  a.安装sohu的epel源。

  1rpm -ivh http://mirrors.sohu.com/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm

  b.安装rubygem-mongrel:

  1yum -y install rubygem-mongrel

  —————————————————————————-

  安装nginx

  c.下载nginx

  1wget -c http://www.nginx.org/download/nginx-1.0.0.tar.gz

  d.安装nginx

  1tar zxvf nginx-1.0.0.tar.gz

  4cd nginx-1.0.0

  ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_ssl_module

  make -j5

  make install

  --------------------------------------------------------------------------------------

  [puppet nginx 配置负载均衡]

  a.配置puppetmaster

  1vim /etc/sysconfig/puppetmaster

  添加下面2行

  2PUPPETMASTER_PORTS=( 18140 18141 18142 18143 ) ##修改为上面所修改的端口号

  PUPPETMASTER_EXTRA_OPTS="--servertype=mongrel --ssl_client_header=HTTP_X_SSL_SUBJECT"

  b.配置nginx(省略部分配置文件)

  upstream puppet-pool {

  server 127.0.0.1:18140;

  server 127.0.0.1:18141;

  server 127.0.0.1:18142;

  server 127.0.0.1:18143;

  }

  server {

  listen 8140;

  root /etc/puppet;

  ssl on;

  ssl_session_timeout 5m;

  ssl_certificate /var/lib/puppet/ssl/certs/primarylb.test.com.pem; ##加粗这里填写puppetmaster主机名

  ssl_certificate_key /var/lib/puppet/ssl/private_keys/primarylb.test.com.pem; ##加粗这里填写puppetmaster主机名

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

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

  ssl_verify_client optional;

  # File sections

  location /production/file_content/files/ {

  types { }

  default_type application/x-raw;

  alias /etc/puppet/manifests/files/;

  }

  # Modules files sections

  location ~ /production/file_content/modules/.+/ {

  root /etc/puppet/modules;

  types { }

  default_type application/x-raw;

  rewrite ^/production/file_content/modules/(.+)/(.+)$ /$1/files/$2 break;

  }

  location / {

  proxy_pass http://puppet-pool;

  proxy_redirect off;

  proxy_set_header Host $host;

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  proxy_set_header X-Client-Verify $ssl_client_verify;

  proxy_set_header X-SSL-Subject $ssl_client_s_dn;

  proxy_set_header X-SSL-Issuer $ssl_client_i_dn;

  proxy_buffer_size 10m;

  proxy_buffers 1024 10m;

  proxy_busy_buffers_size 10m;

  proxy_temp_file_write_size 10m;

  proxy_read_timeout 120;

  }

  【puppet nginx启动】

  1.启动nginx

  1/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

  2.启动puppetmaster

  1/etc/init.d/puppetmaster start

  【puppet nginx模拟测试】

  1.使用不同的客户端来请求puppetmaster,查看相关日志。

  192.168.3.234 - - [16/Sep/2011:15:08:47 +0800] "GET /production/catalog/xxx HTTP/1.1" 3033 16/Sep/2011:15:08:47 +0800200 771 913 27 1316156927.889 "-" "-" - 0.064 127.0.0.1:18142 200

  192.168.2.229 - - [16/Sep/2011:15:10:10 +0800] "GET /production/catalog/xxxHTTP/1.1" 3026 16/Sep/2011:15:10:10 +0800200 779 921 29 1316157010.376 "-" "-" - 0.077 127.0.0.1:18143 200

  看到上面的加粗的部分,说明nginx已经把请求转发到相应的端口上。

  【puppet nginx总结】

  为什么使用nginx来作负载均衡,因为nginx比较小,比较精简,响应速度非常快速,配置简单,模块易于扩展,易于升级。

  puppetlabs也介绍了很多负载均衡的方法,大家都可以去尝试下,本上有点懒,就没有画这个架构图了,通过上面的介绍

  也能理解,其实就是个proxy,分发到puppetmaster的端口上。更多请参阅 puppetlabs。

  官方参考文档:http://projects.puppetlabs.com/projects/1/wiki/Using_Mongrel_Nginx

本文转载自puppet 运维自动化之使用nginx负载均衡

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%