debian nginx upsync consul 實現動態負載

1. consul?安裝

wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install consul

使用以上命令可直接安裝consul。

網上找好了好多方法都安裝不了,該方法在consul官網上找到

1.1. 測試consul

nohup consul agent -server -bootstrap-expect 1 -data-dir /data/consul -node=ali_1 -ui -client=0.0.0.0 -bind=0.0.0.0 &

執行代碼運行consul,參數說明如下,

nohup consul agent -dev -ui -node=consul-dev -client=xxx.xxx.xxx.xx &用來啟動Consul代理,命令各部分的含義如下:

nohup: 當用戶退出終端時,使用nohup啟動的程序仍會繼續在后臺運行。
consul agent: 啟動Consul的代理進程,它是Consul服務的核心組件,負責服務發現、健康檢查以及集群內部的通信和管理。
-dev: 標志表明 Consul 代理將以開發者模式啟動。在該模式下,Consul將會在單節點內創建一個完整的Consul集群,數據存儲在內存中,重啟后數據將丟失,適用于快速測試和開發環境。
-ui: 開啟內置的Web用戶界面,這樣可以通過瀏覽器訪問Consul提供的管理界面,默認監聽在本地8500端口的 /ui 路徑下。
-node=consul-dev: 設置當前Consul代理節點的名稱為consul-dev,用于標識集群中的唯一節點。
-client=xxx.xxx.xxx.xxx: 指定Consul代理監聽客戶端請求的IP地址為xxx.xxx.xxx.xxx,這意味著其他服務或者工具需要通過這個IP地址與Consul代理進行交互,比如注冊服務、查詢服務等。
&: 在命令末尾加上&符號表示讓命令在后臺運行,即以守護進程的方式啟動Consul代理,不會阻塞

注意,需要重新開個終端驗證

檢測防火墻開放8500端口(本人這里使用阿里云,只需要云后臺配置即可,網友可以自已百度)

使用以下命令測試服務是否有返回

curl http://ip:8500/v1/catalog/nodes

正常情況下有如下退回

2.?編釋及安裝nginx

nginx-upsync 是一個開源的 Nginx 擴展模塊,用于實現動態的負載均衡和自動發現后端服務器。該模塊的源碼和相關文件可以在以下 GitHub 地址找到:https://github.com/weibocom/nginx-upsync。

2.1?下載nginx-upsync????????

wget https://github.com/weibocom/nginx-upsync-module/archive/v2.1.0.tar.gz
tar -zxvf v2.1.0.tar.gz

下載upsync并解壓到當前目錄

2.2?下載nginx源碼

wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar -zxvf nginx-1.20.1.tar.gz

從nginx官網下載nginx源碼并解壓

2.3?安裝編釋所屬的依賴

sudo apt update
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

2.4?配置nginx編釋環境并將upsync模塊增加到配置中

# 配置編譯選項,添加nginx-upsync-module
./configure --add-module=/path/to/nginx-upsync-module

2.5?編譯并安裝 Nginx
?

make
sudo make install

安裝完成后,nginx默認安裝位置是 /usr/local/nginx

3.?測試站點

3.1?配置2個測試站點

分別創建兩個目錄(/var/www/web1,/var/www/web2)并在目錄里放入index.html文件
文件內容可以自已定義,只要能區分是那個站即可,以下是本人的文件內容

<html>
<body>
hello word 111111
<body>
</html>

另一個文件內容是222222?請自行修改

3.2?修改nginx配置


#user  nobody;
worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;upstream demo {ip_hash;server 192.168.100.3:80; #upsync 需要獲取的consul地址upsync 127.0.0.1:8500/v1/kv/upstreams/skuprice upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;#獲取后生成的文件名upsync_dump_path /var/www/server/servers_skuprice.conf;#引用生成的配置文件include /var/www/server/servers_skuprice.conf;}server {listen       8081;location / {proxy_pass         http://demo ; }}server {listen       8000;root /var/www/web1;index index.php;location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {include fastcgi.conf;fastcgi_pass unix:/run/php/php8.2-fpm.sock;fastcgi_buffers 16 16k;fastcgi_buffer_size 32k;}}server {listen       8001;root /var/www/web2;index index.php;location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {include fastcgi.conf;fastcgi_pass unix:/run/php/php8.2-fpm.sock;fastcgi_buffers 16 16k;fastcgi_buffer_size 32k;}}}

配置文件中增加了2個測試站點,和一個代理站點,其中測試站點端口為:8000,8001。代理站點端口:8010。

nginx啟動里會提示找不到文件?/var/www/server/servers_skuprice.conf
所以需要事先創建一個空的文件到指定的目錄下

3.3?配置consul數據

curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8500/v1/kv/upstreams/skuprice/127.0.0.1:8000
curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8500/v1/kv/upstreams/skuprice/127.0.0.1:8001

使用 curl命令,初始化兩個KV信息。將設置服務器權重為1

3.3?啟動nginx

sudo /usr/local/nginx/sbin/nginx

3.4?測試效果

訪問ip:8010站點可以看到

3.5 遷換站點:

#遷換8001
curl -X PUT -d '{"weight":1, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8500/v1/kv/upstreams/skuprice/127.0.0.1:8000
curl -X PUT -d '{"weight":100, "max_fails":2, "fail_timeout":10}' http://127.0.0.1:8500/v1/kv/upstreams/skuprice/127.0.0.1:8001

通過更新站點的重權調整訪問站點。

4. 總結:

? ? ? ? 將方案適合對有穩定要求,不方便斷線更新站點非常合適,配合DevOps工具,可以做到無感更新,最對于比較舊的應用,像使用session技術的應用,可能會出現丟失登陸狀態等情況。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14611.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MariaDB 給指定列值自動加密(持久數據加觸發器)

文章目錄 代碼插入時&#xff0c;自動加密更新時&#xff0c;自動加密查看觸發器數據操作示例update數據取出解密取 注意一次嘗試&#xff0c;看加密后數據長度 參考鏈接&#xff1a; 一篇非常好的講解觸發器的文章&#xff1a;示例、原理MySQL/MariaDB觸發器。 用觸發器自動加…

前端工程化07-常見的包管理工具npm、yarn、cnpm、npx、pnpm

8、包管理工具 8.1、包管理工具概述 npm包管理工具、在安裝node的時候這個東西就已經安裝過了&#xff0c;通過npm去管理包的時候這個時候回有一個配置文件叫做package.json,他是以json的方式來書寫對應的一個配置文件&#xff0c;這個配置文件是可以添加特別多的一些字段的&…

input輸入多行文本,保存為.dot文件和對應的.txt文件

需求 不管是上面的dot還是這個dot 變成 input輸入文本按“# ? ?”結束保存在dot文本文件夾下&#xff0c;用txt保存每個文件文件名&#xff1a; 編號. 第二行有字文字 時間戳 代碼 首先&#xff0c;我會創建一個Python腳本&#xff0c;它將接受用戶的輸入&#xff0c;直到…

案例題(第二版)

案例題目 信息系統架構設計 基本概念 信息系統架構&#xff08;ISA&#xff09;是對某一特定內容里的信息進行統籌、規劃、設計、安排等一系列的有機處理的活動。特點如下 架構是對系統的抽象&#xff0c;它通過描述元素、元素的外部可見屬性及元素之間的關系來反映這種抽象…

css屬性之間總是有換行

問題 在create-next-app創建項目的時候,只要我沒有選擇eslint的時候&#xff0c;就不會在保存的時候每個屬性之間有換行&#xff0c;但是創建項目的時候選擇eslint&#xff0c;保存的時候就會在每條屬性間有換行 回答 當你使用 create-next-app 創建項目并選擇使用 ESLint 時…

k8s 1.28.10 瀏覽器訪問6443查看api,需要證書

添加證書 使用client-certificate-data和client-key-data生成一個p12文件 1.生成client-certificate-data grep client-certificate-data ~/.kube/config | head -n 1 | awk {print $2} | base64 -d >> kubecfg.crt2.生成client-key-data grep client-key-data ~/.kub…

萬象生圖,一個windows文生圖的軟件

網址 https://support.qq.com/products/637894/?id155553 支持文生圖&#xff0c;支持提示詞本地翻譯&#xff0c;支持提示詞權重語法&#xff0c;支持樣例和風格 支持圖處理&#xff0c;包括去除背景和圖像放大 支持各種快速生圖模型&#xff0c;如LCM、TCD、Lightning、…

為什么self-attention要除以一個根號dk

簡單說法是為了讓方差到1&#xff0c;推公式也好推。但是沒幾個人說為什么方差要到1. 如果不除以根號dk&#xff0c;顯然QK有可能很大&#xff0c;這就讓softmax更有能力得到接近one-hot的結果。這本應是好的&#xff0c;但是從實踐來看&#xff0c;我們并不要求一定要輸出one-…

K8S中YAML案例

目錄 案例&#xff1a;自主式創建service并關聯上面的pod 案例&#xff1a;部署redis 案例&#xff1a;部署myapp 案例&#xff1a;部署MySQL數據庫 總結 1.K8S集群中訪問流向 K8S集群外部&#xff1a;客戶端——nodeIP&#xff1a;nodeport——通過target port——podIP…

Java入門基礎學習筆記44——String

為什么要學習String的處理呢&#xff1f; 開發中&#xff0c;對字符串的處理是非常常見的。 String是什么&#xff1f;可以做什么&#xff1f; java.lang.String 代表字符串。可以用來創建對象封裝字符串數據&#xff0c;并對其進行處理。 1、創建對象 2、封裝字符串數據 3…

Linux安裝zsh并配置oh-my-zsh

配置oh-my-zsh 查看當前shell安裝zsh切換到zsh配置ohmysh 查看當前shell cat /etc/shells# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash安裝zsh sudo apt install zsh# /etc/shells: valid login s…

blender 烘焙渲染圖片,已經導出fbx,導出貼圖。插件生成圖片

1.新建一個模型。選擇資產瀏覽器的材質&#xff0c;并拖動到模型身上&#xff0c;如下圖。資產瀏覽器的材質可以網上找。 2.打開著色器面板。正下方著色器窗口中&#xff0c;點擊空白取消選擇&#xff0c;然后右擊-添加-著色器-原理化BSDF&#xff0c;右擊-添加-紋理-圖像紋理。…

報錯 Attempt to assign to const or readonly variable 前端 const

Attempt to assign to const or readonly variable 遇到這個錯是因為給const聲明的變量進行第2次賦值。 因為const聲明的變量只能進行一次賦值&#xff0c;即常量。 ES6標準引入了新的關鍵字 const 來定義常量&#xff0c;const 與 let 都具有塊級作用域。 const 定義的是常量…

寶塔Linux下安裝EMQX服務并設置匿名訪問

簡述 之前有在Windows和Linux下搭建過EMQX服務并且使用方面都沒問題,但那都是使用的用戶和密碼方式訪問,且前提都是通過瀏覽器進入EMQX的配置頁面設置的屬性; 但這次使用的是騰訊云租用的寶塔Liniux,由于沒有瀏覽器只能通過命令行方式修改EMQX配置以達到目的;由于事先沒看…

【博主推薦】HTML5實現520表白、情人節表白模板源碼

文章目錄 1.設計來源1.1 表白首頁1.2 甜蜜瞬間11.3 甜蜜瞬間21.4 甜蜜瞬間31.5 甜蜜瞬間41.6 甜蜜瞬間51.7 甜蜜瞬間61.8 永久珍藏 2.效果和源碼2.1 頁面動態效果2.2 頁面源代碼2.3 源碼目錄2.4 更多為愛表白源碼 3.源碼下載地址 作者&#xff1a;xcLeigh 文章地址&#xff1a;…

國內安裝Axure RP Extension for Chrome插件

1、到項目的當前目錄來 2、后綴改成.rar 3、解壓成文件夾 4、拖入chrome中 我這里直接準備好了文件 鏈接&#xff1a;https://pan.baidu.com/s/1V98tx5LgXZRoKY7XjnIcrA 提取碼&#xff1a;gh13

中國上市公司融資約束指數數據上市公司SA指數與WW指數(2000-2023年)

上市公司融資約束指數&#xff0c;是用來評估公司面臨的融資限制程度的工具。SA指數由Hadlock和Pierce開發&#xff0c;基于公司規模和年齡計算&#xff0c;其中較小且較年輕的公司通常會有更高的指數值&#xff0c;表明其融資約束較大。另一方面&#xff0c;WW指數由Whited和W…

Win11徹底關閉“同意個人數據跨境傳輸”

Win11徹底關閉“同意個人數據跨境傳輸” 1 關閉對話框2. 修改Microsoft.CloudExperienceHost.winmd 1 關閉對話框 SHIFTF10WinEWinR輸入taskmgr關閉Microsoft賬戶進程 2. 修改Microsoft.CloudExperienceHost.winmd 找到C:\Windows\SystemApps\Microsoft.Windows.CloudExperi…

【靜態分析】在springboot使用太阿(Tai-e)03

參考&#xff1a;使用太阿&#xff08;Tai-e&#xff09;進行靜態代碼安全分析&#xff08;spring-boot篇三&#xff09; - 先知社區 1. JavaApi 提取 1.1 分析 預期是提取controller提供的對外API&#xff0c;例如下圖中的/sqli/jdbc/vuln 先看一下如何用tai-e去獲取router…

淺談分布式系統

目錄 一、單機架構二、分布式架構1、應用服務與數據庫分離2、負載均衡3、數據庫讀寫分離4、引入緩存5、數據庫分庫分表6、引入微服務 一、單機架構 單機架構&#xff0c;只有一臺服務器&#xff0c;這個服務器負責所有工作。 絕大多數公司的產品&#xff0c;都是這種單機架構。…