docker-tomcat-nginx 反向代理和負載均衡


1.部署tomcat鏡像

下載官方的tomcat鏡像。
sudo docker pull tomcat:7-jre7

 

啟動docker容器,2個實例,分別映射不同的端口號,
~/work/sample-webapps/[v1.0|v2.0]/下面存放JavaWeb.war包,通過volume方式映射到docker鏡像中
docker run -it --rm -p 8080:8080 -v ~/work/sample-webapps/v1.0:/usr/local/tomcat/webapps/ tomcat:7-jre7
docker run -it --rm -p 8081:8080 -v ~/work/sample-webapps/v2.0:/usr/local/tomcat/webapps/ tomcat:7-jre7

啟動完成之后,就可以訪問到兩個tomcat服務了。192.168.5.109是docker宿主機的ip。

在8080和8081兩個端口啟動兩個容器,分別對應不同的版本號,方便識別。
通過端口映射訪問到JavaWeb應用,用瀏覽器測試即可。
 

1.1 如何進入docker容器內部?

#查看當前docker容器,使用4位id可以進入docker容器內部
docker ps  # 找到對應的容器id
docker exec -t -i yourContainerName /bin/bash #通過shell進入docker容器內部

 

 

2.配置nginx反向代理和負載均衡

通過nginx反向代理之后,請求動態數據/JavaWeb的數據,都轉發到tomcat中處理,
多個tomcat組成集群,負載均衡就可以實現,V1.0 和V2.0 都可能顯示
組成tomcat集群的upstream更詳細配置,可以參考官方文檔,nginx默認以輪詢方式轉發請求給tomcat集群中的服務器,還有ip_hash等其他方式。
反向代理之后效果如下:
 
 
ubuntu14.04 上面sudo apt-get install 安裝的 nginx版本是1.6 穩定版 
啟動方式 sudo /etc/init.d/nginx start 如果端口占用,說明安裝之后已經默認啟動完成了。
nginx重新加載配置文件,不需要重啟nginx sudo /etc/init.d/nginx reload
/etc/nginx/nginx.conf 文件內容如下:
user www-data;
worker_processes 4;
pid /run/nginx.pid;
 
events {
    worker_connections 768;
    # multi_accept on;
}
 
http {
 
    ##
    # Basic Settings
    ##
 
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;
 
    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;
 
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
 
    ##
    # Logging Settings
    ##
 
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
 
    ##
    # Gzip Settings
    ##
 
    gzip on;
    gzip_disable "msie6";
 
    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 
    ##
    # nginx-naxsi config
    ##
    # Uncomment it if you installed nginx-naxsi
    ##
 
    #include /etc/nginx/naxsi_core.rules;
 
    ##
    # nginx-passenger config
    ##
    # Uncomment it if you installed nginx-passenger
    ##
 
    #passenger_root /usr;
    #passenger_ruby /usr/bin/ruby;
 
    ##
    # Virtual Host Configs
    ##
 
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
 
    upstream docker-tomcat-cluster {
      server 127.0.0.1:8080;    
      server 127.0.0.1:8081;
    }
    server { 
        listen 80;
        server_name 192.168.5.109; #must give the domain to match
        location /JavaWeb { 
          proxy_pass http://docker-tomcat-cluster ;
          proxy_redirect off; 
          proxy_set_header Host $host; 
          proxy_set_header X-Real-IP $remote_addr; 
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        } 
    }
}

 

3.docker鏡像遷移和批量部署

sudo docker images
sudo docker save -o ./tomcat7-jre7.tar ccc8

 

將tar文件,copy到另一台主機
docker load -i /opt/soft_bak/tomcat7-jre7.tar

 

導入后未命名,通過tag命令打上標記。
docker images #找到鏡像
docker tag 3e7767ddd728 geektown/tomcat7-jre7
docker images #查看tag之后的鏡像

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM