為什么80%的碼農都做不了架構師?>>> ??
# 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