歡迎您光臨本站 註冊首頁

puppet 運維自動化之使用nginx負載均衡

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

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源。

rpm -ivh http://mirrors.sohu.com/fedora-epel/5/x86_64/epel-release-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

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



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 - - "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 - - "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負載均衡已經有479次圍觀

http://coctec.com/docs/service/show-post-145.html