免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9543 | 回复: 3
打印 上一主题 下一主题

[puppet] puppet 运维自动化之使用nginx负载均衡 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-20 09:28 |只看该作者 |倒序浏览
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源。

rpm -ivh http://mirrors.sohu.com/fedora-e ... ease-5-4.noarch.rpm

b.安装rubygem-mongrel:

yum -y install rubygem-mongrel

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

安装nginx

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

d.安装nginx

tar zxvf nginx-1.0.0.tar.gz

cd 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

vim /etc/sysconfig/puppetmaster

添加下面2行
       
PUPPETMASTER_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

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

2.启动puppetmaster

/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/p ... Using_Mongrel_Nginx

论坛徽章:
0
2 [报告]
发表于 2013-10-20 00:15 |只看该作者
多端口。。 这也可以,但能有多大改善呢

论坛徽章:
0
3 [报告]
发表于 2014-11-13 15:33 |只看该作者
chenkun1998 发表于 2013-10-20 00:15
多端口。。 这也可以,但能有多大改善呢


欢迎尝试

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
4 [报告]
发表于 2014-11-15 13:19 |只看该作者
思路不错。不过实施方式有问题。

1. 既然用的是puppet master,多半是linux系统 (有rpm/yum这个命令),那么为啥还要单独下载nginx源代码,编译安装呢? Nginx 有安装模块,直接安装,而且以后更新也比较方便。 难不成以后有新版本,再编译安装吗?也就是说,有现成的安装包,尽量用现成的,除非有特殊需求,需要单独编译。

2. 为啥用sohu的源,个人觉得不安全,最好去主站点下载。

3. 用了puppet,就不要再有手动安装的思路了。建议做两个puppet 模块来实现,一个管理nginx,一个管puppet自己。 puppet master本身也可以被puppet模块管理。 ”pro puppet“的第二版里的67页里有教你如何管理puppet自己。

4. puppetlabs 上的forge 有很多现成的模块,要学会借用。上面说的两个模块都有现成的,建议优先使用。

Good luck.

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP