本系統包括兩台Web伺服器和個資料庫伺服器,資料庫伺服器採用雙主從配置,另外還有負載均衡以及redis實現session共用 ...
一、系統架構
本系統的環境部署和配置主要分為三大塊:前端,後端,資料庫,圖一所示
圖一. 系統架構圖
1. 負載均衡
開發和測試環境中,負載均衡由兩台代理伺服器,採用nginx+keepalived實現雙機熱備份和Web伺服器的負載均衡。在生產環境中由醫院提供的F5伺服器做負載均衡。
2. Web伺服器
兩台Web伺服器互為備份,同時實現負載均衡,用於部署系統的後端程式,採用Redis解決前端訪問的session共用問題,安裝Tomcat作為Web服務軟體,採用Mycat作為資料庫伺服器讀寫分離的中間件。
3. 資料庫伺服器
資料庫伺服器採用雙主從結構,從伺服器的數據與主伺服器同步,數據的寫操作(增刪改)均在主伺服器上進行,兩台主資料庫伺服器互為備份,資料庫的讀操作(查詢)均在從資料庫伺服器上進行,系統數據讀寫業務量增大時,可擴展住、從伺服器數量實現擴容,前端Web伺服器同過Mycat的配置實現讀寫操作的負載均衡。
二、項目環境搭建
1. 前端
1.1負載均衡
生產環境系統中負載均衡由醫院方提供F5伺服器做負載均衡
1.2 前端技術框架----Vue.js(開發環境搭建)
1.2.1 node.js安裝
1.進入Node.js官網:https://nodejs.org/en/,選擇下載並安裝Node.js(需較新版本)
2.驗證Node.js是否安裝好,在windows下,win+r召喚出運行視窗,輸入cmd打開命令行視窗。輸入node -v即可得到對應的Node.js版本。
3.安裝cnpm
執行命令
npm install -g cnpm --registry=https://registry.npm.taobao.or
使用npm的國內鏡像(npm 國內鏡像 https://npm.taobao.org/)cnpm 命令代替預設的npm命令,增加依賴包載入速度且避免資源限制
1.2.2 cnpm安裝腳手架vue-cli
在命令行中運行如下命令,安裝腳手架。圖4所示
npm install -g @vue/cli
1.2.3 構建vue項目
在命令行中鍵入vue create demo (demo是項目名) 即可完成創建
1.2.4 項目啟動
cd到demo(項目)目錄,先執行cnpm install 安裝依賴,然後執行npm run serve,即可啟動項目,瀏覽器中輸入localhost:8080出現以下頁面說明啟動成功。
2. 後臺
2.1 tomcat伺服器
2.1.1下載與安裝
1.cd到/usr/local目錄 執行 如下命令下載tomcat壓縮包(如圖6所示)
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz
2.執行如下命令,命令解壓tomcat壓縮包,完成安裝。
tar -zxvf apache-tomcat-8.5.39.tar.gz
2.1.2 配置
1. 創建systemctl管理tomcat的配置文件 vim /lib/systemd/system/tomcat.service
2. 配置文件樣例, 圖8所示。
圖8. 配置文件樣例
3. 啟動服務
systemctl start tomcat.service
4. 查看服務狀態
systemctl status tomcat.service
5. 開機啟動
systemctl enable tomcat.service
重啟之後再查看服務狀態已經啟動
(註意:由於系統架構採用兩台伺服器並實現負載均衡,所以兩台伺服器tomcat安裝配置完全一致)
2.2 Redis安裝與配置
提出問題:在分散式系統中需要使用多台伺服器,用戶在客戶端第一次發送登錄請求(假定一次登陸成功),nginx負載均衡分配到伺服器1,伺服器1中生成session,並且響應客戶端,客戶端中存儲了此session。接下來用戶再次發送請求,就會產生以下兩種情況:
① nginx將請求分配給伺服器1,伺服器檢測到有此用戶的session,響應客戶端;
② nginx將請求分配給伺服器2,伺服器檢測不到此用戶的session,無法響應客戶端,此時就會報錯。
即:一個請求,有時可以得到響應,有時得不到響應。
解決問題:採用redis實現session共用。實現原理如下圖所示,用戶登錄之後會將session寫入redis中,再次發送請求時,伺服器2就會從客戶端發送過來的session中獲取sessionId,再用sessionId從redis中獲取session。
2.2.1 Redis安裝
1. 官網下載壓縮包
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
2. 解壓
tar -zxvf redis-4.0.6.tar.gz
3. cd到redis-4.0.6目錄 執行
make
redis-4.0.6目錄下會出現編譯後的redis服務程式redis-server,還有用於測試的客戶端程式redis-cli,兩個程式位於安裝目錄 src 目錄下。
cd 到src目錄下執行如下命令
make install
3. 下麵啟動redis服務-----以後臺進程方式啟dong
修改redis.conf文件 daemonize no 改為 daemonize yes
然後執行
./redis-server /usr/local/redis-4.0.6/redis.conf
2.2.2 Redis配置
1. 開機自啟動
執行
vim /etc/systemd/system/redis-server.service
添加如下內容
[Unit]
Description=Redis Server Manager
After=syslog.target
After=network.target
[Service]
Type=simple
User=redis
Group=redis
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
保存退出執行如下指令,完成開機自啟配置
systemctl daemon-reload
systemctl start redis-server.service
systemctl enable redis-server.service
3.資料庫
3.1安裝Mysql5.7
3.1.1 卸載centos7自帶的MariaDB
執行
rpm -qa|grep mariadb
rpm -e mariadb-libs-5.5.56-2.el7.x86_64 –nodeps
3.1.2 添加Mysql yum倉庫
下載命令
curl -LO http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
下載後執行
yum localinstall mysql57-community-release-el7-11.noarch.rpm
3.1.3 安裝Mysql服務
1. 執行 命令完成安裝
yum install mysql-community-server
3.1.4 mysql自啟動配置
vim /etc/rc.local
添加service mysqld start即可
圖12所示
圖12 mysql自啟動
3.1.5其他配置
1.修改密碼
查到密碼 grep 'temporary password' /var/log/mysqld.log
修改密碼ALTER USER test@'%' IDENTIFIED BY '123456';
2. 開啟遠程連接埠
執行 firewall-cmd --zone=public --add-port=3306/tcp --permanent 開放3306埠
執行 firewall-cmd --reload 重啟防火牆
執行 firewall-cmd --list-port 查看已開放的埠
3.2 Mysql主從伺服器配置
主從關係說明:mysql伺服器由兩台主伺服器(master1--71,master2--76)和兩台從伺服器(slave1--72,slave2--77)組成,master1與master2互為主從,slave1為master 1的從伺服器, slave2為master 2的從伺服器。
3.2.1 my.cnf配置
1. Master1 配置my.cnf文件 (/etc/my.cnf 下同),圖14所示
圖14 Master1 配置my.cnf
2.