puppt、haproxy

(第二十三周作业)

1、搭建puppt,对haproxy实现分发

需要4台虚拟机
A机:puppet-master,IP地址:192.168.184.110  主机名:puppetmaster
B机:puppet-slave,安装haproxy IP地址:192.168.184.111  主机名:haproxy
C机:puppet-slave,安装nginx IP地址:192.168.184.112  主机名:web1
D机:puppet-slave,安装nginx IP地址:192.168.184.113  主机名:web2

1.1 准备工作

1).时间同步
给4台机器做NTP时间同步
# yum install ntp -y
# crontab -e

*/5 * * * *  /usr/sbin/ntpdate ntp1.aliyun.com  >/dev/null 2>&1

2).主机名解析
修改hosts文件并设置hostname
4机的host文件修改:
#vi /etc/hosts
增加以下内容

192.168.184.110  puppetmaster.localdomain
192.168.184.111  haproxy.localdomain
192.168.184.112  web1.localdomain
192.168.184.113  web2.localdomain

各台主机要修改主机名:
A机:#  hostnamectl set-hostname  puppetmaster
B机:#  hostnamectl set-hostname  haproxy
C机:#  hostnamectl set-hostname  web1
D机:#  hostnamectl set-hostname  web2
3).防火墙
master主机要开放8140端口。
A机:
# firewall-cmd --zone=public --add-port=8140/tcp --permanent
# firewall-cmd --reload

1.2 puppet-master主机安装步骤:

这些操作步骤在A机上执行
1).添加puppet安装包仓库。
# rpm -Uvh https://yum.puppet.com/puppet6/puppet6-release-el-7.noarch.rpm
执行后在/etc/yum.repos.d目录下会产生一个 puppet6.repo文件
2).安装puppetServer
# yum install puppetserver -y
设置PATH
# vi  ~/.bash_profile

export PATH=$PATH:/opt/puppetlabs/bin/

保存后再执行一下
# source  ~/.bash_profile
3).为Puppet Server生成根和中间签名CA.
# puppetserver ca setup
将在 /etc/puppetlabs/puppet/ssl/ca目录下生成证书文件等。
4).启动Puppet Server服务
修改默认的内存设置,默认为2G,最小可以改为512m
# vi  /etc/sysconfig/puppetserver

JAVA_ARGS="-Xms2g -Xmx2g"

可以修改为1g或512m,根据实际需要修改。
5)修改puppet.conf配置文件
#vi  /etc/puppetlabs/puppet/puppet.conf
在文件后面增一行内容:

server = puppetmaster.localdomain

保存文件后启动puppetserver
# systemctl start puppetserver

以上步骤如果由于网络导致puppetserver的rpm包无法下载。可通过编译来安装(这里只是记录在这里,这次不进行此操作,加了删除线已示区别)
1)安装所需的软件
安装jdk1.8以上jdk
上传jdk-8u151-linux-x64.rpm到/root目录下
# cd  /root
# rpm  -ivh  jdk-8u151-linux-x64.rpm
# vi ~/.bash_profile
在最后加上以下两行内容:(JAVA_HOME根据实际jdk安装目录修改)

export  JAVA_HOME=/usr/java/jdk1.8.0_151/jre
export  PATH=$JAVA_HOME/bin:$PATH

保存后再执行一下
# source  ~/.bash_profile
验证jdk环境
# java  -version
安装git
# yum install git-core
安装Leiningen(需要jdk1.8以上)
#curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein>lein
#chmod u+x lein
运行脚本将下载自安装包
#./lein
2)克隆git库中的源代码
$ git clone --recursive git://github.com/puppetlabs/puppetserver
$ cd puppetserver
(如果之前有安装过puppet,使用此命令可以删除旧的配置,# rm -rf ~/.puppetserver)
3)建立config文件
$ ./dev-setup
执行后将生成:~/.puppetlabs 目录和./dev/puppetserver.conf配置文件
lein run -c ./dev/puppetserver.conf

1.3 puppet-slave从机安装步骤:

这些操作步骤在BCD机上执行:
1).添加puppet安装包仓库。
# rpm -Uvh https://yum.puppet.com/puppet6/puppet6-release-el-7.noarch.rpm
2)安装puppet-agent
# yum install puppet-agent
# /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
# vi ~/.bash_profile

export PATH=/opt/puppetlabs/bin:$PATH

3)修改puppet.conf配置文件
#vi /etc/puppetlabs/puppet/puppet.conf
在文件后面增以下内容:

[main]
certname = haproxy.localdomain   #BCD机根据自己的主机名指定不同的certname
server = puppetmaster.localdomain  
environment=production
runinterval=1h

保存文件

1.4 slave向master发起证书申请

发起证书申请请求,在BCD机上执行:
#puppet agent --test
申请成功后,等待master签名
再到A机上执行:
查看哪些机器需要证书申请请求
puppetserver ca list --all
审批通过证书申请,即进行签名
puppetserver ca sign --certname haproxy.localdomain
puppetserver ca sign --certname web1.localdomain
puppetserver ca sign --certname web2.localdomain

1.5 编写站点清单文件

1)准备安装文件和配置文件
#mkdir  /etc/puppetlabs/puppet/manifests/files
在这个目录下上传
haproxy-1.7.9.tar.gz    #haproxy安装包文件
haproxy.cfg                 #haproxy配置文件
hb.html                       #nginx心跳健康检查文件
haproxy.cfg的文件内容如下:

global
    log 127.0.0.1  local0
    maxconn 4096
    chroot    /usr/local/haproxy
    uid 99#使用nobody用户的uid
    gid 99 #使用nobody用户的  用户组
    daemon #以守护进程形式运行haproxy
    nbproc 1 #启动1个haproxy实例。设置成和CPU核心数一样
    pidfile  /usr/local/haproxy/run/haproxy.pid    #进程ID
defaults
    log    global
    log    127.0.0.1      local3        #日志文件的输出定向。产生的日志级别为local3. 系统中local1-7
    mode    http           #工作模式默认采用http模式,Nginx服务要采用这种方式
    option  httplog       #日志类别,记载http日志
    option  httpclose      #每次请求完毕后主动关闭http通道,
    option  dontlognull    #不记录空连接的日志

    option  forwardfor     #使后端服务器可获得客户端真实ip
    option  redispatch     #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
    retries 2              #2次连接失败就认为服务器不可用
    maxconn 2000           #最大连接数
    balance roundrobin      #负载均衡算法轮询方式
    stats  uri    /haproxy-stats          #haproxy 监控页面的访问地址
    timeout connect      5000             #连接超时时间。 单位毫秒
    timeout client       50000            #客户端连接超时时间
    timeout server      50000             #服务器端连接超时时间
    option  httpchk GET /hb.html     #健康检查页面
frontend nginx #前端名称
    bind 0.0.0.0:80 #监听80端口,请求会被转发到后端
    default_backend nginx_back #后端名称
backend nginx_back #后端名称,给上文引用
    server s1 192.168.184.112:80 weight 3 check #后端的主机 IP 通过weight设置权重
    server s2 192.168.184.113:80 weight 3 check 

hb.html的文件内容如下:

OK!

2) 在A机编写站点清单文件
#cd /etc/puppetlabs/puppet/manifests/
#vi site.pp

node 'haproxy.localdomain'{
  package{'gcc':
    ensure => installed,
    procider => yum
  }
  package{'gcc-c++':
    ensure => installed,
    procider => yum
  }
  package{'openssl-devel':
    ensure => installed,
    procider => yum
  }
  file{'haproxy':
    ensure  => file,
    path => 'root/haproxy-1.7.9.tar.gz',
    source => '/etc/puppetlabs/puppet/manifests/files/haproxy-1.7.9.tar.gz'
  }
  exec{'tar':
    cwd => '/root',
    command => 'tar -zxf haproxy-1.7.9.tar.gz',
    path => ['/bin','/sbin','/usr/bin','/usr/sbin']
  }
  exec{'installhaproxy':
    cwd => '/root/haproxy-1.7.9',
    command => ' make    TARGET=linux2628    PREFIX=/usr/local/haproxy  && make install',
    path => ['/bin','/sbin','/usr/bin','/usr/sbin']
  }
  file{'haproxyconfdir':
    ensure => directory,
    path => '/usr/local/haproxy/etc'
  }
  file{'haproxyconf':
    ensure  => file,
    path => '/usr/local/haproxy/etc/haproxy.cfg'
    source => '/etc/puppetlabs/puppet/manifests/files/haproxy.cfg'
  }
  exec{'starthaproxy':
    command => '/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg',
  }
  Package['gcc']->Package['gcc-c++']->Package['openssl-devel']->File['haproxy']->Exec['tar']->Exec['installhaproxy']->File['haproxyconfdir']->File['haproxyconf']->Exec['starthaproxy']
}
node 'web1.localdomain'{
  package{'nginx':
    ensure => installed,
    procider => yum
  }
   file{'hb.html':
      ensure => file,
      path => '/usr/share/nginx/html/hb.html',
      source => '/etc/puppetlabs/puppet/manifests/files/hb.html'
   }
    service{'nginx':
       ensure => running,
       enable => true,
       hasrestart => true,
       hasstatus => true
    }
    Package['nginx']->File['hb.html']->Service['nginx']
}

node 'web2.localdomain'{
  package{'nginx':
      ensure => installed,
       procider => yum
   }
    file{'hb.html':
         ensure => file, 
         path => '/usr/share/nginx/html/hb.html',
        source => '/etc/puppetlabs/puppet/manifests/files/hb.html' 
   }
    service{'nginx':
         ensure => running,
         enable => true,
         hasrestart => true,
         hasstatus => true 
    }
    Package['nginx']->File['hb.html']->Service['nginx']
}

1.6 启动客户端服务

在BCD机上执行
# puppet agent -v  --no-daemonize 
然后访问测试http://192.168.184.111

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容