nginx修改upstream不重啟的方法(ngx_http_dyups_module模塊)

為什么80%的碼農都做不了架構師?>>> ??hot3.png

nginx很強大,第三方模塊也不少,淘寶在nginx上很活躍,特別是章亦春,他參與的模塊至少10+, 好了今天主角不是他,是一款動態配置upstream的模塊,這個模塊使用rest接口. 簡單,方便,并且可以不需要重啟nginx。但是有個問題比較明顯,nginx重啟之后,什么都沒了. 1. 安裝 首先安裝nginx動態upstream配置模塊,如果你已經安裝了nginx,那么輕參考ttlsa上的如何安裝nginx第三方模塊,會安裝的請跳過.
# cd /usr/local/src/
# wget https://github.com/yzprofile/ngx_http_dyups_module/archive/master.zip \
-O? ngx_http_dyups_module-master.zip
# unzip ngx_http_dyups_module-master.zip
# wget http://nginx.org/download/nginx-1.4.2.tar.gz
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2
# ./configure --prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module 
\--add-module=../ngx_http_dyups_module-master/
# make
# make install
2. 指令(Directives) 語法: dyups_interface 默認: none 配置段: location 啟用配置upstream的接口 語法: dyups_read_msg_timeout time 默認: 1s 配置段: main 設置從共享內存中讀取commands的超時時間,默認為1秒 語法: dyups_shm_zone_size size 默認: 2MB 配置段: main 設置存儲commands的共享內存 This directive set the size of share memory which used to store the commands. 語法: dyups_upstream_conf path 默認: none 配置段: main 這個指令用來指定upstream配置文件的路徑,他會在啟動的時候加載 語法: dyups_trylock on | off 默認: off 配置段: main 是否啟用鎖,如果啟用了它,同一時刻有人在修改,那么將會返回409. 3. restful接口 GET /detail 獲取所有upstream名稱以及upstream里面的servers信息 /list 獲取upstream列表 /upstream/name 使用upstream名稱獲取upstream信息 POST /upstream/name 更新upstream body 配置內容; body server ip:port; DELETE /upstream/name 刪除upstream,name相應修改 3.1 調用接口響應http狀態碼 500: 需要reload nginx 409: 重新調用一次接口,上個請求被鎖了. 204:調用list或者detail時出現,表示沒有響應內容 其他:你的命令錯誤,請修改 注意:你需要第三方模塊來生成新的配置文件到nginx配置目錄. 作者也沒有說什么第三方模塊,這個插件很好,不能生成配置文件,讓他顯得尤為不足. 4. nginx配置 備注:以下配置有安裝echo模塊.
http {# 從upstream讀取初始upstream配置dyups_upstream_conf? conf/upstream.conf;include conf/upstream.conf;# 默認主機server {listen?? 80;location / {proxy_pass http://$host;}}# 動態配置upstream的接口站點server {listen 81;location / {dyups_interface; # 這個指令表示這邊是接口站點}}# upstream后面的realserver,2臺801,,82server {listen 801;location / {echo 801; }}server {listen 802;location / {echo 802;}}
}
upstream.conf配置
upstream ttlsa1 {server 127.0.0.1:801;
}upstream ttlsa12 {server 127.0.0.1:802;
}
5. 使用方法演示 5.1 添加upstream
# curl -d "server 127.0.0.1:801;server 127.0.0.1:802;" 127.0.0.1:81/upstream/ttlsa3
success
測試
# curl -H "host: ttlsa3" 127.0.0.1
801# curl -H "host: ttlsa3" 127.0.0.1
802
可以看到通過host的ttlsa3可以訪問到upstream配置的兩臺服務器。如果你發現curl幾次都是一樣的,那么輕多試幾次。 5.2 查看upstream詳細信息
# curl 127.0.0.1:81/detail
ttlsa1
server 127.0.0.1:801ttlsa2
server 127.0.0.1:802ttlsa3
server 127.0.0.1:801
server 127.0.0.1:802
5.3 刪除upstream
# curl -i -X DELETE 127.0.0.1:81/upstream/ttlsa1
success# curl 127.0.0.1:81/detail
ttlsa2
server 127.0.0.1:802ttlsa3
server 127.0.0.1:801
server 127.0.0.1:802
5.4 增加帶ip_hash的upstream
# curl -d "ip_hash;server 127.0.0.1:801;server 127.0.0.1:802;" 127.0.0.1:81/upstream/ttlsa4
success# curl 127.0.0.1:81/upstream/ttlsa4
server 127.0.0.1:801
server 127.0.0.1:802
為什么沒有帶ip_hash的信息,本身就無法顯示,那我們在看看weight會不會顯示出來 5.5 增加帶weight的upstream
# curl -d "server 127.0.0.1:801;server 127.0.0.1:802 weight=2;" 127.0.0.1:81/upstream/ttlsa5
success# curl 127.0.0.1:81/upstream/ttlsa5
server 127.0.0.1:801
server 127.0.0.1:801
還是不顯示,雖然沒顯示,但是效果還是有的,大家自己去測試吧. 6. 注意事項 本模塊不能和nginx_upstream_check_module一起使用,接下來的版本會支持。或者可以使用tenengine。淘寶真是不遺余力在推廣他們的tenengine. 7. 結束語 ngx_http_dyups_module帶的功能我很喜歡,但是最大的不足就是不能生成配置文件,所有內容都保存在內存中,希望以后的版本能夠支持。有這個模塊,shell腳本也可以修改upstream,不在需要重啟nginx。 轉載請注明來至運維生存時間:http://www.ttlsa.com/html/3268.html

轉載于:https://my.oschina.net/766/blog/211332

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

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

相關文章

c# 設計原則需要學習嗎_向最好的學習:產品設計原則

c# 設計原則需要學習嗎重點 (Top highlight)In my job as Design Team Lead at SimpleSite, I’ve recently been part of creating a set of Product Design Principles. In this process, I spent a lot of time studying the theory, learning about best practices, and ge…

初學Java-接口

在Java語言中,接口有兩種意思: 一是指概念性的接口,即指系統對外提供的所有服務。類的所有能被外部使用者訪問的方法構成了類的接口 二是指用interface關鍵字定義的實實在在的接口,也稱為接口類型。它用于明確的描述系統對外提供的…

Node.js 2021年開發者報告解讀

大家好,我是若川。持續組織了5個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12 參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。很多人覺得Node.js…

搭建nginx反向代理用做內網域名轉發

為什么80%的碼農都做不了架構師?>>> 情景 由于公司內網有多臺服務器的http服務要映射到公司外網靜態IP,如果用路由的端口映射來做,就只能一臺內網服務器的80端口映射到外網80端口,其他服務器的80端口只能映射到外網的…

外國經典兒童讀物合集pdf_幫助父母在線購買兒童讀物–用戶體驗案例研究

外國經典兒童讀物合集pdfT? As our first group project at GA, we needed to quickly learn how to use several online tools that helped our team of 4 collaborate and communicate while socially distant. Despite the rather extreme circumstances our team was stil…

Windows Azure Marketplace增加對六種語言和HTML5應用程序的支持

對于那些不熟悉Windows Azure Marketplace的人來說,它是一個供數據供應商和開發人員購買和銷售數據集和應用程序的在線市場。 可以在世界上的26個國家使用Windows Azure Marketplace,它現在支持6種語言,包括日語、漢語、法語、德語、西班牙語…

如何優雅處理 async await 錯誤——解讀小而美的 await-to-js 庫

大家好,我是若川。持續組織了5個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12 參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。這是源碼共讀活動第…

同態加法_同態的Spotify

同態加法重點 (Top highlight)When neumorphism was predicted to be one of the top 2020 UI design trends, I wanted to give it a shot. Having said that, I wanted to explore a type that had not gone overboard, neumorphism in Dark Mode.當neumorphism預計為頂部202…

ubuntu清除無效的右鍵打開方式

為什么80%的碼農都做不了架構師?>>> 今天安裝了幾個程序又將它們刪除了之后發現了一個比較嚴重的后遺癥,在相關文件右鍵打開方式中出現了許多實際已經不存在的文件打開程序名。想了多種方法去除,可是效果不佳,最終采用…

咖啡豆(JavaBean)?香

Sun公司對JavaBean的定義為:可以重復利用的軟件組件,它在遵循JavaBean技術規范的基礎上提供特定的功能,這些功能模塊可以組成更大規模的應用系統。 到底什么是JavaBean? 先看一段代碼: /** * author yong * */ public class Add { public st…

新一代的編譯工具 SWC,97年小哥寫的~

大家好,我是若川。持續組織了5個月源碼共讀活動,感興趣的可以點此加我微信 ruochuan12 參與,每周大家一起學習200行左右的源碼,共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。最近前端圈掀起了一…

開始學習jQuery和準備工作

<script>$(document).ready(function(){}); 首先&#xff0c;在頁面頂部添加一行script元素&#xff0c;然后在下一行寫上結束符。 瀏覽器會運行script里所有的Javascript&#xff0c;包括jQuery。 在你的script元素里&#xff0c;添加這段代碼&#xff1a;$(document).r…

粉紅噪音_粉紅的常綠力量

粉紅噪音I use Instagram. But I don’t use Instagram in the way that my daughters, who are 21 and 14, use Instagram. More to the point, Instagram doesn’t use me in quite the same way it uses my daughters.我使用Instagram。 但是&#xff0c;我不會像21歲和14歲…

Sql Server 中存儲過程的output return的區別

看http://zxianf.blog.163.com/blog/static/301207012009114104124969/中片關于Sql Server中存儲過程output和return值的區別 在里面有講解&#xff0c;我在自己本機中測試的結果如下&#xff0c; 1&#xff1a;ReturnValue只能返回0,1,-1這樣的數據&#xff0c;局限性很大 &am…

1個月增長15000 star,zx 庫寫shell腳本真不錯~

大家好&#xff0c;我是若川。持續組織了5個月源碼共讀活動&#xff0c;感興趣的可以點此加我微信 ruochuan12 參與&#xff0c;每周大家一起學習200行左右的源碼&#xff0c;共同進步。同時極力推薦訂閱我寫的《學習源碼整體架構系列》 包含20余篇源碼文章。今天來討論一個牛逼…

灰色邊框陰影_50種暗模式灰色陰影

灰色邊框陰影If you’re an avid dark mode user like me, you’ll know that dark mode isn’t just about white text on black backgrounds. In a single app, a handful of shades of gray give the app some depth. And across various apps, the spectrum of gray become…

Android源代碼下載

為什么80%的碼農都做不了架構師&#xff1f;>>> Android代碼使用git管理, 所以關于Android源碼下載一般來說要安裝git. 本文是講述只使用Eclipse完成Android源碼下載和關聯. 下載Eclipse,目前最新版本是Juno,自帶了EGit插件-->Eclipse Git插件 那么可以使用EGit…

關于nginx調轉404錯誤頁面

在server{}模塊添加如下&#xff1a; error_page 404 /404.html; location /404.html { root /var/www/html/sina/; #“404目錄地址” }轉載于:https://www.cnblogs.com/alang85/archive/2012/03/01/404_error.html

尤雨溪:Vue 3 將成為新的默認版本

過完年&#xff0c;大年初七&#xff0c;Vue3 將成為默認版本&#xff0c;這時感覺我之前寫的幾篇文章都可以抽空更新一版了。尤雨溪推薦神器 ni &#xff0c;能替代 npm/yarn/pnpm &#xff1f;簡單好用&#xff01;源碼揭秘&#xff01;Vue 3.2 發布了&#xff0c;那尤雨溪是…

shell編程系列20--文本處理三劍客之awk常用選項

shell編程系列20--文本處理三劍客之awk常用選項awk選項總結選項 解釋 -v 參數傳遞 -f 指定腳本文件 -F 指定分隔符 -V 查看awk的版本號[rootlocalhost shell]# awk -v num2"$num1" -v var1"$var" BEGIN{print num2,var…