puppet集群
实验目的:
由于现有的环境中,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
puppet集群的更多相关文章
- 多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建
多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建 一.服务器详情 192.168.122.111 pm01.jq.com pm01 #(pup ...
- 基于puppet分布式集群管理公有云多租户的架构浅谈
基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍 在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...
- 利用 Puppet 实现自动化管理配置 Linux 计算机集群
随着虚拟化和云计算技术的兴起,计算机集群的自动化管理和配置成为了数据中心运维管理的热点.对于 IaaS.Paas.Saas 来说,随着业务需求的提升,后台计算机集群的数量也会线性增加.对于数据中心的运 ...
- 扩展Puppet – 建立Puppet CA集群
扩展Puppet – 建立Puppet CA集群 (1 votes, average: 5.00 out of 5) 588 views 2012 年 3 月 4 日Puppet.运维ca.mast ...
- 集群工具ansible使用方法
ansible简介 ansible是与puppet.saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet.saltstack那样都需要客户端.与pupp ...
- Linux 集群
html,body { } .CodeMirror { height: auto } .CodeMirror-scroll { } .CodeMirror-lines { padding: 4px 0 ...
- redis集群讨论
一.生产应用场景 二.存储架构演变 三.应用最佳实践 四.运维经验总结 第1.2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变.第3节:redis cluster的稳定性 ...
- 使用Chef管理windows集群
但凡服务器上了一定规模(百台以上),普通的ssh登录管理的模式就越来越举步维艰.试想Linux发布了一个高危漏洞的补丁,你要把手下成百上千台机器都更新该补丁,如果没有一种自动化方式,那么至少要耗上大半 ...
- Hadoop - Ambari集群管理剖析
1.Overview Ambari是Apache推出的一个集中管理Hadoop的集群的一个平台,可以快速帮助搭建Hadoop及相关以来组件的平台,管理集群方便.这篇博客记录Ambari的相关问题和注意 ...
随机推荐
- filebeat的层次架构图和配置部署 -- 不错的文档 - elasticsearch 性能调优 + Filebeat配置
1.fielbeat的组件架构-看出层次感 2.工作流程:每个harvester读取新的内容一个日志文件,新的日志数据发送到spooler(后台处理程序),它汇集的事件和聚合数据发送到你已经配置了Fi ...
- 论文阅读 | Generating Fluent Adversarial Examples for Natural Languages
Generating Fluent Adversarial Examples for Natural Languages ACL 2019 为自然语言生成流畅的对抗样本 摘要 有效地构建自然语言处 ...
- SolidWorks学习笔记7 镜像,阵列
镜像 将特征,面,实体相对于一个平面来复制.修改原来的特征,镜像特征随之改变 阵列 线性阵列 , 在左侧,先激活要阵列的特征,然后点击小柱 然后选择方向1和方向2,该方向的阵列距离和数量(一般使用边线 ...
- C++面试题整理(持续更新中)
一. 内联函数和宏定义的区别 1.内联函数在运行时可调试,而宏定义不可以: 2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通类型),而宏定义不会: 3.内联函数可以访问类的成员变量,而 ...
- PTA(Advanced Level)1036.Boys vs Girls
This time you are asked to tell the difference between the lowest grade of all the male students and ...
- Kick Start 2019 Round A Contention
$\DeclareMathOperator*{\argmax}{arg\,max}$ 题目链接 题目大意 一排 $N$ 个座位,从左到右编号 $1$ 到 $N$ . 有 $Q$ 个预定座位的请求,第 ...
- mybatis 基础(二) CRUD中的关键点
今日学习中遇见几个问题 关于mybatis foreach的几种情况 1.当我需要传入多个参数的时候,可以将参数封装进map集合中(一般来说是针对一个对象而言的,比如user中的username,ge ...
- 解决Sublime Text3中文符号以及中文显示乱码问题
今天安装了sublime Text3,发现中文符号显示是乱码,刚开始以为是编码问题,经过各种尝试,终于找到了解决办法.解决方法如下: 一.安装包管理器 使用Ctrl+~快捷键或者通过View-> ...
- luogu P3320 [SDOI2015]寻宝游戏
大意:给定树, 要求维护一个集合, 支持增删点, 询问从集合中任取一点作为起点, 遍历完其他点后原路返回的最短长度. 集合中的点按$dfs$序排列后, 最短距离就为$dis(s_1,s_2)+...+ ...
- 编写 Bash 补全脚本
编写 Bash 补全脚本 对于Linuxer来说,自动补全是再熟悉不过的一个功能了.当你在命令行敲下部分的命令时,肯定会本能地按下Tab键补全完整的命令,当然除了命令补全之外,还有文件名补全. B ...