技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> puppetmaster集群解决方案之puppet客户端共享一张证书

puppetmaster集群解决方案之puppet客户端共享一张证书

浏览:1976次  出处信息

    [导读]

    在puppet 运维管理中,当客户端数量达到一定数量后,puppetmaster就会成为性能瓶颈.sky这次是没有采取以往的做法,而是采用了一个简单的方案,

    即puppet 客户端都共享一张ssl证书来实现puppetmaster集群,puppet 集群之核心思想,

    1).puppetmaster集群,分担puppetmaster来自于客户端的请求压力,可以采取Active.Active 模式.

    2).puppet ssl 证书集群,分担puppetmaster的来自于客户端ssl证书的请求压力,我们只能采取Active,Standby模式.

    本次sky就是采用puppetmaster双主,ssl证书共享分享,关于这种方案的优缺点sky在后面总结.

    [正文]

    puppetmaster  集群简介:

    本次puppetmaster集群是采用两台主机来实现puppet 负载均衡,主机名为puppetmaster1 IP为192.168.200.63,

    puppetmaster2 IP为 192.168.200.62, puppetmaster1为用来作CA认证,puppetmaster2不作CA认证,

    采用certname去申请证书。关于certname可以参阅官方网站.也可以去puppet 中文社区讨论交流puppet 使用心得.

    本次puppetmaster集群需要使用dns服务,由于我内网没有dns server,因此采用hosts 方式。

    puppetmaster集群步骤:

     1) .puppetmaster1 和puppetmaster分别以下绑定hosts

     192.168.200.62  puppet2 puppetmaster2 puppetmaster4 puppetclient2

     192.168.200.63  puppet1 puppetmaster1 puppetmaster3 puppetclient1

    2. puppetmaster集群说明

     192.168.200.63   为puppetmaster1,提供puppetmaster服务,且提供puppet CA 认证服务,主机名为puppetmaster1

     192.168.200.62 为puppetmaster2,不提供CA 认证,提供puppetmaster 服务,主机名为puppetmaster2

    3).我们在puppetmaster1生成证书:

     #puppet cert generate -dns_alt_names=puppetmaster3:puppet1 puppetmaster1

     #puppet cert generate -dns_alt_names=puppetmaster3:puppet2 puppetmaster2

    这里使用 -dns_alt_names,旧的-certdnsname已停用。详见官方网站:http://puppetlabs.com/security/cve/cve-2011-3872/

    2) 在puppetmaster2创建ssl证书所需要的目录

     mkdir -p /var/lib/puppet/ssl/{private_keys,certs}

    3)将puppetmaster1上的认证的证书复制到puppetmaster2上。

     cd /var/lib/puppet/ssl/

     scp private_keys/puppetmaster2.pem root@puppet2:/var/lib/puppet/ssl/private_keys/

     scp ca/signed/puppetmaster2.pem root@puppet2:/var/lib/puppet/ssl/certs/

     scp ca/ca_crt.pem root@puppet2:/var/lib/puppet/ssl/certs/ca.pem

    4.修改puppetmaster1和puppetmaster2的puppet.conf文件,添加以下内容:

     puppetmaster1 上的

     [main]

     certname = puppetmaster1  增加这两行

     ca = true                             增加这两行

     [agent]

     certname = puppetclient1 增加这两行

     ca_server = puppet1       增加这两行

    puppetmaster2上的

     [main]

     certname = puppetmaster2 增加这两行

     ca = false

     [agent]

     certname = puppetclient2 增加这两行

     ca_server = puppetmaster1

    5) 重新启动puppetmaster1和puppetmaster2上的puppetmaster服务。

     servcice puppetmaster restart

    6)我们可以在puppetmaster1上puppetmaster2 使用

     puppet agent -test puppetmaster1

     puppet agent -test puppetmaster2

     puppet agent -test puppetmaster3

     puppet agent -test puppetmaster4

     均会看到请求新的ssl证书,而请求两台puppetmaster1都会提示找到证书。

    在这里我们可以看到puppet 客户端可以请求多台puppetmaster,而且我们可以看到

    客户端请求的证书的列表.这里已经达到我们预期目的.

     为了更好的演示一起,那我新增了一台puppetclient1,那要如何进行ssl认证等配置呢?

    1)可以生成一张证书,专门用来作为puppet client的证书。

     a.在puppetmaster1生成证书.

     puppet ca  general client

     puppetca -list -a

     puppetca -s -a

     b. 在puppetclient1创建证书目录

     mkdir -p /var/lib/puppet/ssl/{certs,private_keys}

     c.复制证书到远程客户端

     scp /var/lib/puppet/ssl/certs/ca.pem  root@puppetclient1:/var/lib/puppet/ssl/certs/

     scp /var/lib/puppet/ssl/private_keys/puppetclient.pem  root@puppetclient1:/var/lib/puppet/ssl/private_keys/

     scp /var/lib/puppet/ssl/certs/puppetclient.pem  root@puppetclient1:/var/lib/puppet/ssl/certs/

     d. puppetclient1.需要配置certname

     [agent]

     certname=puppetclient

     ca_server=puppetmaster1

     完成以上步骤即可实现共享一张证书,如果新增很多台,重复c和d步骤即可.

    [puppet master 集群总结]

    采用这种集群方案,可以有效的分担了puppetmaster的压力,也减少了新增puppet client 的ssl证书请求以及

    puppetmaster 的签名步骤,puppetmaster上ssl 证书大量减少,可以减少维护ssl证书数量,但是有个问题,在

    puppetmaster CA server 无法提供服务的时候,虽然puppetmaster2上有证书,但是需要修改dns 记录,

    修改CA server A 记录指向Standby CA server.当然更改所有puppet client的配置文件里的 CA  server 不是我们

    希望的.在接下来的文章中我们会参考puppet pro 文档,使用Apache 的passenger扩展puppet,搭建更合适的puppetmaster

    集群.

    友情提示,本文已同步更新致puppet 中文社区,http://www.puppetfans.com/thread-47-1-1.html,欢迎大家前往讨论.当然

    有同学觉得更应该改为puppet 论坛.puppet 社区提供了puppet 自学教程,以及puppet 的学习技巧,当然更好的是提供了

    很多puppet 资料,以及puppet 应用案例.

建议继续学习:

  1. 使用Apache 和Passenger来运行puppetmaster    (阅读:7030)
  2. 自动化运维之企业实际案例分析    (阅读:3804)
  3. puppet使用rsync来同步文件教程    (阅读:3309)
  4. DevOps之Puppet    (阅读:2988)
  5. 如何有效运行puppet cron任务以及如何触发运行puppet    (阅读:3024)
  6. puppet vagrant 管理VirtualBox 虚拟机    (阅读:2741)
  7. puppet运维之使用自定义函数    (阅读:2650)
  8. puppet extlookup 和puppet hiera使用    (阅读:2255)
  9. puppet 手册检查puppet配置文件和使用puppet tags    (阅读:1634)
  10. puppet手册之建立软件安装源    (阅读:1612)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1