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
[main]
#采用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中相应位置;
注:如果后期以上文件有改变要及时和master1进行同步。
二、修改apache配置
2.1禁用80和443端口,只留puppet服务端口
vim /etc/httpd/conf/port.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
三、关闭相关服务
3.1关闭foreman服务
#service foreman stop
#chkconfig foreman off
3.2 关闭foreman-proxy服务
#service foreman-proxy stop
#chkconfig foreman-proxy 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服务是否正常。
如果有多套同样的,配置方式也是类似的。