Lvs配置Tomcat集群 Https协议(SSL)
1、先完成对Tomcat的https配置 ,多个tomcat需要把证书复制到每一个tomcat服务器下面
tomcat配置Https参考: 配置Tomcat使用https协议(配置SSL协议)
2、修改keepalived.conf配置文件
Keepalived使用参考: CentOS7 Keepalived+LVS 负载均衡 后台节点健康检查
将原来的HTTP_GET 改成现在SSL_GET , 原来的端口8080改成8443端口
virtual_server 192.168.80.120 8443 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 300
protocol TCP
real_server 192.168.80.129 8443 {
weight 1
SSL_GET {
url {
path /index.jsp
digest de189aa6fbe0f5890e75fc8d8bcf4f90
}
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.80.131 8443 {
weight 1
SSL_GET {
url {
path /index.jsp
digest 39f65aa54d9cf147e1c5d2bc87efc2cf
}
connect_timeout 5
nb_get_retry 3
delay_before_retry 3
}
}
}
这个值一定要设置。
keepalived persistence_timeout参数意义 LVS Persistence 参数的作用
persistence_timeout 300
3.浏览器访问https://192.168.80.120:8443/tomcat.png
LVS的虚拟IP地址(192.168.80.120)。
我有俩台tomcat服务器配置成HTTPS模式,分别为:192.168.80.129,与192.168.80.131。
备注:因为LVS是工作在TCP这一层的(四层),它是在SSL协议这一层的下面,所以LVS不对包做任何处理,直接将包进行转发。
SSL协议 |
TCP协议 |
4.通过抓包工具分析一下(HTTPS)SSL协议的数据传输过程。(建议先仔细研究过SSL协议,下文只是通过抓包验证一下理论知识。) 下面只是分析,也未必完全正确,只是个人的理解。
在浏览器第一次访问HTTPS的站点的时候,它首先会去下载证书,然后才会发起资源的请求。
比如我要打开的是一张图片:https://192.168.80.129:8443/tomcat.png
那么浏览器会去下载证书,并且验证证书。(前1-15个包)。 前1-15个包的端口为11730,目标端口8443。
(1-3)个数据包为TCP的三次握手,没啥好说的。
(4-5)个包应该是客户端与服务器端的协商加密方式 例如支持的加密方式 SSL支持的版本等。
(6)第6个包应该是服务端返回给客户端的证书。(测试过很多次,换不同的浏览器,只有证书有这么大)。
(7-15)个包 应该是后续的SSL协议,交换私钥啥的。具体请参考SSL协议。
第15个包是客户端强制结束TCPIP连接,发送了reset与服务器断开连接。
(16,17,18)这三个包又是TCP的三次握手,注意看这次启用了新的端口(11741),这个连接才是去下载tomcat.png的。
在服务器端查看TCP会话也能看到 这个会话。
(19-end)这些包就应该是正常HTTP往返的数据包了。