cjcmay 发表于 2018-8-2 08:44:54

nginx结合多套puppet实现(apach+forman+puppt)

  nginx结合多套puppet实现(apach+forman+puppt)
  本案例是将多套puppet服务端(puppet+apache+foreman+foreman-proxy)系统,利用nginx负载均衡实现统一服务的功能。其中用到的puppet+apache+foreman+foreman-proxy配置和nginx+puppet配置等内容可以参考本人前面的相关文章。
  这里以2套为例,它们的信息如下:
  软件信息:Centos6.5 x86_64,puppet3.8.3,foreman1.9.2,foreman-proxy1.9.2
  其中主master端安装有nginx1.4.7
  域名:
  master1:www.master1.com
  master2:www.master2.com
  这里主puppet服务端master1不需要做修改,只需配置好nginx辅助均衡即可;这里主要修改辅助的puppet服务端master2。
  辅助的puppet服务端master2修改如下:
  一、修改puppet配置
  1.1修改puppet.conf
  
  #采用master1的证书域名
  certname = www.master1.com
  #关闭master2的证书认证功能
  ca = false
  1.2修改forema.yaml
  使用master1的如下信息
  :url: "www.master1.com"
  :ssl_ca: "/var/lib/puppet/ssl/ca/ca_crt.pem"
  :ssl_cert: "/var/lib/puppet/ssl/certs/www.master1.com.pem"
  :ssl_key: "/var/lib/puppet/ssl/private_keys/www.master1.com.pem"
  1.3统一配置
  替换/etc/puppet/下的以下文件:
  拷贝master1的fileserver.conf、auth.conf、autosign.conf到master2中相应位置;
  拷贝master1的manifests下文件到master2中相应位置;
  拷贝master1的modules下文件到master2中相应位置;
  注:如果使用了enviroments文件夹来存放不同环境,那么也有拷贝该文件夹。如果后期以上文件有改变也要和及时和master1进行同步。
  1.4统一证书
  拷贝master1的/var/lib/puppet/文件夹到master2中相应位置;
  注:

[*]  要特别注意/var/lib/puppet/yaml文件夹及其子文件夹和文件的所属主/组,要是puppet或puppet可以访问才可以。
[*]  如果后期以上文件有改变要及时和master1进行同步。
  二、修改apache配置
  2.1禁用80和443端口,只留puppet服务端口
  vim /etc/httpd/conf/ports.conf
  #Listen 443
  #Listen 80
  #NameVirtuaHost *:443
  #NameVirtuaHost *:80
  2.2重命名apache中foreman相关配置文件,使其不启用
  cd /etc/httpd/conf.d
  #mv 05-foreman.conf 05-foreman.conf_bak
  #mv 05-foreman-ssl.conf 05-foreman-ssl.conf_bak
  #mv 15-default.conf 15-default.conf_bak
  2.3修改相关证书设置
  1)修改/etc/puppet/puppet.conf中证书域名为www.master1.com(步骤1.1中已修改)
  2)修改/etc/puppet/foreman.yaml中证书域名为www.master1.com(步骤1.2中已修改)
  3)修改/etc/httpd/conf.d/25-puppet.conf中证书域名为www.master1.com(如果有多个这类puppet.conf文件,那么都有做相应的修改);
  三、关闭相关服务
  3.1 关闭foreman-proxy服务
  #service foreman-proxy stop
  #chkconfig foreman-proxy off
  3.2关闭mysql服务
  #service mysqld stop
  #chkconfig mysqld off
  四、修改master1中nginx配置
  由于辅助puppet即master2停用了证书颁发功能,所以所用的证书申请及颁发必须有主puppet即master1来实现;因而,我们要对新客户端的证书申请和颁发时用到的请求做过滤,让他们只能访问主puppet即master1。
  在已经配好的nginx负载均衡的server配置中增加如下配置:
  #vim /usr/local/nginx/conf/nginx.conf
  location ~* /product/(certification|certificate_request|certificate_revocation_list){
  #设置跳转到主puppet即master1中申请证书
  proxy_pass            https://127.0.0.1:8140;
  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-SSL-Subject $ssl_client_s_dn;
  proxy_set_header   X-SSL-Issuer $ssl_client_i_dn;
  }
  五、启动服务
  1.启动master2中Apache服务
  #service httpd restart
  2.启动master1中各项相关服务
  #service foreman-proxy restart
  #service httpd restart
  #/usr/local/nginx/sbin/nginx
  3.使用客户端连接进行测试即可
  为了测试效果,可以在nginx中分别开启各个puppet服务连接,来验证每个puppet服务是否正常。
  备注:
  1.如果有多套同样的,配置方式也是类似的。
  2.如果想使用多端口同时提供服务,设置可以参考本人的文章《Nginx对(apache+foreman+puppet)负载均衡》http://4709096.blog.51cto.com/4699096/1730674
  3.其实master2可以单独使用apache-http或nginx来和rubygem-mongrel+puppetmaster结合实现多端口,负载均衡配置;本人这里都装了foreman和foreman是出于懒惰,因为安装foreman时就会自动去安装配置rubygem-mongrel,有兴趣的同学可以从网上参考相关文章。
页: [1]
查看完整版本: nginx结合多套puppet实现(apach+forman+puppt)