主頁 > 軟體設計 > Javeweb專案微服務集群部署

Javeweb專案微服務集群部署

2021-11-08 09:48:26 軟體設計

** 基于Springcloud的javaweb專案部署集群環境,采用jdk運行(jar包),consul 進行注冊服務監控健康,實作并發量大的時候可以快速回應的高并發效果**
操作程序如下
1.安裝nfs服務
2.安裝相應中間件服務
3.安裝資料庫以及快取資料庫
4.組態檔
5.運行檔案除錯
(監控健康服務節點consul /請求反向代理nginx/)

1.安裝Net file system 共享檔案服務(nfs)

離線安裝(內網/脫網/局域網)/外網直接yum install nfs rpcbind即可~操作如下

NFS 服務需要依賴 RPC 服務,所以這里 NFS 服務端需要安裝 rpcbind 和 nfs-utils,客戶端只需要安裝 nfs-utils,
1.首先確認服務端系統是否已安裝nfs

rpm -qa nfs-utils rpcbind

2.安裝服務
如果計算機可以連接到互聯網,則可以通過以下命令進行安裝:

#服務端
yum install -y nfs-utils rpcbind
#客戶端
yum install -y nfs-utils

但是,很多時候由于安全的原因不能聯網,所以只能離線安裝,
下載離線安裝包,
rpcbind:

libtirpc-0.2.4-0.15.el7.x86_64.rpm
rpcbind-0.2.0-47.el7.x86_64.rpm

nfs-utils:

nfs-utils-1.3.0-0.61.el7.x86_64
tcp_wrappers-7.6-77.el7.x86_64
...
#這個依賴有點多,需要的可以聯系我,就不一一列出來了
百度網盤下載地址:https://pan.baidu.com/s/1mq7ZnWyn33krFcE3AnBQPQ 
提取碼:cfq2 

安裝離線包:

#安裝路徑下的所有rpm包
rpm -Uvh *.rpm --nodeps --force
#安裝特定的rpm包
rpm -hvi dejagnu-1.4.2-10.noarch.rpm

最后,檢查是否安裝成功,
配置:
1.在服務端創建一個共享目錄 /data/share ,作為客戶端掛載的遠端入口,然后設定權限,

mkdir -p /data/share
chmod 755 /data/share

2.修改 NFS 組態檔 /etc/exports

vim /etc/exports
#配置單個ip
/data/share 192.168.0.130(rw,sync,insecure,no_subtree_check,no_root_squash)
/data/share 192.168.0.131(rw,sync,insecure,no_subtree_check,no_root_squash)
#配置ip段
/data/share 192.168.0.130/139(rw,sync,insecure,no_subtree_check,no_root_squash)
#配置所有ip可以掛載
/data/share *(rw,sync,insecure,no_subtree_check,no_root_squash)

說明:
/data/share-共享目錄
192.168.0.130-IP地址,可以是特定的ip地址、ip地址段或所有可以訪問的ip
rw,sync,insecure,no_subtree_check,no_root_squash-訪問控制引數,具體參考下面串列,

引數說明
ro只讀
rw讀寫
sync同步共享-所有資料在請求時寫入共享
async異步共享-nfs 在寫入資料前可以回應請求
securenfs 通過 1024 以下的安全 TCP/IP 埠發送
insecurenfs 通過 1024 以上的埠發送
wdelay如果多個用戶要寫入 nfs 目錄,則歸組寫入(默認)
no_wdelay如果多個用戶要寫入 nfs 目錄,則立即寫入,當使用 async 時,無需此設定
hide在 nfs 共享目錄中不共享其子目錄
no_hide共享 nfs 目錄的子目錄
subtree_check如果共享 /usr/bin 之類的子目錄時,強制 nfs 檢查父目錄的權限(默認)
no_subtree_check不檢查父目錄權限
all_squash共享檔案的 UID 和 GID 映射匿名用戶 anonymous,適合公用目錄
no_all_squash保留共享檔案的 UID 和 GID(默認)
root_squashroot 用戶的所有請求映射成如 anonymous 用戶一樣的權限(默認)
no_root_squashroot 用戶具有根目錄的完全管理訪問權限
anonuid=xxx指定 nfs 服務器 /etc/passwd 檔案中匿名用戶的 UID
anongid=xxx指定 nfs 服務器 /etc/passwd 檔案中匿名用戶的 GID

啟動服務并測驗

1.啟動rpc服務

service rpcbind start
#或者使用如下命令
/bin/systemctl start rpcbind.service

# 查看 NFS 服務項 rpc 服務器注冊的埠串列
rpcinfo -p localhost 

2.啟動nfs服務

service nfs start
#或者使用如下命令亦可
/bin/systemctl start nfs.service
# 啟動 NFS 服務后 rpc 服務已經啟用了對 NFS 的埠映射串列
# rpcinfo -p localhost

3.在另一臺 Linux 上掛載目錄

#查看配置
showmoun -e 192.168.xxx.xxx
#新建目錄
mkdir -p /share
#掛載共享目錄(掛載遠端目錄到本地 /share 目錄)
mount 192.168.0.130:/data/share  /share
#查看掛載目錄狀況
 df -h | grep 10.222.77.86
#如果要卸載目錄
umount  /share

2.安裝注冊服務consul

簡介:Consul是一個分布式高可用的系統,一個發現和配置服務的工具,客戶端可以利用它提供的API注冊和發現服務,及監控檢測功能實作服務的高可用,
下載

wget https://releases.hashicorp.com/consul/1.5.2/consul_1.5.2_linux_amd64.zip

離線環境下則直接拉包進來即可~

解壓


 -方法1
unzip consul_1.5.2_linux_amd64.zip  -d /usr/bin   ##解壓到usr/bin目錄下
unzip consul_1.5.2_linux_amd64.zip                      ##解壓到當前目錄下
 -方法2
 unzip consul_1.5.2_linux_amd64.zip   ##解壓

cp consul /usr/local/bin/                       ##移動

驗證
consul

啟動開發模式(快速啟動一個單節點Consul,但是不能資料持久化,不能用于生產環境)

consul agent -dev

consul server端的啟動命令:

consul agent -server -bootstrap-expect 1  -client 0.0.0.0 -config-dir /etc/consul.d
或者 這樣可以輸出日志
nohup consul agent -server -bootstrap-expect 1 -client 0.0.0.0 -config-dir /etc/basic.json >consul.log &

-config-dir :就是指定加載置檔案的目錄,我們只需要填寫組態檔的目錄就可以幫助我們把該目錄下所有的以.json結尾組態檔加載進去,它的加載順序是根據26個字母的順序加進行加載組態檔的,檔案內容都是json格式的資料,默認后面檔案定義配置會覆寫前面檔案定義的配置,

{
   "ports": {  
       "http": 8501 ,
       "dns": 8601,
       "grpc": 8401,
       "serf_lan": 8311,
       "serf_wan": 8312, 
       "server": 8310
     }

啟動consul server端后,會發現我們的埠全部變成上面描述的埠,consul web UI的埠不在是默認的8500 而變成了 8501 ,另外當我們啟動其他consul時,通過-retry-join 加入server端時會報錯,拒絕連接,原因就是因為server端的埠發生了改動,它默認去連接8301埠,此時-retry-join不能直接寫ip地址,需要寫對應的修改后的serf_lan埠 例如:

consul agent   -data-dir /consul/data2  -advertise 127.0.0.1 -client 0.0.0.0 -join 127.0.0.1:8311

consul描述
查看集群成員

consul members

consul集群
ps:

查看最近歷史日志
consul monitor
停止
gracefully或者forcefully

插入節點注冊服務寫一個json資料:

{
    "service":{
        "name":"test01",
        "tags":[
            "",
            ""
        ],
        "address":"127.0.0.1",
        "port":3010,
        "enable_tag_override": false,
        "check":{
            "deregisterCriticalServiceAfter":"90m",
            "http":"http://127.0.0.1:3010/health",
            "interval":"10s"
        }
    }
}
名詞解釋:
tags:服務的tag,自定義,可以根據這個tag來區分同一個服務名的服務
address:服務注冊到consul的IP,服務發現,發現的就是這個IP
port:服務注冊consul的PORT,發現的就是這個PORT
enable_tag_override:標簽是否允許覆寫
http:指定健康檢查的URL,呼叫后只要回傳20X,consul都認為是健康的
interval:健康檢查間隔時間,每隔10s,呼叫一次健康檢查的URL

重啟Agent

consul agent -dev -config-dir /etc/consul.d/

3.安裝Nginx

1.首先下載Nginx前需要一些插件~
可以查看gcc版本,若無,則就基本無了

gcc -v

安裝gcc,pcre、pcre-devel,zlib,zlib-devel,openssl,openssl-devel操作可以直接百度~

  • gcc是linux下的編譯器在此不多做解釋,感興趣的小伙伴可以去查一下相關資料,它可以編譯 C,C++,Ada,Object C和Java等語言.
  • pcre是一個perl庫,包括perl兼容的正則運算式庫,nginx的http模塊使用pcre來決議正則運算式,所以需要安裝pcre庫,
  • zlib庫提供了很多種壓縮和解壓縮方式nginx使用zlib對http包的內容進行gzip,
  • openssl是web安全通信的基石,沒有openssl,可以說我們的資訊都是在裸奔

正式安裝nginx

1、下載nginx安裝包

wget http://nginx.org/download/nginx-1.9.9.tar.gz  

2、把壓縮包解壓 usr/local/java

tar -zxvf  nginx-1.9.9.tar.gz

3、切換到cd /usr/local/java/nginx-1.9.9/下面
執行三個命令:

初始化默認配置
./configure
 編譯
make
安裝
make install

4、切換到/usr/local/nginx安裝目錄,nginx的組態檔nginx.conf檔案,主要也就是埠
5、啟動nginx服務 切換目錄到/usr/local/nginx/sbin下面

./nginx

查看nginx服務是否啟動成功

ps -ef | grep nginx

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/352174.html

標籤:其他

上一篇:2021-11-7總結

下一篇:prometheus 添加 login 登錄認證界面(nginx + flask 實作)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more