分散式系統環境搭建

来源:https://www.cnblogs.com/yakyaker/archive/2020/01/02/12138702.html
-Advertisement-
Play Games

本系統包括兩台Web伺服器和個資料庫伺服器,資料庫伺服器採用雙主從配置,另外還有負載均衡以及redis實現session共用 ...


一、 系統架構3

二、 項目環境搭建3

  1. 前端3

    1.1負載均衡3

    1.2 前端技術框架----Vue.js(開發環境搭建)3

      1.2.1 node.js安裝3

      1.2.2 cnpm安裝腳手架vue-cli5

      1.2.3 構建vue項目6

      1.2.4 項目啟動6

  2. 後臺6

    2.1 tomcat伺服器6

      2.1.1下載與安裝6

      2.1.2 配置7

    2.2 Redis安裝與配置7

      2.2.1 Redis安裝7

      2.2.2 Redis配置8

  3.資料庫8

    3.1安裝Mysql5.78

      3.1.1 卸載centos7自帶的MariaDB8

      3.1.2 添加Mysql yum倉庫9

      3.1.3 安裝Mysql服務9

      3.1.4 mysql自啟動配置9

      3.1.5其他配置9

    3.2 Mysql主從伺服器配置10

      3.2.1 my.cnf配置10

      3.2.2 主伺服器配置12

      3.2.3 從伺服器配置13

    3.3 Mycat安裝與配置14

      3.3.1 下載與安裝14

      3.3.2 環境配置14

      3.3.3 文件配置15

      3.3.4 mycat自啟動配置15

三、 項目部署17

  1.前端打包17

  2. 後臺打包18

  3. 項目部署19

一、系統架構

本系統的環境部署和配置主要分為三大塊:前端,後端,資料庫圖一所示

圖一. 系統架構圖

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 項目啟動

cddemo(項目)目錄,先執行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--71master2--76)和兩台從伺服器(slave1--72slave2--77)組成master1master2互為主從,slave1master 1的從伺服器, slave2master 2的從伺服器

3.2.1 my.cnf配置

1. Master1 配置my.cnf文件 /etc/my.cnf 下同)14所示

 14 Master1 配置my.cnf

2. 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 2020-01-02 UUID ,Universally Unique Identifier ,通用唯一標識符。 //定義一個生成 uuid 的方法const getUuid = () => { const s = [] // 定義一個十六進位字元串 const hexDigits = '01234 ...
  • 按照國際慣例先放圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> <!-- 基本樣式 --> <link rel="stylesheet" href="sty ...
  • Element UI 表單設計及代碼生成器,可將生成的代碼直接運行在基於 Element 的 vue 項目中。 github倉庫 https://github.com/JakHuang/form-generator 特點 可視化設計表單 一鍵生成原生的vue單頁表單代碼,100%拓展性 線上編輯器修 ...
  • 「前端,有發展“錢”途」 前端發展隨著互聯網大時代如火如荼的進行著,Web前端技術依靠其自身在頁面交互效果上強大的功能屬性受到了眾多企業的青睞。這不僅是在北上廣,很多一二線城市都是如此。 無論是你使用的智能手機,還是iPad,還是pc電腦等等,前臺的頁面樣式都需要前端開發工程師來編寫實現,也因此市場 ...
  • //點擊a標簽,輪流顯示和隱藏<div id="timo" style="background-color:red;height:50px;width:50px;"></div><a href="javascript:void(0);" id="lol">點擊這裡</a> <script>$(fun ...
  • 2)局部變數和全局變數 馬克-to-win:瀏覽器裡面 window 就是 global,通常可以省。nodejs 里沒有 window,但是有個叫 global 的。例 3.2.1<html><head> <meta http-equiv="content-type" content="text/ ...
  • What do we need? 筆者目的是在vue項目打包後的 dist/index.html 文件中寫入本次打包git用戶、最後一次git提交信息,這樣做的目的是便於線上項目的管理和防止同事之間的相互扯皮。最後打包出的效果如下圖: How to do? 版本信息需要記錄 git最後一次提交作者( ...
  • javascript當中null和undefined的==和===的比較 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...