美文网首页
puppt、haproxy

puppt、haproxy

作者: haoxi2018 | 来源:发表于2019-05-02 00:09 被阅读0次

    (第二十三周作业)

    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

    相关文章

      网友评论

          本文标题:puppt、haproxy

          本文链接:https://www.haomeiwen.com/subject/qqaowqtx.html