Table of Contents

  • 1. 概述
  • 2. 实验环境
  • 3. 实验步骤
    • 3.1. 机器B 的配置
    • 3.2. 机器A 的配置
    • 3.3. 测试配置结果

概述

横向扩展实验之三 – 将CA 认证服务和 puppetmaster 分开

实验环境

master 和 node 都是 debian 7.7 i686 系统
2个 puppet master 在机器A 上, 都是 apache 虚拟主机
1个 CA 认证服务在 机器B 上.

实验步骤

机器B 的配置

# 清除 ca-1 上的既有证书
root@ca-1:~# rm -rf /var/lib/puppet/ssl/# 在机器A 上认证 ca-1
# 补充: master-1 的IP就是 192.168.1.100
# 补充: ca-1 作为agent 连接master-1, 需要配置 /etc/hosts 和 /etc/puppet/puppet.conf
root@ca-1:/var/lib/puppet# puppet agent --test --server=192.168.1.100
Info: Creating a new SSL key for ca-1.puppet.com
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for ca-1.puppet.com
Info: Certificate Request fingerprint (SHA256): C3:CD:C6:8E:34:22:40:8D:32:00:1B:E5:54:E2:C1:C7:96:79:BF:B0:1A:A8:FD:11:B4:32:D6:4F:AE:54:AB:94
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
root@ca-1:/var/lib/puppet# puppet agent --test
Info: Caching certificate for ca-1.puppet.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for ca-1.puppet.com
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for ca-1.puppet.com
Info: Applying configuration version '1420697839'
Notice: Finished catalog run in 0.01 seconds# 将机器A 上的证书移到 ca-1 上 (机器A 之前作为CA服务器, 上面有 node 的认证情况)
root@master-1:~# rsync -PHaze ssh /var/lib/puppet/ssl/ca 192.168.1.101:/var/lib/puppet/ssl/
root@192.168.1.101's password:
sending incremental file list
ca/
ca/ca_crl.pem1202 100%    0.00kB/s    0:00:00 (xfer#1, to-check=12/14)
ca/ca_crt.pem1968 100%    1.88MB/s    0:00:00 (xfer#2, to-check=11/14)
ca/ca_key.pem3243 100%    3.09MB/s    0:00:00 (xfer#3, to-check=10/14)
ca/ca_pub.pem800 100%  781.25kB/s    0:00:00 (xfer#4, to-check=9/14)
ca/inventory.txt611 100%  596.68kB/s    0:00:00 (xfer#5, to-check=8/14)
ca/serial4 100%    3.91kB/s    0:00:00 (xfer#6, to-check=7/14)
ca/private/
ca/private/ca.pass20 100%   19.53kB/s    0:00:00 (xfer#7, to-check=3/14)
ca/requests/
ca/signed/
ca/signed/ca-1.puppet.com.pem1956 100%    1.87MB/s    0:00:00 (xfer#8, to-check=2/14)
ca/signed/master-1.puppet.com.pem2041 100%    1.95MB/s    0:00:00 (xfer#9, to-check=1/14)
ca/signed/node-1.puppet.com.pem1960 100%    1.87MB/s    0:00:00 (xfer#10, to-check=0/14)sent 10898 bytes  received 218 bytes  1170.11 bytes/sec
total size is 13805  speedup is 1.24# 修改 ca-1 上默认的 puppetmaster 配置
root@ca-1:~# cat /etc/apache2/sites-available/puppetmaster
# This Apache 2 virtual host config shows how to use Puppet as a Rack
# application via Passenger. See
# http://docs.puppetlabs.com/guides/passenger.html for more information.# You can also use the included config.ru file to run Puppet with other Rack
# servers instead of Passenger.# you probably want to tune these settings
PassengerHighPerformance on
PassengerMaxPoolSize 12
PassengerPoolIdleTime 1500
# PassengerMaxRequests 1000
PassengerStatThrottleRate 120
RackAutoDetect Off
RailsAutoDetect OffListen 8140<VirtualHost *:8140>SSLEngine onSSLProtocol             ALL -SSLv2 -SSLv3SSLCipherSuite          EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHASSLHonorCipherOrder     onSSLCertificateFile      /var/lib/puppet/ssl/certs/ca-1.puppet.com.pemSSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/ca-1.puppet.com.pemSSLCertificateChainFile /var/lib/puppet/ssl/certs/ca.pemSSLCACertificateFile    /var/lib/puppet/ssl/certs/ca.pem# If Apache complains about invalid signatures on the CRL, you can try disabling# CRL checking by commenting the next line, but this is not recommended.SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem# Apache 2.4 introduces the SSLCARevocationCheck directive and sets it to none# which effectively disables CRL checking; if you are using Apache 2.4+ you must# specify 'SSLCARevocationCheck chain' to actually use the CRL.# SSLCARevocationCheck chainSSLVerifyClient optionalSSLVerifyDepth  1# The `ExportCertData` option is needed for agent certificate expiration warningsSSLOptions +StdEnvVars +ExportCertData# This header needs to be set if using a loadbalancer or proxy#!!! RequestHeader 相关内容都要注释掉#RequestHeader unset X-Forwarded-For#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}eDocumentRoot /usr/share/puppet/rack/puppetmasterd/public/RackBaseURI /<Directory /usr/share/puppet/rack/puppetmasterd/>Options NoneAllowOverride NoneOrder allow,denyallow from all</Directory>
</VirtualHost>

机器A 的配置

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

机器B 配置好之后, 修改 apache 的配置, 使之将 CA认证服务指向机器B上的 ca-1
重要的地方, 我加了 #!!! 的注释

# 完整的 proxy 配置如下: 192.168.1.101 就是ca-1 的IP
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://puppetmasterca>BalancerMember https://192.168.1.101:8140    #!!! 这里是 https
</Proxy><Proxy balancer://puppetmaster>BalancerMember http://127.0.0.1:18140BalancerMember http://127.0.0.1:18141
</Proxy>Listen 8140
<VirtualHost *:8140>SSLEngine onSSLProxyEngine on     #!!! 这句很重要, 否则无法代理 https 的请求# SSLCipherSuite SSLv2:-LOW:-EXPORT:RC4+RSASSLProtocol ALL +SSLv3 +TLSv1SSLCipherSuite 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/sslSSLCertificateFile /var/lib/puppet/ssl/certs/master-1.puppet.com.pemSSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/master-1.puppet.com.pemSSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pemSSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pemSSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem# optional to all CSR request, required if certificates distributed to client during provisioning.SSLVerifyClient optionalSSLVerifyDepth 1SSLOptions +StdEnvVars# The following client headers record authentication information for downstream workers.RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}eRequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}eRequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e<Location />SetHandler balancer-managerOrder allow,denyAllow from all</Location>ProxyPassMatch ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppetmastercaProxyPassReverse ^(/.*?)/(certificate.*?)/(.*)$ balancer://puppetmastercaProxyPass / balancer://puppetmaster/ProxyPassReverse / balancer://puppetmaster/ProxyPreserveHost On# log settingsErrorLog /var/log/apache2/balancer_error.logCustomLog /var/log/apache2/balancer_access.log combinedCustomLog /var/log/apache2/balancer_ssl_requests.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"</VirtualHost>

ca 的服务也配置成负载均衡的模式了, 方便追加新的 ca 服务器

测试配置结果

# master-1 上, 清理log, 重启 apache服务
root@master-1:~# rm -f /var/log/apache2/*
root@master-1:~# service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .# ca-1 上, 清理log, 重启 apache服务
root@ca-1:~# rm -f /var/log/apache2/*
root@ca-1:~# service apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .# 新建 agent 发送请求, 注意这个agent 不能是已经认证过的, 否则不会请求 ca-1
root@node-2:~# puppet agent --test
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for node-2.puppet.com
Info: Certificate Request fingerprint (SHA256): E5:5C:82:63:0E:E5:41:FD:90:E4:BF:81:98:57:16:A5:98:72:64:1E:52:42:97:9D:1D:A5:43:5C:6D:19:C4:D1
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled#  master-1 上没有生成证书请求
root@master-1:~# puppet cert list --all
+ "ca-1.puppet.com"     (SHA256) 60:9F:42:7C:1C:70:D6:5C:C7:01:93:BF:69:8D:3C:6C:FE:26:D4:16:7A:E4:08:85:DE:77:94:2B:6A:2D:20:99
+ "master-1.puppet.com" (SHA256) 38:79:AE:E8:BF:04:EB:F5:C5:D0:62:08:35:D0:4A:13:A7:D4:F4:63:D7:C8:E4:D3:54:1E:35:E3:9F:70:A2:FE (alt names: "DNS:master-1.puppet.com", "DNS:puppet", "DNS:puppet.puppet.com")
+ "node-1.puppet.com"   (SHA256) 2A:3B:D4:A7:D2:29:50:AC:06:38:B7:16:AC:B8:F7:0C:4F:74:2A:28:6D:1F:00:D7:72:BB:C2:BE:6E:70:ED:AA# ca-1 上生成了证书请求, 说明证书服务确实转移到 ca-1 上来处理了, node-2 就是新的agent 请求的证书
root@ca-1:~# puppet cert list --all"node-2.puppet.com"   (SHA256) E5:5C:82:63:0E:E5:41:FD:90:E4:BF:81:98:57:16:A5:98:72:64:1E:52:42:97:9D:1D:A5:43:5C:6D:19:C4:D1
+ "ca-1.puppet.com"     (SHA256) 60:9F:42:7C:1C:70:D6:5C:C7:01:93:BF:69:8D:3C:6C:FE:26:D4:16:7A:E4:08:85:DE:77:94:2B:6A:2D:20:99
+ "master-1.puppet.com" (SHA256) 38:79:AE:E8:BF:04:EB:F5:C5:D0:62:08:35:D0:4A:13:A7:D4:F4:63:D7:C8:E4:D3:54:1E:35:E3:9F:70:A2:FE (alt names: "DNS:master-1.puppet.com", "DNS:puppet", "DNS:puppet.puppet.com")
+ "node-1.puppet.com"   (SHA256) 2A:3B:D4:A7:D2:29:50:AC:06:38:B7:16:AC:B8:F7:0C:4F:74:2A:28:6D:1F:00:D7:72:BB:C2:BE:6E:70:ED:AA

标签: puppet
本文转自wang_yb博客园博客,原文链接:http://www.cnblogs.com/wang_yb/p/4305729.html,如需转载请自行联系原作者

puppet 横向扩展(三)相关推荐

  1. 关系型数据库横向扩展的三种方法

    本文是 Oracle Coherence 3.5一书,第一章: Achieving Performance, Scalability, and Availability Objectives,第二节: ...

  2. NAS实现类型对比:统一式、网关式和横向扩展式(Scale-out)

    作者将本文同时发布到:EMC中文支持论坛 https://community.emc.com/docs/DOC-28457 介绍 NAS主要有三种类型的实现:统一式.网关式和横向扩展式(Scale-o ...

  3. 【转】横向扩展与纵向扩展

    谈到系统的可伸缩性,Scale-up(纵向扩展)和Scale-out(横向扩展)是两个常见的术语. 鱼缸的启示:Scale-out和Scale-up架构 其实我认为Scale-out和Scale-up ...

  4. mysql横向扩展_转mysql横向扩展和纵向扩展

    Scale - up (纵向扩展)和 Scale -out (横向扩展)的解释 谈到系统的可伸缩性, Scale - up (纵向扩展)和 Scale -out (横向扩展)是两个常见的术语,对于初学 ...

  5. 什么是横向扩展和纵向扩展?

    现代应用程序不断变化,随着新要求的发展而发展,并且存在于对资源的不同需求的环境中.扩展应用程序可以根据资源需求适当调整其大小,以确保客户满意并降低基础设施成本. 如果您不知道如何有效地扩展,您不仅会损 ...

  6. 横向扩展你的ASP.NET Core SignalR 应用

    前言 最近项目要用signalr来做实时通信,在研究asp.netcore signalr 应用横向扩展时候发现了这篇国外的博客,和大家分享一下 原文连接地址 负载均衡 当你把你的应用部署到生产环境时 ...

  7. mysql 横向分表合并_MySQL横向扩展-分库分表解决方案总结

    从业务场景看分库分表 互联网行业中,业务场景通常写少读多的情况居多,在MySQL的使用前期,读性能大多可以通过SQL优化来解决,但随着业务的持续发展,单纯依靠SQL的查询优化会越来越难以达到业务服务要 ...

  8. mysql的纵向扩展方案_SQL Server横向扩展方案-SODA

    SQL Server横向扩展方案-SODA 每次在提到SQL Server扩展性问题的时候,似乎很多的SQL Server DBA或者使用微软技术开发的朋友心里总是一整痛:SQL Server只能纵向 ...

  9. mysql横向扩展_高可用MySQL学习笔记-面向横向扩展的MYSQL复制

    负载增加时,有两个解决办法.一个是购买更加强大的服务器来应对增加的负载,称为"纵向扩展"(scale up):二是添加更多的服务器,称为"横向扩展"(scale ...

最新文章

  1. 用户表如何存放用户密码
  2. 常用的数据交换格式有哪些_高程数据格式介绍
  3. slf4j的简单用法以及与log4j的区别
  4. 《Spring Recipes》第二章笔记:Creating Beans by Invokin...
  5. linux 路由添加
  6. 安卓使用html文件遍历,安卓手机中使用html的input file,获取不到文件类型和文件名...
  7. gitlab使用教程
  8. android 加花工具下载,Android 代码混淆并加花
  9. android最新直播框架,NDK--Android Studio中直播推流框架的搭建
  10. 眼见为实:关于微服务熔断这几个知识点,你可能理解错了
  11. 大脑神经网络具有什么性,神经网络跟大脑的关系
  12. 虚拟化在防泄密领域的痛点
  13. 专访马云:下一个星辰大海是百货商店(附访谈视频)
  14. 杨绛:越是难熬的时候,人越要体面
  15. 竞赛题B:股市风云。
  16. 嵌入式 使用mp4v2将H264+AAC合成mp4文件
  17. 网络音乐api接口,歌词api接口,免费
  18. centos7重启或关机卡死
  19. 来一个LM1875T
  20. [Synology]群辉 MariaDB安装及配置

热门文章

  1. 查看Oracle当前用户下的信息
  2. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  3. Ubuntu 18.04 rc.local systemd设置
  4. 【WEB服务器】与 【应用服务器】
  5. 剑指 Offer II 028. 数组中出现次数超过一半的数字
  6. CentOS 6.9下的iptables在本机用DNAT转发指定IP到内网IP无效的问题解决(127.0.0.1)
  7. 使用Jstl异常:The absolute uri: http://java.sun.com/jsp/jstl/core cannotnbs
  8. IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
  9. jQuery.ajax处理继续响应:“成功:”还是“ .done”?
  10. PHP期望T_PAAMAYIM_NEKUDOTAYIM?