将两个服务绑定在一个集群服务中
如何将两种请求绑定在一个集群中通过一个director来调度,
这里需要iptable工具配合实现。首先在prerouting链上做一个标记,通过标记来调度
起两个服务:
在rs上安装http 和ssl 两种服务将其绑定在一个集群中调度
配置:
Vip:192.168.220.10
Dip:192.168.220.135
Rip1:192.168.220.11
Rip2:192.168.220.12
ifconfig lo:0 192.168.220.10 netmask 255.255.255.255 broadcast 192.168.220.10 up
在配置rs服务器上的vip(lo上的别名ip)是注意 将内核参数arp_agnore 为1 arp_annonce为2 防止ip冲突
在rs服务上安装相关服务 http ssl
ssl需要配置ca认证
拿 director当ca
创建私钥
自签证书:
Touch index.txt
Echo 1 > se rial
在rs上
生成私钥
生成证书
传到CA上签证
# scp ./httpd.csr 192.168.220.135:/
# openssl ca -in httpd.csr -out httpd.crt -days 365
mv httpd.* /etc/httpd/conf.d/ 放在 /etc/httpd/conf.d/ 下
安装ssl模块
yum install mod_ssl -y
修改ssl配置文件
/etc/httpd/conf.d/ssl.conf
DocumentRoot "/var/www/html"
ServerName www.xiao1.com:443
SSLCertificateFile /etc/httpd/conf.d/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/httpd.key
# httpd -t 检查语法
重启
做域名解析
在director上:
用iptables 打标记
# iptables -t mangle -A PREROUTING -d 192.168.220.10 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 3
创建集群:
ipvsadm -A -f 3 -s rr
ipvsadm -a -f 3 -r 192.168.220.11 -g
# ipvsadm -a -f 3 -r 192.168.220.12 -g
访问:
Curl http:// 192.168.220.10
# curl -k --cacert /root/cacert.pem https://192.168.220.10
<h1>rs1 server</h1>
持久连接:
-p 默认是360
Ipvsadm -A -t 192.168.220.10:0 -s rr -p
:0 表示把所有的服务都绑定这这个集群下但一定要加-p 所有服务都会向后端派发。
问题:curl SSL: certificate subject name 'luffichen_server.tencent.com' does not match target host name '192.168.220.10
原因:这是因为 curl 访问 https 服务器时,会验证服务器证书的有效性和证书域名与访问域名一致性
- 解决方法:
-
1) 修改 curl 选项,使其不验证服务器证书
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, FALSE);
-
(2) 针对 curl 命令,-k 选项,也可以使其不验证证书
(3)保证证书域名与访问的域名一致,因为访问的是一个 IP,在 hosts 文件添加IP域名关系映射,然后使用服务器证书的域名进行访问
-
- 参考: