概述

横向扩展实验之二 – 在不同的机器上扩展puppet master 的个数.

实验环境

master 和 node 都是 debian 7.7 i686 系统

2个 puppet master 在机器A上, 另1个在机器B上, 都是 apache 虚拟主机

实验步骤

机器B 的环境

安装puppetmaster 以及 apache passenger

apt-get install apache2
apt-get install puppetmaster-passenger

配置 1 个apache虚拟主机作为 puppetmaster

类似机器A, 但是不做负载均衡相关过的配置, 并且只配置一个 worker

# 删除默认的 puppetmaster 虚拟主机服务
root@master-2:~# rm /etc/apache2/sites-enabled/puppetmaster
rm: remove symbolic link `/etc/apache2/sites-enabled/puppetmaster'? y # 配置一个 apache 虚拟机作为 puppetmaster 的前端
root@master-2:~# cat /etc/apache2/sites-available/puppetmaster_worker.conf
Listen 8140
<VirtualHost *:8140>
SSLEngine off # Obtain Authentication Information from Client Request Headers
SetEnvIf X-Client-Verify "(.*)" SSL_CLIENT_VERIFY=$1
SetEnvIf X-SSL-Client-DN "(.*)" SSL_CLIENT_S_DN=$1 PassengerEnabled On
DocumentRoot /usr/share/puppet/rack/puppetmasterd/public
<Directory /usr/share/puppet/rack/puppetmasterd>
Options None
AllowOverride None
Order allow,deny
allow from all
</Directory> # log settings
ErrorLog /var/log/apache2/puppetmaster_worker_error.log
CustomLog /var/log/apache2/puppetmaster_worker_access.log combined </VirtualHost> # 设置好apache虚拟主机, 重启apache2服务
root@master-2:~# cd /etc/apache2/sites-enabled/
root@master-2:/etc/apache2/sites-enabled# ll
total 0
lrwxrwxrwx 1 root root 26 Dec 14 21:48 000-default -> ../sites-available/default
root@master-2:/etc/apache2/sites-enabled# ln -s ../sites-available/puppetmaster_worker.conf puppet_worker
root@master-2:/etc/apache2/sites-enabled# ll
total 0
lrwxrwxrwx 1 root root 26 Dec 14 21:48 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 43 Jan 7 19:59 puppet_worker -> ../sites-available/puppetmaster_worker.conf
root@master-2:/etc/apache2/sites-enabled# service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

机器A 的环境

就用 puppet横向扩展(一) 中所使用的环境就行

上面的机器B 配置好之后, 把机器B 的apache虚拟机也加到 机器A 的负载均衡配置中.

root@master-1:~# cat /etc/apache2/sites-available/puppetmaster_proxy.conf
# Available back-end worker virtual hosts
# NOTE the use of cleartext unencrypted HTTP.
<Proxy balancer://puppetmaster>
BalancerMember http://127.0.0.1:18140
BalancerMember http://127.0.0.1:18141
BalancerMember http://192.168.1.101:8140
</Proxy> Listen 8140
<VirtualHost *:8140>
SSLEngine on
# SSLCipherSuite SSLv2:-LOW:-EXPORT:RC4+RSA
SSLProtocol ALL +SSLv3 +TLSv1
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
#SSLProtocol ALL -SSLv2
#SSLCipherSuite HIGH:!ADH:RC4+RSA:-MEDIUM:-LOW:-EXP
# Puppet master should generate initial CA certificate.
# ensure certs are located in /var/lib/puppet/ssl
SSLCertificateFile /var/lib/puppet/ssl/certs/master-1.puppet.com.pem
SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/master-1.puppet.com.pem
SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem
SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem
SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem
# optional to all CSR request, required if certificates distributed to client during provisioning.
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars # The following client headers record authentication information for downstream workers.
RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e
RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e
RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e <Location />
SetHandler balancer-manager
Order allow,deny
Allow from all
</Location> ProxyPass / balancer://puppetmaster/
ProxyPassReverse / balancer://puppetmaster/
ProxyPreserveHost On # log settings
ErrorLog /var/log/apache2/balancer_error.log
CustomLog /var/log/apache2/balancer_access.log combined
CustomLog /var/log/apache2/balancer_ssl_requests.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
root@master-1:~# service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .

主要就是加入 [BalancerMember http://192.168.1.101:8140] 的配置.

测试配置结果

默认的负载均衡

# master-1 上执行, 清理log, 重启 apache2 服务
root@master-1:~# rm /var/log/apache2/* -rf
root@master-1:~# service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .
root@master-1:~# ll /var/log/apache2/
total 4
-rw-r--r-- 1 root root 0 Jan 7 20:14 access.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 balancer_access.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 balancer_error.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 balancer_ssl_requests.log
-rw-r--r-- 1 root root 155 Jan 7 20:14 error.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 other_vhosts_access.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 puppetmaster_worker_access_1.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 puppetmaster_worker_access_2.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 puppetmaster_worker_error_1.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 puppetmaster_worker_error_2.log # master-2 上执行, 清理log, 重启 apache2 服务
root@master-2:/etc/apache2/sites-enabled# rm /var/log/apache2/* -rf
root@master-2:/etc/apache2/sites-enabled# service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .
root@master-2:/etc/apache2/sites-enabled# ll /var/log/apache2/
total 4
-rw-r--r-- 1 root root 0 Jan 7 20:15 access.log
-rw-r--r-- 1 root root 155 Jan 7 20:15 error.log
-rw-r--r-- 1 root root 0 Jan 7 20:15 other_vhosts_access.log
-rw-r--r-- 1 root root 0 Jan 7 20:15 puppetmaster_worker_access.log
-rw-r--r-- 1 root root 0 Jan 7 20:15 puppetmaster_worker_error.log # node-1 上执行
root@node-1:~# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for node-1.puppet.com
Info: Applying configuration version '1420633009'
Notice: Finished catalog run in 0.02 seconds # master-1 上查看 log 结果
root@master-1:~# ll /var/log/apache2/
total 20
-rw-r--r-- 1 root root 0 Jan 7 20:14 access.log
-rw-r--r-- 1 root root 821 Jan 7 20:16 balancer_access.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 balancer_error.log
-rw-r--r-- 1 root root 903 Jan 7 20:16 balancer_ssl_requests.log
-rw-r--r-- 1 root root 155 Jan 7 20:14 error.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 other_vhosts_access.log
-rw-r--r-- 1 root root 300 Jan 7 20:16 puppetmaster_worker_access_1.log
-rw-r--r-- 1 root root 309 Jan 7 20:16 puppetmaster_worker_access_2.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 puppetmaster_worker_error_1.log
-rw-r--r-- 1 root root 0 Jan 7 20:14 puppetmaster_worker_error_2.log
root@master-1:~# cat /var/log/apache2/balancer_access.log
192.168.1.120 - - [07/Jan/2015:20:16:40 +0800] "GET /production/node/node-1.puppet.com?transaction_uuid=2d53569c-b6bf-4396-87b4-c0c341379d3c&fail_on_404=true HTTP/1.1" 200 10466 "-" "Ruby"
192.168.1.120 - - [07/Jan/2015:20:16:41 +0800] "GET /production/file_metadatas/pluginfacts?links=manage&recurse=true&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5 HTTP/1.1" 200 569 "-" "Ruby"
192.168.1.120 - - [07/Jan/2015:20:16:42 +0800] "GET /production/file_metadatas/plugins?links=manage&recurse=true&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5 HTTP/1.1" 200 569 "-" "Ruby"
192.168.1.120 - - [07/Jan/2015:20:16:49 +0800] "POST /production/catalog/node-1.puppet.com HTTP/1.1" 200 869 "-" "Ruby"
192.168.1.120 - - [07/Jan/2015:20:16:49 +0800] "PUT /production/report/node-1.puppet.com HTTP/1.1" 200 298 "-" "Ruby"
root@master-1:~# cat /var/log/apache2/puppetmaster_worker_access_1.log
127.0.0.1 - - [07/Jan/2015:20:16:40 +0800] "GET /production/node/node-1.puppet.com?transaction_uuid=2d53569c-b6bf-4396-87b4-c0c341379d3c&fail_on_404=true HTTP/1.1" 200 5122 "-" "Ruby"
127.0.0.1 - - [07/Jan/2015:20:16:49 +0800] "POST /production/catalog/node-1.puppet.com HTTP/1.1" 200 867 "-" "Ruby"
root@master-1:~# cat /var/log/apache2/puppetmaster_worker_access_2.log
127.0.0.1 - - [07/Jan/2015:20:16:41 +0800] "GET /production/file_metadatas/pluginfacts?links=manage&recurse=true&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5 HTTP/1.1" 200 567 "-" "Ruby"
127.0.0.1 - - [07/Jan/2015:20:16:49 +0800] "PUT /production/report/node-1.puppet.com HTTP/1.1" 200 296 "-" "Ruby" # master-2 上查看 log 结果
root@master-2:/etc/apache2/sites-enabled# ll /var/log/apache2/
total 8
-rw-r--r-- 1 root root 0 Jan 7 20:15 access.log
-rw-r--r-- 1 root root 155 Jan 7 20:15 error.log
-rw-r--r-- 1 root root 0 Jan 7 20:15 other_vhosts_access.log
-rw-r--r-- 1 root root 195 Jan 7 20:16 puppetmaster_worker_access.log
-rw-r--r-- 1 root root 0 Jan 7 20:15 puppetmaster_worker_error.log
root@master-2:/etc/apache2/sites-enabled# cat /var/log/apache2/puppetmaster_worker_access.log
192.168.1.100 - - [07/Jan/2015:20:16:42 +0800] "GET /production/file_metadatas/plugins?links=manage&recurse=true&ignore=.svn&ignore=CVS&ignore=.git&checksum_type=md5 HTTP/1.1" 200 567 "-" "Ruby"

从上面的log中可以看出, master-1 上的worker_1 和 worker_2 分别处理了 2 个请求,

master-2 上的 worker 处理了 1 个请求.

其他情况

可以仿照 puppet 横向扩展(一) 中设置其中一个 worker 挂了之后的负载均衡的反应.

比如删除 master-1 或者 master-2 中的apache虚拟主机配置, 然后看负载均衡的效果.

我做了尝试, 就不在这里一一列举了. 有问题欢迎一起交流.

puppet 横向扩展(二)的更多相关文章

  1. puppet 横向扩展(三)

    Table of Contents 1. 概述 2. 实验环境 3. 实验步骤 3.1. 机器B 的配置 3.2. 机器A 的配置 3.3. 测试配置结果 概述 横向扩展实验之三 – 将CA 认证服务 ...

  2. puppet 横向扩展(一)

    目录 1. 概述 2. 实验环境 3. 实验步骤 3.1. 创建puppetmaster的rack环境 3.2. 配置文件设置 3.3. 补充说明 3.4. 测试配置结果 3.4.1. 默认的负载均衡 ...

  3. presto的动态化应用(一):presto节点的横向扩展与伸缩

    一.presto动态化概述 近年来,基于hadoop的sql框架层出不穷,presto也是其中的一员.从2012年发展至今,依然保持年轻的活力(版本迭代依然很快),presto的相关介绍,我们就不赘述 ...

  4. .net core 3.0 Signalr - 04 使用Redis做底板来支持横向扩展

    在实际的系统中,可能需要多台机器部署;然而,Signalr的连接信息是跟站点走的,举个例子 推送系统部署了A.B两个服务器,张三访问A服务器,李四访问B服务器,当张三通过A服务器向李四推送的时候,A服 ...

  5. Ceph如何实现文件系统的横向扩展

    前言 在跟一个朋友聊天的时候,聊到一个技术问题,他们的一个环境上面小文件巨多,是我目前知道的集群里面规模算非常大的了,但是目前有个问题,一方面会进行一倍的硬件的扩容,而文件的数量也在剧烈的增长着,所以 ...

  6. elasticsearch介绍集群,模拟横向扩展节点、节点宕机、改变分片

        出处:[http://www.cnblogs.com/dennisit/p/4133131.html] ,防楼主删博,故保留一份! elasticsearch用于构建高可用和可扩展的系统.扩展 ...

  7. 在 Windows Azure 网站中进行纵向扩展和横向扩展

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Byron Tardif 撰写. 当您开始一个新的 Web 项目,或者刚刚开始开发一般的网站和应用程序时,您可能希望从小处着手. ...

  8. SignalR学习笔记(五) 横向扩展之SQL Server

    当一个Web应用程序达到一台服务器能力限制,即请求处理数量限制之后,有2种解决方案:纵向扩展和横向扩展. 纵向扩展即用更强的服务器(或虚拟机),或为当前的服务器添加更多的内存,CPU等 横向扩展即添加 ...

  9. 转mysql横向扩展和纵向扩展

    Scale-up(纵向扩展)和Scale-out(横向扩展)的解释 谈到系统的可伸缩性,Scale-up(纵向扩展)和Scale-out(横向扩展)是两个常见的术语,对于初学者来说,很容易搞迷糊这两个 ...

随机推荐

  1. tiny210 tslib 测试(基于 ft5x06 触摸屏),解决触摸无效问题

    1. 拷贝至开发板 将上次实验中的 tmp 文件夹拷贝到开发板,可以通过 nfs 来传输,并将 tmp/lib 下的所有 .so 文件拷贝至 开发板的 /usr/lib 中,并且确保库的映射关系正确. ...

  2. 分布式系统监视zabbix讲解八之自动发现/自动注册--技术流ken

    自动发现(LLD) 概述 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网 ...

  3. 南大算法设计与分析课程复习笔记(4)L4 - QuickSort

    一.快速排序 算法导论上关于快速排序有两种写法 第一种,从头到尾遍历,不断将小于基准元素的项移到前面.代码很简介,只需要维护一个交换位置,表示小于基准元素的末尾位置加一 我们看算法导论上的一个例子: ...

  4. 走过路过不要错过 包你一文看懂支撑向量机SVM

    假设我们要判断一个人是否得癌症,比如下图:红色得癌症,蓝色不得. 看一下上图,要把红色的点和蓝色的点分开,可以画出无数条直线.上图里黄色的分割更好还是绿色的分割更好呢?直觉上一看,就是绿色的线更好.对 ...

  5. 第一册:lesson seventeen。

    原文:How do ;you do? A:Come and meet our employees,Mr.B. B:Thank you Mr.A. A:This is ...and this is .. ...

  6. C# ThreadPool类(线程池)

    CLR线程池并不会在CLR初始化时立即建立线程,而是在应用程序要创建线程来运行任务时,线程池才初始化一个线程.线程池初始化时是没有线程的,线程池里的线程的初始化与其他线程一样,但是在完成任务以后,该线 ...

  7. python - unittest 单元测试学习

    单元测试 单元测试是用来对一个模块.一个函数或者一个类进行正确性检验的测试工作 比如对Python中的abs 的测试 输入正数: 比如 1, 2, 3, 返回值不变 输入负数: 比如 -1, -2, ...

  8. 一个3年Java程序员的坎与选择

    前言 LZ 15年本科毕业,不知不觉3年过去了,去年底裸辞回到成都来发展,年后开始找工作,面试了几家公司,现在整理整理做个总结,也方便规划下一个3到5年以及和广大想要进阶的Java程序员同胞们共勉. ...

  9. word转PDF,PDF转Image,使用oppenOffice注意事项等

    最近在电子合同等项目中需要把word或者pdf转换成image,用到了openOffice把word转换pdf,以及把pdf转换成图片 感谢小伙伴张国清花费了三天时间来实现了此功能.下面我将把具体的步 ...

  10. JSJ—编译器与虚拟机哪个重要?

    阅读本文约“2分钟” 熟悉Java的朋友都知道虚拟机还有编译器,那么它们各自主要的功能是什么?谁比较重要呢?让我们来了解一下这两位美女的故事. 虚拟机可以说就是Java,她能让程序运行起来. 但是编译 ...