亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nginx + consul + upsync 完成動態(tài)負(fù)載均衡的方法詳解

 更新時間:2020年11月06日 10:16:06   作者:暮色月下  
這篇文章主要介紹了Nginx + consul + upsync 完成動態(tài)負(fù)載均衡,需要的朋友可以參考下

前置知識

DNS域名解析過程

  • 在瀏覽器輸入域名,訪問后
  • 在瀏覽器緩存中查找是否有對應(yīng)的ip和端口,如果有直接訪問對應(yīng)ip和端口
  • 瀏覽器緩存中沒有則在本地host文件中查找是否有對應(yīng)的~~
  • 本地host文件中沒有則去DSN服務(wù)器上查找

 外網(wǎng)映射

顧名思義,就是將本地的ip地址,映射出一個公網(wǎng)ip,可以供所有主機(jī)(連接到互聯(lián)網(wǎng)的計算機(jī))訪問

  • 疑問:為什么需要使用外網(wǎng)映射

例如做微信支付時的第三方接口回調(diào),微信回調(diào)你的接口必須是一個公網(wǎng)ip地址,不然他根本無法給你回調(diào),導(dǎo)致你本地?zé)o法測試。這個時候你就需要外網(wǎng)映射來將自己的ip地址映射成一個公網(wǎng)(可供主機(jī)訪問的網(wǎng)絡(luò))

  • 疑問:如何實現(xiàn)外網(wǎng)映射?

通過第三方工具完成外網(wǎng)映射,例如natapp,ngrok,具體如何使用自行進(jìn)入官網(wǎng)觀看,
ngrok官網(wǎng).
natapp官網(wǎng).(推薦)

 nginx 核心知識

什么是nginx

nginx是一款輕量級的web服務(wù)器/反向代理服務(wù)器,很小并且支持非常高的并發(fā)量

應(yīng)用場景

http服務(wù)器 :做靜態(tài)服務(wù)器、圖片服務(wù)器
虛擬主機(jī)配置 :將一臺服務(wù)器、拆分成多個網(wǎng)站部署。(可以通過配置不同的域名映射或者不同的端口來完成虛擬主機(jī)的配置)
反向代理: 使用反向代理隱藏真實ip地址
反向代理應(yīng)用場景:
你有3臺服務(wù)器分別提供不同的服務(wù),這個時候使用nginx來配置通過域名映射來完成不同三臺服務(wù)器的訪問,或者通過端口也可以??梢噪[藏3臺提供服務(wù)器的真實ip地址,nginx通過內(nèi)部轉(zhuǎn)發(fā)到不同的服務(wù)器,抓包工具也只能獲取到nginx服務(wù)器的ip地址(沒有基點)。
負(fù)載均衡
安全配置
使用Nginx搭建API接口網(wǎng)關(guān),解決網(wǎng)站跨域問題
實現(xiàn)網(wǎng)站靜態(tài)資源和動態(tài)資源分離
實現(xiàn)防止DDOS(流量攻擊)

名詞解釋

四層負(fù)載均衡

運行在運輸層,常使用TCP協(xié)議

七層負(fù)載均衡

運行在應(yīng)用層,常使用Http協(xié)議

負(fù)載均衡

作用: 能夠減輕單臺服務(wù)器的壓力,故障轉(zhuǎn)移(重試機(jī)制)如果一臺服務(wù)器宕機(jī)了,直接輪詢到下一臺服務(wù)器、健康檢查,在nginx中使用upstream配置上游服務(wù)器,nginx中

故障轉(zhuǎn)移

如果訪問其中一臺服務(wù)器,發(fā)現(xiàn)服務(wù)宕機(jī)了,或者有延遲,可以配置故障轉(zhuǎn)移直接切換到另一臺服務(wù)器

### 連接到上游服務(wù)器的時間
		proxy_connect_timeout 1s;
		### 發(fā)送請求超時時間
 proxy_send_timeout 1s;
		### 接受相應(yīng)超時時間
 proxy_read_timeout 1s;

動態(tài)負(fù)載均衡

在upstream中的配置不再是靜態(tài)的,而是在注冊中心上動態(tài)拉取配置,達(dá)到動態(tài)負(fù)載均衡的功能。

Nginx + consul + upsync 完成動態(tài)負(fù)載均衡

 1、安裝centos7的基礎(chǔ)環(huán)境

# 基礎(chǔ)命令
 # 安裝netstat命令
yum install netstat
 # 查看所有tcp端口使用情況
 netstat -ntlp
 # 查看當(dāng)前服務(wù)進(jìn)程
 ps -ef 可選:[ | grep nginx]
 # 強(qiáng)制殺死端口對應(yīng)的程序
 kill -9 pid進(jìn)程號
 
# 配置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
# 安裝基本環(huán)境
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
yum install wget
yum install unzip

2、安裝consul (服務(wù)注冊與發(fā)現(xiàn))

# 下載它的安裝包,wget -c 中的 -c 表示斷點續(xù)傳
wget -c https://releases.hashicorp.com/consul/1.8.5/consul_1.8.5_linux_amd64.zip
# 解壓壓縮包
upzip unzip consul_1.8.5_linux_amd64.zip
# 執(zhí)行./consul命令,執(zhí)行后出現(xiàn) Usage: consul [--version] [--help] <command> [<args>] 這一行以及下面的一些參數(shù)則代表這個consul沒問題
./consul
# 關(guān)閉防火墻
systemctl stop firewalld
# 啟動consul,這個ip填寫自己計算機(jī)的ip,如果是虛擬機(jī)就填虛擬機(jī)的ip,centos查看ip地址可以用ip addr,window查看ip用 ipconfig
./consul agent -dev -ui -node=consul-dev -client=192.168.254.134
# 當(dāng)然,也可以使用后臺運行的方式,這樣子輸出的日志回到同級的nohup.out文件中
nohup ./consul agent -dev -ui -node=consul-dev -client=192.168.254.134 &
# 訪問consul 的web頁面
192.168.254.134:8500

# 查看并關(guān)閉consul的后臺進(jìn)程,我這里寫的19854是jobs -l查詢到的進(jìn)程pid
jobs -l
kill -9 19854

3、安裝nginx 并且為其添加upsync模塊

# 下載upsync模塊并且將其解壓
wget -c https://github.com/weibocom/nginx-upsync-module/archive/master.zip
unzip nginx-upsync-module-master.zip
# 下載nginx
wget -c http://nginx.org/download/nginx-1.9.9.tar.gz
# 解壓到當(dāng)前目錄
tar -zxvf nginx-1.9.9.tar.gz
# 配置一個nginx的用戶以及用戶組,-s /sbin/nologin nginx代表該用戶是無法登錄到主機(jī)的
groupadd nginx
useradd -g nginx -s /sbin/nologin nginx
# 這兩個文件夾會在編譯nginx時指定
mkdir -p /var/tmp/nginx/client/
mkdir -p /usr/local/nginx
# 進(jìn)入到nginx的解壓后文件夾的目錄下
cd nginx-1.9.9 
# 編譯 nginx ,--prefix 代表nginx安裝的目錄。其中指定了用戶和用戶組,以及上面創(chuàng)建的文件夾并且添加了upsync模塊,由于upsync解壓在nginx同級目錄下,所以這里使用..來指定到它
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --add-module=../nginx-upsync-module-master
make && make install
## 進(jìn)入到剛剛nginx安裝的目錄,也就是/usr/local/nginx目錄中,進(jìn)入conf目錄中編輯conf目錄的文件內(nèi)容
upstream myserver {
 server 127.0.0.1:11111;# 這個固定的,不用理
 # springbootserver : key的值,upsync_timeout 超時時間3秒,upsync_interval 間隔時間 ,upsync_type 類型consul,strong_dependency 增強(qiáng)依賴 
 upsync 192.168.254.134:8500/v1/kv/upstreams/springbootserver upsync_timeout=3000ms upsync_interval=500ms upsync_type=consul strong_dependency=off;
 # 將拉取下來的配置文件放在以下配置的目錄中 
 upsync_dump_path /usr/local/nginx-1.9.9/conf/upsync_dump.conf;

 }
 # 將server中的location指定為剛剛創(chuàng)建的upstream(上游服務(wù)器)
 location / {
 proxy_pass http://myserver;
 index index.html index.htm;
 }
# 進(jìn)入到sbin目錄下,啟動nginx
./nginx

4、進(jìn)行測試

  • 本機(jī)啟動2個服務(wù),分別為8080和8081,ip地址為192.168.0.116
  • 使用linux命令為consul指定2個key value,192.168.254.134是consul的ip地址
# 使用curl 請求,一定要是put請求
curl -X PUT http://192.168.254.134:8500/v1/kv/upstreams/springbootserver/192.168.0.116:8080

curl -X PUT http://192.168.254.134:8500/v1/kv/upstreams/springbootserver/192.168.0.116:8081

#或者使用postman調(diào)用consul提供的api來添加key,value
http://192.168.254.134:8500/v1/kv/upstreams/springbootserver/192.168.0.116:8081

# 甚至可以圖形化界面進(jìn)行操作,手動添加key value,手動添加時注意如果是創(chuàng)建文件夾需要在最后加一個正斜杠 : /

5、在consul圖形化頁面添加key對應(yīng)的value來指定負(fù)載均衡的算法

{"weight":1, "max_fails":2, "fail_timeout":10, "down":0}

在這里插入圖片描述

然后由于wget下載的速度有時候比較慢,這邊上傳了文件

文件鏈接

到此這篇關(guān)于Nginx + consul + upsync 完成動態(tài)負(fù)載均衡的文章就介紹到這了,更多相關(guān)Nginx + consul + upsync 動態(tài)負(fù)載均衡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nginx設(shè)置超時時間的問題及解決方案

    nginx設(shè)置超時時間的問題及解決方案

    程序在處理大量數(shù)據(jù),接口超過1分鐘(默認(rèn)的)未返回數(shù)據(jù),導(dǎo)致等待超時,出現(xiàn)這種情況,我們可以先優(yōu)化程序,縮短執(zhí)行時間,可以調(diào)大nginx超時限制的參數(shù),使程序可以正常執(zhí)行,本文介紹nginx設(shè)置超時時間及504 Gateway Time-out的問題解決方案,一起看看吧
    2024-02-02
  • Nginx平滑升級的詳細(xì)操作方法

    Nginx平滑升級的詳細(xì)操作方法

    這篇文章主要介紹了Nginx平滑升級的詳細(xì)操作方法,適應(yīng)編譯安裝ningx的情況,yum安裝的直接用yum更新即可,需要的朋友可以參考下
    2014-03-03
  • nginx日志中添加請求的response日志(推薦)

    nginx日志中添加請求的response日志(推薦)

    這篇文章主要介紹了nginx日志中添加請求的response日志,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • Nginx如何限制IP訪問只允許特定域名訪問

    Nginx如何限制IP訪問只允許特定域名訪問

    我們在使用的時候會遇到很多的惡意IP攻擊,這個時候就要用到Nginx 禁止IP訪問了,下面這篇文章主要給大家介紹了關(guān)于Nginx如何限制IP訪問只允許特定域名訪問的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 修改Nginx與Apache上傳文件大小限制

    修改Nginx與Apache上傳文件大小限制

    這篇文章主要介紹了修改Nginx與Apache上傳文件大小限制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 隱藏Nginx版本號的最簡單的方法

    隱藏Nginx版本號的最簡單的方法

    這篇文章主要介紹了隱藏Nginx版本號的最簡單的方法,對外隱藏Nginx版本號有利于維護(hù)服務(wù)器安全,需要的朋友可以參考下
    2015-04-04
  • nginx反向代理配置去除前綴案例教程

    nginx反向代理配置去除前綴案例教程

    這篇文章主要介紹了nginx反向代理配置去除前綴案例教程,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Nginx實現(xiàn)不同域名輸出不同的服務(wù)器頭信息方法

    Nginx實現(xiàn)不同域名輸出不同的服務(wù)器頭信息方法

    這篇文章主要介紹了Nginx實現(xiàn)不同域名輸出不同的服務(wù)器頭信息方法,本文使用了一個ngx_headers_more模塊實現(xiàn)這個特殊需求,需要的朋友可以參考下
    2015-02-02
  • Nginx四層負(fù)載均衡的配置指南

    Nginx四層負(fù)載均衡的配置指南

    當(dāng)一臺服務(wù)器的單位時間內(nèi)的訪問量越大時,服務(wù)器壓力就越大,大到超過自身承受能力時,服務(wù)器就會崩潰.為了避免服務(wù)器崩潰,讓用戶有更好的體驗,我們通過負(fù)載均衡的方式來分擔(dān)服務(wù)器壓力,這篇文章主要給大家介紹了關(guān)于Nginx四層負(fù)載均衡配置的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Nginx配置WebSocket反向代理的實現(xiàn)示例

    Nginx配置WebSocket反向代理的實現(xiàn)示例

    本文主要介紹了Nginx配置WebSocket反向代理的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08

最新評論