使用Docker和haproxy为了向多个嵌入式tomcat实例请求负载平衡
我正在尝试使用Docker和haproxy为多个嵌入式tomcat负载均衡/ roundrobin请求。使用Docker和haproxy为了向多个嵌入式tomcat实例请求负载平衡
我现在的配置如下:
从搬运工,compose.yml:
loadbalancer:
image: haproxy
links:
- web
ports:
- "8080:8080"
web:
build: ./web
从./web/Dockerfile:
FROM java:8
ADD ./bignibou-server-1.0.jar /app/bignibou-server-1.0.jar
ADD ./spring-cloud.properties /app/spring-cloud.properties
ENV SPRING_CLOUD_PROPERTIESFILE=/app/spring-cloud.properties
ENV SPRING_PROFILES_ACTIVE=cloud
ENV SPRING_CLOUD_APP_NAME=bignibou
ENV CLEARDB_DATABASE_URL=mysql://root:[email protected]:3306/bignibou_dev
ENV REDISCLOUD_URL=redis://dummy:[email protected]:6379
ENV DYNO=dummy
EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "/app/bignibou-server-1.0.jar" ]
当我做一个docker-compose scale web = 2后面跟着一个docker -compose up,我看到两个tomcat开始,但后来我是una通过浏览器访问它们...
任何人都可以请告知如何访问我的负载平衡应用程序?我曾尝试:
- 172.17.42.1:8080
- 172.17.42.1:80
无济于事(其中172.17.42.1是我的搬运工IP)。
我需要进一步配置haproxy吗?
你需要修改你的端口8080的iptable规则吗?你可以检查一些东西。 netstat -anp | grep 8080来查看你的应用程序是否正在监听该端口。你也可以在主机上和容器内运行tcpdump来查看你是否得到了数据包。
您将需要配置HAProxy,提供有关后端服务器的信息以及要使用的负载平衡算法。只需使用haproxy映像启动容器是不够的。
您将需要一个Dockerfile使用HAProxy的形象和具体HAProxy的配置文件复制到图像: 可以参照说明书在官方HAProxy的图像页: https://registry.hub.docker.com/_/haproxy/
如何设置负载均衡使用HAProxy:https://serversforhackers.com/load-balancing-with-haproxy
我写了一个关于Nginx,Node和Redis的示例docker worflow的博客。它描述了如何使用nginx来负载均衡节点服务器: http://anandmanisankar.com/posts/docker-container-nginx-node-redis-example/
从概念上讲,它与HAProxy平衡tomcat服务器是一样的。但配置结构会有所不同。希望这是有用的。