1. 程式人生 > >SSM綜合專案實戰(TTSC) -- day14 專案部署、MyCat

SSM綜合專案實戰(TTSC) -- day14 專案部署、MyCat

一、釋出前準備工作

1、確認伺服器資源。

硬體資源:cpu、記憶體、硬碟

軟體資源:window,Linux,是32位  64位

網路資源:是否需要在一個機房,百兆網路,千兆網路

2、最終測試

開發人員,測試人員等全員參與

3、需要在Git上打tag

在Git上打包釋出版本

4、Maven打war包

Maven打包命令:package

5、把資料庫的結構和資料進行匯出,做sql指令碼

需要匯出資料表和初始資料。

相關的資源也進行打包

6、需要編寫釋出文件

釋出文件應該在釋出前兩天就開始編寫

釋出文件編寫全員參與

7、準備回滾方案

伺服器初始化

二、瞭解系統架構圖

1、系統功能圖


2、淘淘商城系統架構


3、網路拓撲圖


4、系統部署

taotao-manager2

taotao-manager-web2

taotao-portal4

taotao-sso2

taotao-sso-web2

taotao-search2

taotao-search-web2

taotao-item-web2

taotao-cart2

taotao-order2

以上需要22臺伺服器,理論上最大的併發是3000左右

Mysql2

Solr7 (3臺tomcat,4臺solr)

Redis6  (3主3從)

圖片伺服器6  (兩組,一組中一個tracker,連個storage)

Nginx2

註冊中心3

Activemq2

共需要50臺伺服器。

5、域名規劃


只用申請一個一級域名即可

www.taotao.com   taotao.com

三、使用jmeter測試商城首頁簡要示例

注意:jmeter相關文件軟體在本部落格資原始檔中有

1、啟動jmeter

開啟bin目錄下的jmeter.bat,啟動如下



2、儲存方案



3、建立執行緒組

執行緒組用來模擬使用者的併發訪問。




4、建立 http 請求取樣



5、新增監聽報告


6、啟動


7、檢視結果

(1)、聚合報告


(2)、表格檢視結果


最新樣本:他是代表時間的,表示伺服器響應最後一個請求的時間。 

偏離

: 伺服器響應時間變化、離散程度測量值的大小,或者,換句話說,就是資料的分佈。

四、使用高可用架構一:使用keepalived+nginx實現主備

1、機器情況

機器一(主):192.168.0.48

機器二(備):192.168.0.49

虛擬IP:192.168.0.55

2 臺機器均安裝了Nginx,並且Nginx的配置完全一致。

2、整體架構


3、主備切換原理




4、主機配置檔案


! Configuration File for keepalived

#全域性配置
global_defs {
   notification_email {  #指定keepalived在發生切換時需要傳送email到的物件,一行一個
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]  #指定發件人
   #smtp_server 192.168.200.1                             #指定smtp伺服器地址
   #smtp_connect_timeout 30                               #指定smtp連線超時時間
   router_id LVS_DEVEL                                    #執行keepalived機器的一個標識
}

vrrp_instance VI_1 { 
    state MASTER           #標示狀態為MASTER 備份機為BACKUP
    interface eth0         #設定例項繫結的網絡卡
    virtual_router_id 51   #同一例項下virtual_router_id必須相同
    priority 100           #MASTER權重要高於BACKUP 比如BACKUP為99  
    advert_int 1           #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {       #設定認證
        auth_type PASS     #主從伺服器驗證方式
        auth_pass 8888
    }
    virtual_ipaddress {    #設定vip
        192.168.0.55       #可以多個虛擬IP,換行即可
    }
}

5、備機配置


! Configuration File for keepalived

#全域性配置
global_defs {
   notification_email {  #指定keepalived在發生切換時需要傳送email到的物件,一行一個
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]  #指定發件人
   #smtp_server 192.168.200.1                             #指定smtp伺服器地址
   #smtp_connect_timeout 30                               #指定smtp連線超時時間
   router_id LVS_DEVEL                                    #執行keepalived機器的一個標識
}

vrrp_instance VI_1 { 
    state BACKUP           #標示狀態為MASTER 備份機為BACKUP
    interface eth0         #設定例項繫結的網絡卡
    virtual_router_id 51   #同一例項下virtual_router_id必須相同
    priority 99            #MASTER權重要高於BACKUP 比如BACKUP為99  
    advert_int 1           #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {       #設定認證
        auth_type PASS     #主從伺服器驗證方式
        auth_pass 8888
    }
    virtual_ipaddress {    #設定vip
        192.168.0.55       #可以多個虛擬IP,換行即可
    }
}

五、高可用架構二:使用keepalived+nginx實現雙主熱備

1、機器情況

機器一(主):192.168.0.48

機器二(備):192.168.0.49

虛擬IP:192.168.0.55

虛擬IP:192.168.0.56

2 臺機器均安裝了Nginx,並且Nginx的配置完全一致。

2、整體架構


3、主備切換原理



4、主機配置


! Configuration File for keepalived

#全域性配置
global_defs {
   notification_email {  #指定keepalived在發生切換時需要傳送email到的物件,一行一個
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]  #指定發件人
   #smtp_server 192.168.200.1                             #指定smtp伺服器地址
   #smtp_connect_timeout 30                               #指定smtp連線超時時間
   router_id LVS_DEVEL                                    #執行keepalived機器的一個標識
}

vrrp_script check_nginx { 
    script "/etc/keepalived/check_nginx.sh"         ##監控指令碼 
    interval 2                                      ##時間間隔,2秒
    weight 2                                        ##權重 
}

vrrp_instance VI_1 { 
    state MASTER           #標示狀態為MASTER 備份機為BACKUP
    interface eth0         #設定例項繫結的網絡卡
    virtual_router_id 51   #同一例項下virtual_router_id必須相同
    priority 150           #MASTER權重要高於BACKUP 比如BACKUP為99  
    advert_int 1           #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {       #設定認證
        auth_type PASS     #主從伺服器驗證方式
        auth_pass 8888
    }
    virtual_ipaddress {    #設定vip
        192.168.0.55       #可以多個虛擬IP,換行即可
    }

    track_script {
	check_nginx        #監控指令碼
    }
}

vrrp_instance VI_2 { 
    state BACKUP           #標示狀態為MASTER 備份機為BACKUP
    interface eth0         #設定例項繫結的網絡卡
    virtual_router_id 52   #同一例項下virtual_router_id必須相同
    priority 100           #MASTER權重要高於BACKUP 比如BACKUP為99  
    advert_int 1           #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {       #設定認證
        auth_type PASS     #主從伺服器驗證方式
        auth_pass 8888
    }
    virtual_ipaddress {    #設定vip
        192.168.0.56       #可以多個虛擬IP,換行即可
    }

    track_script {
	check_nginx        #監控指令碼
    }
}

5、備機配置


! Configuration File for keepalived

#全域性配置
global_defs {
   notification_email {  #指定keepalived在發生切換時需要傳送email到的物件,一行一個
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]  #指定發件人
   #smtp_server 192.168.200.1                             #指定smtp伺服器地址
   #smtp_connect_timeout 30                               #指定smtp連線超時時間
   router_id LVS_DEVEL                                    #執行keepalived機器的一個標識
}

vrrp_script check_nginx { 
    script "/etc/keepalived/check_nginx.sh"         ##監控指令碼 
    interval 2                                      ##時間間隔,2秒
    weight 2                                        ##權重 
}

vrrp_instance VI_1 { 
    state BACKUP           #標示狀態為MASTER 備份機為BACKUP
    interface eth0         #設定例項繫結的網絡卡
    virtual_router_id 51   #同一例項下virtual_router_id必須相同
    priority 100           #MASTER權重要高於BACKUP 比如BACKUP為99  
    advert_int 1           #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {       #設定認證
        auth_type PASS     #主從伺服器驗證方式
        auth_pass 8888
    }
    virtual_ipaddress {    #設定vip
        192.168.0.55       #可以多個虛擬IP,換行即可
    }

    track_script {
	check_nginx        #監控指令碼
    }
}

vrrp_instance VI_2 { 
    state MASTER           #標示狀態為MASTER 備份機為BACKUP
    interface eth0         #設定例項繫結的網絡卡
    virtual_router_id 52   #同一例項下virtual_router_id必須相同
    priority 150           #MASTER權重要高於BACKUP 比如BACKUP為99  
    advert_int 1           #MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒
    authentication {       #設定認證
        auth_type PASS     #主從伺服器驗證方式
        auth_pass 8888
    }
    virtual_ipaddress {    #設定vip
        192.168.0.56       #可以多個虛擬IP,換行即可
    }

    track_script {
	check_nginx        #監控指令碼
    }
}

六、負載均衡架構一:使用lvs+nginx實現負載均衡

1、架構圖


2、配置Director Server

(1)、在eth0上繫結虛擬ip

ifconfig eth0:0 192.168.0.57 broadcast 192.168.0.57 netmask 255.255.255.255 up

此處在eth0裝置上綁定了一個虛擬裝置eth0:0,同時設定了一個虛擬IP是192.168.0.57,然後指定廣播地址也為192.168.0.57,需要特別注意的是,這裡的子網掩碼為255.255.255.255。

(2)、新增路由規則

route add -host 192.168.0.57 dev eth0:0

(3)、啟用系統的包轉發功能
echo "1" >/proc/sys/net/ipv4/ip_forward

引數值為1時啟用ip轉發,為0時禁止ip轉發。其實在DR模式中,開啟系統的包轉發功能不是必須的,而在NAT模式下此操作是必須的。

(4)、清除原有轉發規則

ipvsadm –C

(5)、新增虛擬IP規則

ipvsadm -A -t 192.168.0.57:80 -s rr

(6)、在虛擬IP中新增服務規則

ipvsadm -a -t 192.168.0.57:80 -r 192.168.0.48:80 -g
ipvsadm -a -t 192.168.0.57:80 -r 192.168.0.49:80 –g

在新加虛擬IP記錄中新增兩條新的Real Server記錄,並且指定LVS 的工作模式為直接路由模式。

(7)、重啟LVS服務

ipvsadm


3、配置Real Server

在lvs的DR和TUn模式下,使用者的訪問請求到達真實伺服器後,是直接返回給使用者的,而不再經過前端的Director Server,因此,就需要在每個Real server節點上增加虛擬的VIP地址,這樣資料才能直接返回給使用者。

(1)、在迴環裝置上綁定了一個虛擬IP地址

ifconfig lo:0 192.168.0.57 broadcast 192.168.0.57 netmask 255.255.255.255 up
/sbin/route add -host 192.168.0.57 dev lo:0

(2)、設定引數

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p

七、Nginx叢集測試之安裝配置nginx

1、安裝gcc環境

[[email protected] ~]# yum install -y gcc-c++

2、安裝Nginx依賴的環境

(1)、安裝nginx所依賴的pcre庫

[[email protected] ~]# yum install -y pcre-devel


(2)、安裝nginx所依賴的zlib庫

[[email protected] ~]# yum install -y zlib-devel


3、上傳nginx壓縮包到Linux系統中並解壓


4、進入nginx目錄,進行編譯安裝

(1)、設定安裝引數

[[email protected] nginx-1.7.7]# ./configure --prefix=/usr/local/nginx/


設定成功效果


(2)、編譯

[[email protected] nginx-1.7.7]# make


(3)、安裝

[[email protected] nginx-1.7.7]# make install


(4)、啟動nginx,檢視程序,瀏覽器訪問



發現不能訪問,需要關閉Linux防火牆



八、部署專案,進行叢集測試

1、以taotao-manager-web和taotao-manager服務為例進行測試


2、刪除已有的jdk,安裝新的jdk

(1)、刪除原有的jdk

使用命令檢視是否安裝jdk

[[email protected] sbin]# rpm -qa | grep java


已經安裝了openjdk,需要解除安裝

[[email protected] sbin]# rpm -e java-1.7.0-openjdk-1.7.0.65-2.5.1.2.el6_5.x86_64 --nodeps
[[email protected] sbin]# rpm -e java-1.6.0-openjdk-1.6.0.0-11.1.13.4.el6.x86_64 --nodeps


解除安裝之後再次確認是否刪除完全


(2)、安裝新的jdk

詳見:http://blog.csdn.net/wingzhezhe/article/details/52664236

3、在192.168.37.140上安裝兩個tomcat,並修改埠號

4、將taotao-manager-web專案打包並上傳到140伺服器的兩個tomcat的webapps下




注意:需要將webapps下的ROOT下的目錄全部刪除,將taotao-manager-web上傳到ROOT下


5、解壓taotao-manager-web.war

[[email protected] ROOT]# jar -xf taotao-manager-web.war


6、複製一份tomcat到tomcat所在目錄,並改名,修改埠號


7、啟動tomcat,訪問測試



8、配置nginx叢集

(1)、修改Nginxd的配置檔案nginx.conf

#配置叢集資訊
upstream taotao-manager-web {
      server 192.168.37.140:8080;  #此處配置的是每臺伺服器的ip地址+埠號
      server 192.168.37.140:8081;
}

    server {
        listen       80;
        server_name  manager.taotao.com;  #此處配置的是host檔案中對應的192.168.37.140的ip對應的域名

	proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location / {
 #使用前面配置的叢集
	    proxy_pass http://taotao-manager-web;  #此處配置的是叢集資訊的名字,http://協議不可以省略
	    proxy_connect_timeout 600;
	    proxy_read_timeout 600;
        }
    }


(2)、重啟nginx服務


(3)、修改宿主機(本地電腦)的hosts


(4)、瀏覽器訪問


相關推薦

SSM綜合專案實戰TTSC -- day14 專案部署MyCat

一、釋出前準備工作 1、確認伺服器資源。 硬體資源:cpu、記憶體、硬碟 軟體資源:window,Linux,是32位  64位 網路資源:是否需要在一個機房,百兆網路,千兆網路 2、最終測試 開發人員,測試人員等全員參與 3、需要在Git上打tag 在Git上打包釋出版本

SSM綜合專案實戰TTSC -- day09 Solr,搜尋系統

一、solr服務的安裝 1、為什麼要使用solr服務 我們需要實現商品的查詢功能,可以使用MySQL進行查詢,但是MySQL的模糊查詢(like)速度很慢,而且資料量越大,查詢速度就越慢。 所以資料量大的時候不會使用MySQL實現搜尋功能,我們這裡使用solr實現搜尋功能。

SSM綜合專案實戰TTSC -- day02 Dubbo註冊中心,通用Mapper,分頁外掛

一、Dubbo的連線方式 1、連線方式介紹         使用Dubbo進行遠端呼叫實現服務互動,它支援多種協議,如Hessian、HTTP、RMI、Memcached、Redis等等。由於Dubbo將這些協議的實現進行了封裝了,無論是服務端(開發服務)還是客戶端(呼叫服

SSM專案實戰--- 高併發秒殺系統之DAO層

專案為慕課網上 搞定Java SSM框架開發的綜合案例–實現一個秒殺系統案例。 1.首先搭建專案 使用Maven構建來管理依賴項,pom.xml檔案: 此pom.xml可作為大多數ssm專案依賴的參考 <project xmlns="http:

從零開始Vue專案實戰-專案結構

現在在瀏覽器中輸入http://localhost:8083,可以看到初始的“Welcome to Your Vue.js App”頁面了 目錄結構 ├── README.md 專案介紹 ├── index.html 入口頁面 ├── build

從零開始Vue專案實戰-搭建環境

1、下載node.js並安裝 下載地址:https://nodejs.org/en/download/。 下載.msi 格式的直接連續下一步就可以了。安裝完成後可以用 node -v 和 npm -v 檢視版本號。 2、安裝vue-cli 腳手架構建工具 在命令列中輸入npm ins

從零開始Vue專案實戰-準備篇

從前參與過一個react專案的程式碼編寫,大神搭建的框架,我主要負責業務邏輯程式碼編寫,現在回想起來似乎又什麼都不會,現在為了鞏固前端知識,決定用Vue來做這個專案的移動端網站,我本人Vue是從零開始的,一邊學習一邊寫程式碼,在這裡記錄一下過程。 專案說明: 主要功能實現一個投資平臺,會員身份為融資人或投

HTML5專案實戰——PC端固定佈局全頁面——day eight

程式碼及圖片 一、分離CSS 把css重複的部分移植到新的頁面而減少程式碼冗餘,單獨建立一個 CSS,以便後續的頁面重複呼叫。 多觀察頁面,總結出相同的樣式,注意取名,方便呼叫。 二、html頁面切換 不同的html頁面通過連結實現跳轉,常用class="active",設定當前

簡單爬蟲專案實戰

概述   最近自己想搞一個小的專案,這個專案我們就先從爬蟲開始,爬取直播吧的NBA滾動新聞,再存入資料庫。先寫個簡單點的,後期再不斷的優化下。 準備   直播吧對於喜歡看球的朋友肯定不陌生,https://www.zhibo8.cc/,開啟我們看到如下介面, 我們選擇NBA新聞tab,然後選擇滾動

Python Selenium專案實戰—— 怎麼去驗證一個按鈕是啟用的可點選

Q: 使用 Python Selenium WebDriver 怎麼去驗證一個按鈕是啟用的(可點選)? A:Selenium WebDriver API 裡面給出瞭解決方法is_enabled() 使用WebDriver API —— driver.find_element_by_css_selector()

vue專案實戰之首頁layout佈局

一、替換顯示頁面 1.在 src/components目錄下新建Layout.vue檔案: <template> <div> <h2>header</h2> <h2>con

Spark Streaming 專案實戰12—— Web層開發

1 Web 層開發 1.1 POM 新增依賴 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib&

vue2.0專案實戰4生命週期和鉤子函式詳解

最近的專案都使用vue2.0來開發,不得不說,vue真的非常好用,大大減少了專案的開發週期。在踩坑的過程中,因為對vue的生命週期不是特別瞭解,所以有時候會在幾個鉤子函式裡做一些事情,什麼時候做,在哪個函式裡做,我們不清楚。 下面來總結一下vue的生命週期。 vue生命週期簡介 咱們從上圖可以很明顯的看出

斯坦福CS231n專案實戰:k最近鄰kNN分類演算法

k最近鄰分類(kNN,K Nearest neighbor)分類演算法是一種最簡單的分類器之一。在kNN演算法訓練過程中,它將所有訓練樣本的輸入和輸出label都儲存起來。測試過程中,計算測試樣本與每個訓練樣本的L1或L2距離,選取與測試樣本距離最近的前k個

React-Native 之 專案實戰

前言 本文有配套視訊,可以酌情觀看。 文中內容因各人理解不同,可能會有所偏差,歡迎朋友們聯絡我。 文中所有內容僅供學習交流之用,不可用於商業用途,如因此引起的相關法律法規責任,與我無關。 如文中內容對您造成不便,煩請聯絡 [email prot

Python之Django商城專案實戰:搭建開發環境

一、搭建環境:1、安裝pythonsudo apt-get install python3-pip2、安裝mysql3、建立虛擬環境安裝虛擬環境:pip install virtualenv方法一:建立虛擬環境(python3.6):python -m venv myenv

vue專案實戰之vue-cli腳手架搭建專案

首先假如你已經安裝了node和npm,如果沒有的話自己百度安裝一下。 如果感覺npm下載速度慢,可以使用淘寶映象cnpm,連結地址: http://npm.taobao.org/ 安裝cnpm 方式一: npm install -g cnpm --registry

Flask零基礎到專案實戰

文章來源–知了課堂的課件 Python基礎 前端基礎 資料庫表設計(一對一、一對多,多對多,外來鍵) 認識web url詳解:  URL是Uniform Resource Lo

Flask零基礎到專案實戰SQLAlchemy資料庫

文章來源—知了課堂的課件 一、SQLAlchemy簡介 flask_sqlalchemy是一套ORM框架。 ORM(Object Relationship Mapping):模型關係對映 ORM的好處:可以讓我們操作資料庫跟操作類的物件一樣。一個表可

A 專案 實戰 CoolSQL 連線 DB2

資料庫用的是DB2,客戶端就用了下CoolSQL,為了讓CoolSQL連線DB2,整整花了我1個小時,終於弄好了。 開始以為用db2jcc.jar作為資料庫驅動,就可以了,後來發現不行, 然後又換了db2jcc4.jar,發現還是不行, 後來就用了【db2java.zip