2015-04-02 18 views
2

我正在嘗試使用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嗎?

回答

1

你需要修改你的端口8080的iptable規則嗎?你可以檢查一些東西。 netstat -anp | grep 8080來查看你的應用程序是否正在監聽該端口。你也可以在主機上和容器內運行tcpdump來查看你是否得到了數據包。

3

您將需要配置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服務器是一樣的。但配置結構會有所不同。希望這是有用的。