1. 程式人生 > >容器雲環境下,Nginx+tomcat+redis實現web專案叢集

容器雲環境下,Nginx+tomcat+redis實現web專案叢集

環境:由於在Windows下Tomcat8與Nginx實驗不成功,錯誤的認為8不行,就有了下面的歷程,,,,經過請教師兄,發現自己的方法不對,

#利用centos基礎映象以及jdk Tomcat 編輯新的映象Tomcat7

#刪掉jdk資料夾下多餘檔案, 降低build的映象大小
rm -rf /root/image/jdk7/*src.zip \
    /root/image/jdk7/lib/missioncontrol \
    /root/image/jdk7/lib/visualvm \
    /root/image/jdk7/lib/*javafx* \
    /root/image/jdk7/jre/lib/plugin.jar \
    /root/image/jdk7/jre/lib/ext/jfxrt.jar \
    /root/image/jdk7/jre/bin/javaws \
    /root/image/jdk7/jre/lib/javaws.jar \
    /root/image/jdk7/jre/lib/desktop \
    /root/image/jdk7/jre/plugin \
    /root/image/jdk7/jre/lib/deploy* \
    /root/image/jdk7/jre/lib/*javafx* \
    /root/image/jdk7/jre/lib/*jfx* \
    /root/image/jdk7/jre/lib/amd64/libdecora_sse.so \
    /root/image/jdk7/jre/lib/amd64/libprism_*.so \
    /root/image/jdk7/jre/lib/amd64/libfxplugins.so \
    /root/image/jdk7/jre/lib/amd64/libglass.so \
    /root/image/jdk7/jre/lib/amd64/libgstreamer-lite.so \
    /root/image/jdk7/jre/lib/amd64/libjavafx*.so \
    /root/image/jdk7/jre/lib/amd64/libjfx*.so
#編輯Dockerfile檔案
cd /root/image

vi Dockerfile

#插入以下內容
#使用的基礎映象
FROM registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.1
#作者資訊
MAINTAINER

[email protected]

#建立目錄
RUN mkdir -p /java/jdk7
#把當前目錄下的jdk資料夾新增到映象
ADD jdk7 /java/jdk7

#建立tomcat目錄
RUN mkdir -p tomcat
#把當前目錄下的tomcat資料夾新增到映象
ADD tomcat7 tomcat

#新增環境變數
ENV JAVA_HOME /java/jdk7
ENV CATALINA_HOME tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露8080埠
EXPOSE 8080

#啟動時執行tomcat
CMD ["tomcat/bin/catalina.sh","run"]

#生成新的Tomcat7映象
docker build -t tomcat7 /root/image/

#執行測試
docker run -d -p 8089:8080 --name testtomcat tomcat7
docker exec -it testtomcat /bin/bash

#配置並啟動mysql映象,    記得將資料庫匯入 得到MySQL的執行地址及埠,將其修改入專案jar包
docker build -t ntrwsql:1 /root/docker/NginxTomcatRedisWeb/poject/mysql
docker run -d -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123 --name ntrwsql ntrwsql:1
docker exec -it ntrwsql

#配置redis映象 獲得IP地址以及埠號
docker pull docker.io/redis
#將其tag push到自己的私有倉庫 便於下載
docker tag docker.io/redis redis:

#執行redis
docker run -i -p 16379:6379  --name testredis docker.io/redis
docker run -d -p 16379:6379  --name testredis docker.io/redis

#記得這裡的埠號與Tomcat下面的context.xml保持一致


#編譯Tomcat7
#修改Tomcat中的context.xml檔案 將修改好的覆蓋原資料夾下的
echo "
<?xml version='1.0' encoding='utf-8'?>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
        <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
                   host="masterIP"
                   port="16379"
                   database="0"
                   maxInactiveInterval="60" />

</Context>" > context.xml

#建立Dockerfile檔案
    cat > Dockerfile<< EOF
    FROM tomcat7
    COPY context.xml /tomcat/conf/
    COPY webPoject.war /tomcat/webapps/
    COPY commons-pool2-2.4.2.jar /tomcat/lib/
    COPY jedis-2.9.0.jar /tomcat/lib/
    COPY tomcat-redis-session-manager1.2.jar /tomcat/lib/
    EXPOSE 8080
    CMD ["/tomcat/bin/catalina.sh","run"]
EOF

#編譯Tomcat7
docker build -t ntrwtomcat71:1 /root/docker/NginxTomcatRedisWeb/poject/tomcat71

docker run -i -p 8180:8080 --name 71testtomcat ntrwtomcat71:1
docker run -d -p 8180:8080 --name 71testtomcat ntrwtomcat71:1

docker stop  71testtomcat
docker rm  71testtomcat
docker rmi ntrwtomcat71:1

#編輯第二個Tomcat2
#將第一個的Tomcat下的檔案copy到新的Tomcat目錄下
cp -p /root/docker/NginxTomcatRedisWeb/poject/tomcat71/* /root/docker/NginxTomcatRedisWeb/poject/tomcat72/
#編譯Tomcat7
docker build -t ntrwtomcat72:1 /root/docker/NginxTomcatRedisWeb/poject/tomcat72
docker run -i -p 8280:8080 --name 72testtomcat ntrwtomcat72:1
docker run -d -p 8280:8080 --name 72testtomcat ntrwtomcat72:1

docker stop  72testtomcat
docker rm  72testtomcat
docker rmi ntrwtomcat72:1


#配置Nginx
docker pull docker.io/nginx

docker run -d -p 800:80 --name ntrwnginx docker.io/nginx

#停止測試的Nginx
docker stop ntrwnginx
docker rm ntrwnginx

#編輯nginx.conf配置檔案,主要是專案名以及管理的Tomcat的IP和埠號

#編輯Dockerfile檔案
FROM nginx
MAINTAINER
[email protected]

COPY  nginx.conf  /etc/nginx/
EXPOSE 8080

#編譯ntrwnginx
docker build -t ntrwnginx:1 /root/docker/NginxTomcatRedisWeb/poject/nginx

docker run -d -p 800:80 --name ntrwnginx ntrwnginx:1


#nginx.conf配置檔案 參考
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on; ------這裡注意
    upstream webPoject {
        server masterIP:8180;
        server masterIP:8280;
    }
    
    
    server {
        listen       80;
        server_name  localhost;
        #------這裡注意
        charset utf-8;

        #access_log  logs/host.access.log  main;

        #------這裡注意
        location / {
            root   html;
            index  index.html index.htm;
            add_header Cache-Control 'no-store';
            client_max_body_size 100m;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # proxy_cache Z;
            proxy_cache_valid 200 1m;
            proxy_pass  http://webPoject;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}














相關推薦

容器環境Nginx+tomcat+redis實現web專案叢集

環境:由於在Windows下Tomcat8與Nginx實驗不成功,錯誤的認為8不行,就有了下面的歷程,,,,經過請教師兄,發現自己的方法不對, #利用centos基礎映象以及jdk Tomcat 編輯新的映象Tomcat7 #刪掉jdk資料夾下多餘檔案, 降低build的

linux環境檢視Tomcat日誌

在linux上部署專案時,啟動tomcat,經常只能看到如下的顯示: 如果專案出了什麼bug或者報了什麼異常,我們很難看到出錯的提示資訊,怎麼樣才能看到類似windows上的tomcat或者eclipse上執行時那樣實時看到出錯提示呢? 方法如下: 1、進入你tomcat的安裝目

分散式的環境 MySQL和Redis如何保持資料的一致性?

問題:一臺MySQL,一臺Redis,兩臺應用伺服器,使用者的資料儲存持久化在MySQL中,快取在Redis,有請求的時候從Redis中獲取快取的使用者資料,有修改則同時修改MySQL和Redis中的資

windows系統環境tomcat自動重啟的指令碼

如果你使用的是Windows系統,並且想讓tomcat掛掉之後自動重啟的話,可以直接複製下面的程式碼,然後儲存到一個文字檔案中,然後將字尾名命名為.vbs,再然後雙擊執行即可。如:tomcat自動重啟指令碼.vbs 這裡稍微解釋一下,幾點值得注意的內容:        

Nginx+Tomcat+Redis實現session共享

linux nginx tomcat redis session 通過Nginx作為前端的負載,把請求分發到後端的Tomcat服務器上,提高並發數;但是單純的通過Nginx的ip_hash負載是很多問題的。只要用戶一切換網絡或者後端Tomcat主機宕機session就失效;架構圖:基本環境

Redis學習筆記(六)Nginx+Tomcat+Redis實現負載均衡、資源分離、session共享

CentOS安裝Nginx CentOS安裝Tomcat CentOS安裝Redis 多個Tomcat負載均衡例項:可在伺服器上覆製出多個Tomcat分別修改Tomcat的 http訪問埠(預設為8080埠)   Shutdown埠(預設為8005埠)   JVM啟

基於nginx tomcat redis分散式web應用的session共享配置

apply plugin: 'java' apply plugin: 'maven' apply plugin: 'signing' group = 'com.orangefunction' version = '2.0.0' repositories { mavenCentral

Nginx+Tomcat+Redis+NFS搭建伺服器叢集

1、安裝nginx及外掛 a)  下載外掛 b)  下載nginx,並新增模組 參考:http://www.linuxyan.com/web-server/90.html 首先去這裡下載nginx的模組https://github.com/yaoweibin/ngin

Nginx+Tomcat+Redis搭建共享SESSION叢集

以Nginx作為反向代理伺服器,搭建Tomcat叢集,同時將SESSION資訊快取到Redis中。本文中Nginx是單機的,在實際環境中可以搭建Nginx叢集,以保證其的高可用,Tomcat是叢集的,Redis也是單機的,在實際環境中也可以搭建Redis叢集。 環境

nginx+tomcat環境web項目文件上傳問題(未完待續)

chm 技術 無法 web 速度 目錄 環境 自己的 是把   最近我把自己的服務器換成centos,利用nginx做服務器實現動靜分離,覺得項目響應的速度明顯提高了(一周之前還是Windows服務器+純tomcat結構,慢慘了T_T),以前都是用tomcat做服務器,用了

CentOS安裝JDK,Tomcat,Redis,Mysql及項目發布

防火墻 分享 localhost NPU tools local src isa pass 上傳文件到服務器,安裝lrzsz , 可以將本地的文件上傳到linux系統上。 如果是CentOS則可以用yum install lrzsz 命令安裝,更方便。 或:yum -y

nginx環境直接用域名訪問(首頁)

  ①:     server { listen 80; server_name www.njm1.com; location = / {    #=/規則可以直接訪問域名。如:www.njm1.com。跳轉到http://192.168.177.132:8080

eclipse環境如何配置tomcat並且把專案部署到Tomcat伺服器上

eclipse環境下如何配置tomcat 開啟Eclipse,單擊“Window”選單,選擇下方的“Preferences”。 單擊“Server”選項,選擇下方的“Runtime Enviro

Nginx+Tomcat搭建叢集Spring Session+Redis實現Session共享

小夥伴們好久不見!最近略忙,部落格寫的有點少,嗯,要加把勁。OK,今天給大家帶來一個JavaWeb中常用的架構搭建,即Nginx+Tomcat搭建服務叢集,然後通過Spring Session+Redis實現Session共享。 閱讀本文需要有如下知識點:

linux環境spring boot專案war包放入tomcat訪問報404(絕對能夠解決你的問題相信我~)

阿里雲伺服器上,之前自己也部署過一個測試用的專案,直接訪問也是可以訪問的,但是,,不知道為啥我新建立的一個spring boot專案選擇war包部署到tomcat上面,訪問結果都是404,找了很多中解決方法,特此記錄一下先說明一下。因為我建立maven專案的時候,選擇的就是w

Centos 環境有關Nginx安裝與配置詳解

Linux中Nginx安裝與配置詳解(CentOS-6.5:nginx-1.5.0)。 1 Nginx簡介 Nginx ("engine x") 是一個高效能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 Nginx 是由 Ig

分散式高併發伺服器做請求分發session共享(nginx+tomcat+redis

我這裡列舉一個可行方案(nginx+tomcat+redis) 首先 nginx,它幫助實現了分散式 Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器

phpstudy nginx環境tp5.1重寫規則

直接貼程式碼了。server {        listen       80;        server_name  127.0.0.1;        index  index.html index.htm index.php l.php;        #charse

nginx + php7環境新建phalcon專案rewrite問題

本文預設已經安裝好phalcon的extension與開發工具1. 新建專案store進入到專案根目錄www/html,然後執行:phalcon create-project store注意,個人理解,因為此時建立的專案包含apache的rewrite邏輯。若按照官網上教程,

[伺服器] linux(Centos7)nginx+tomcat+java+mysql環境搭建

系統環境搭建 centos7下載與安裝(Mini版) 下載地址:http://mirrors.163.com/centos/7/isos/x86_64/ 網易的源,國內嘛,快些.像我選得就是最小化版本的,即CentOS-7-x86_64-Min