实例在VMware+docker环境进行。
1. 安装步骤
1.1. 准备tomcat服务器的docker镜像
镜像预先安装好需要的基础设施,包含:jdk1.7、tomcat7,然后执行docker commit命令保存好镜像,为后续备用。
如图是已经生成好的镜像:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZD9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVPRR1T0Q3RiZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DM0MDOxkTM2EjNxEDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
1.2. 使用tomcat服务镜像运行一个容器实例
在实例中我们运行两台tomcat服务,所以需要运行两个容器实例。
在docker的虚拟局域网内的IP分别是172.17.0.8和172.17.0.7:
1.3. 准备nginx服务器的docker镜像
详细参考nginx安装指导。
然后将已安装nginx基础设施的镜像保存为新的镜像。
如图已经安装好:
1.4. 使用nginx服务镜像运行一个容器实例
注意要给容器中nginx服务端口在宿主配置一个映射端口,以便物理机能访问到容器的nginx,例子指定宿主的8089端口给容器的80(nginx默认监听80)。
1.5. Nginx配置负载均衡参数
这个很简单,主要使用upstream配置项进行配置。
这里同时也修改了记录请求分发日志的格式。
在http项里配置日志:
在http项配置负载均衡:
如上使用的IP哈希的负载均衡算法,同时配置实际的后台服务器访问IP和端口(backup项是备份服务,平时不会访问到,当正常的服务都退出或宕机,流量才会到backup服务,这项不是必须)。
在http/server项配置请求分发规则:
如上所有/CloudEnd请求都被负载均衡处理了。
同时也设置了几个响应头信息,这部分可以不用配置。
1.6. 测试负载均衡服务
如上在物理机浏览器调用示例接口(servlet实现的简单示例),调用成功。
在看nginx请求分发日志:
可以看到来自192.168.148.1的终端访问了multiPay.do接口,实际请求的后端服务器是172.17.0.8:8080。
另外在容器中使用curl命令调用服务:
再看日志:
可以看到来自172.17.0.8的终端访问了multiPay.do接口,实际请求的后端服务器是172.17.0.7:8080。
以上说明应用服务器和负载均衡服务都运行正常。