设为首页 收藏本站
查看: 986|回复: 0

[经验分享] puppet集群部署

[复制链接]

尚未签到

发表于 2018-8-3 07:07:28 | 显示全部楼层 |阅读模式
  实验目的:
  由于现有的环境中,puppetmaster是单节点,客户端更新时出现了更新失败和时间较长等现象。
  考虑将puppetmaster做成集群的模式,解决大量客户端更新延时和单节点故障问题。主要解决证书问题
  环境:

  puppetmaster两台:
  Puppetmaster1:10.9.24.168
  Puppetmaster2:10.9.24.184
  Nginx:
  Nginx:                    10.9.24.183
  Client:
  Client:                     10.9.3.153
  yum install puppet-server rubygem-mongrel
  配置:
  在/etc/hosts写好对应关系
  Puppetmaster1:
  /etc/sysconfig/puppetmaster(启用mongrel模式)
  PUPPETMASTER_PORTS=( 18140 18141 18142 18143 )
  PUPPETMASTER_EXTRA_OPTS="—servertype=mongrel  --ssl_client_header=HTTP_X_SSL_SUBJECT"
  /etc/puppet/puppet.conf:
  [main]
  bindaddress = 0.0.0.0
  (加上这句让puppetmaster监听地址为0.0.0.0,否则只以localhost监听)
  netstat -antp
  tcp        0      0 0.0.0.0:18140               0.0.0.0:*                   LISTEN      22822/ruby
  tcp        0      0 0.0.0.0:18141               0.0.0.0:*                   LISTEN      22872/ruby
  tcp        0      0 0.0.0.0:18142               0.0.0.0:*                   LISTEN      22922/ruby
  tcp        0      0 0.0.0.0:18143               0.0.0.0:*                   LISTEN      22972/ruby
  /etc/exports:
  /var/lib/puppet                10.9.24.184(rw,sync)
  (用nfs共享的模式,同步证书)
  /etc/puppet//fileserver.conf:
  [files]
  path /var/lib/puppet/files
  allow *
  Puppetmaster2:
  配置文件参照puppetmaster1
  service puppetmaster start,启动puppetmaster
  在/etc/fstab中加入如下:
  10.9.24.168:/var/lib/puppet        /var/lib/puppet        nfs        defaults        0 0
  mount -a     //挂载/var/lib/puppet
  Nginx:
  将puppetmaster1/var/lib/puppet下的文件拷贝到本机/var/lib/puppet下(用nfs挂载也可以)
  cat /etc/nginx/nginx.conf:
  user             daemon        daemon;
  worker_processes  2;
  error_log  /var/log/nginx/error.log  notice;
  pid        /var/run/nginx.pid;
  events {
  worker_connections  1024;
  }
  http {
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /var/log/nginx/access.log  main;
  sendfile        on;
  tcp_nopush     on;
  tcp_nodelay                on;
  large_client_header_buffers     16      4k;
  proxy_buffers                   128     4k;
  keepalive_timeout  65;
  ssl on;
  upstream puppet-production {
  server 10.9.24.168:18140;
  server 10.9.24.168:18141;
  server 10.9.24.168:18142;
  server 10.9.24.168:18143;
  server 10.9.24.184:18140;
  server 10.9.24.184:18141;
  server 10.9.24.184:18142;
  server 10.9.24.184:18143;
  }
  //nginx分发请求
  server {
  listen       8140;
  ssl         on;
  ssl_session_timeout        5m;
  ssl_certificate                /var/lib/puppet/ssl/certs/xx.pem;
  ssl_certificate_key        /var/lib/puppet/ssl/private_keys/xx.pem;
  ssl_client_certificate        /var/lib/puppet/ssl/ca/ca_crt.pem;
  ssl_ciphers             SSLv2:-LOW:-EXPORT:RC4+RSA;
  ssl_verify_client        optional;
  ssl_crl                        /var/lib/puppet/ssl/ca/ca_crl.pem;
  (证书位置,先复制到本地)
  access_log                  /var/log/host.access.log  main;
  location / {
  proxy_pass          http://puppet-production;
  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-Client-DN      $ssl_client_s_dn;
  proxy_set_header    X-SSL-Subject    $ssl_client_s_dn;
  proxy_set_header    X-SSL-Issuer     $ssl_client_i_dn;
  proxy_read_timeout  65;
  }
  }
  }
  现在puppetmaster是用同步方式实现的,可以考虑用证书链的方式实现
  Client:
  我故意在puppetmaster1和puppetmaster2配置不同的文件:
  puppetmaster1
  cat /etc/puppet/manifests/main.pp:
  node default {
  file { "/tmp/temp1.txt": content => "Hello,from puppetmaster1\n"; }
  file { "/tmp/test.file":
  path => "/tmp/test.file",
  source => "puppet://puppet/files/test.file",
  owner => "root",
  group => "root",
  mode => 644,
  }
  }
  puppetmaster2
  node default {
  file { "/tmp/temp1.txt": content => "Hello,from puppetmaster2\n"; }
  file { "/tmp/test.file":
  path => "/tmp/test.file",
  source => "puppet://puppet/files/test.file",
  owner => "root",
  group => "root",
  mode => 644,
  }
  }
  Client:
  puppetd -t:
  info: Caching catalog for taffy
  info: Applying configuration version '1301714542'
  notice: /Stage[main]//Node[default]/File[/tmp/test.file]/ensure: content changed '{md5}52688f6d76cbeccd058bdf6f412b4da0' to '{md5}52688f6d76cbeccd058bdf6f412b4da0'
  notice: /Stage[main]//Node[default]/File[/tmp/temp1.txt]/checksum: defined 'checksum' as '{md5}1cf6c62d2c8ddde94e97aa9140861b0e'
  notice: /Stage[main]//Node[default]/File[/tmp/temp1.txt]/content: defined content as 'unknown checksum'
  notice: Finished catalog run in 0.13 seconds
  cat /tmp/temp1.txt:
  Hello,from puppetmaster1   (从puppetmaster1取过来的)
  puppetd -t: (再推一次)
  info: Caching catalog for taffy
  info: Applying configuration version '1301505457'
  --- /tmp/temp1.txt        2011-04-02 11:20:38.509009000 +0800
  +++ /tmp/puppet-diffing20110402-1217-jqru9o-0        2011-04-02 11:30:10.258009000 +0800
  @@ -1 +1 @@
  -Hello,from puppetmaster1
  +Hello,from puppetmaster2         (过来了,从puppetmaster2取出的)
  info: /Stage[main]//Node[default]/File[/tmp/temp1.txt]: Filebucketed /tmp/temp1.txt to puppet with sum cab0e6a2c555b3f96f10ed2972708d34
  notice: /Stage[main]//Node[default]/File[/tmp/temp1.txt]/content: content changed '{md5}cab0e6a2c555b3f96f10ed2972708d34' to 'unknown checksum'
  notice: Finished catalog run in 0.11 seconds

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-545571-1-1.html 上篇帖子: 在CentOS 6.4上安装Puppet配置管理工具 下篇帖子: puppet系列之nginx+foreman-TNT、运维之路
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表