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