简要介绍
为了实现https的改造,这里我们提出了两种解决方案,软负载(nginx+keepalived)和硬负载(F5),这里主要介绍一下软负载的实现思路和配置步骤:
http的常规的常规方式是生成一个颁发给某个域名或者服务器IP的证书(我们没有域名,只能颁发给服务器IP),然后在中间件中引入证书,并将连接协议修改为通过ssl安全套接字传输的https协议。然后客户端通过信任或导入证书后,访问咱们的程序,此时由客户端到服务端的数据传输全部经过加密,保证了系统的安全性。
但是这种方式并不适合我们,因为我们采用了冗余部署的方式,在多个portal节点的外层,我们应用了负载均衡器,起到了分流的作用。刚才提到我们的证书是颁发给服务器IP的,所以我们负载均衡器虚拟出的IP也需要一个证书,这样就形成一种什么情况呢?比如说我们有两个portal服务器,这样我们需要生成三个证书,负载均衡器在收到请求后使用F5证书进行解密,再通过portal所在服务器的证书再加密,将请求转发到portal服务器,portal服务器最后再使用自己的证书再解密,且不说负载均衡器是否支持这种多个证书的转发,单从效率来讲,就很不合理。如下图:
所以我们现在推荐的方案中,我们为负载均衡器虚拟出的IP生成一个证书,仅将负载均衡器发布成https,tomcat还是http的,这样我们保证了客户端到服务端的数据传输过程中的安全,也节省了一定效率。如下图:
为了实现这种方式部署方式,我们采用了nginx+keepalived的方式实现负载均衡以及反向代理,nginx是目前比较主流的用于实现负载均衡以及反向代理的组件,同时为了避免nginx的单点故障,我们使用了keepalived,keepalived可以将两台nginx服务器虚拟出一个IP,实现对两台nginx服务器的监控,同时每个nginx都可实现对两套portal、admincenter服务的负载。部署架构图如下:
准备工作
软件环境:
Python-2.7.10.tgz //nginx依赖
pcre-8.30.tar.gz //nginx依赖
nginx-1.9.1.tar.gz//nginx安装包
keepalived-1.2.24.tar.gz//keepalived安装包
cer.sh //证书生成脚本
chk_nginx.sh //nginx状态服务监控脚本
网络环境:
Master_ip:10.166.6.173 //应用A1
backup_ip:10.166.6.173 //应用A2
VIP:10.166.6.184 //应用A1、A2虚拟出的ip
1、安装python
1、