日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Nginx 反向代理,負載均衡及搭建高可用集群

Nginx

前提準備

首先是對于linux環境下的安裝(本地機器是windows版本,大家可以使用Vmware,但是需要配置網絡連接等,這里就不在展示虛擬機上的演示。這里使用到個人的阿里云云服務器搭配上xftpxshell來進行文件的上傳與連接命令行的輸入)

Nginx 反向代理,負載均衡及搭建高可用集群

 

注意:以下命令皆為centos7所使用。

下面開始進行系列依賴的安裝:

Nginx 反向代理,負載均衡及搭建高可用集群

 

gcc 安裝:

yum -y install gcc automake autoconf libtool make
yum install gcc gcc-c++
復制代碼

pcre 安裝

cd /usr/local/src
wget    https://netix.dl.sourceforge.net/project/pcre/pcre/8.40/pcre-8.40.tar.gz
tar -zxvf pcre-8.40.tar.gz
cd pcre-8.40
./configure
make && make install
復制代碼

zlib 安裝

cd /usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz      wget  http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
yum install -y zlib zlib-devel
復制代碼

openssl 安裝

cd /user/local/scr
wget https://www.openssl.org/source/openssl-1.0.1t.tar.gz
tar -zxvf openssl-1.0.1t.tar.gz
復制代碼

nginx 安裝

cd /user/local/scr
wget http://nginx.org/download/nginx-1.1.10.tar.gz
tar zxvf nginx-1.1.10.tar.gz
cd nginx-1.1.10
./configure
make && make install
啟動nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
復制代碼

完成之后可以先行查看自己的自己的服務器開放了哪些的端口:

firewall-cmd --list-all
復制代碼
Nginx 反向代理,負載均衡及搭建高可用集群

 

若是沒有進行端口的開發可以使用如下命令進行端口的開放:

firewall-cmd --zone=public --add-port=80/tcp --permanent
# 其中80 可以進行修改為自己想要開放的端口,當然前提下是你要打開了防火墻。
復制代碼

防火墻設置

systemctl status firewalld.service # 查看防火墻狀態
systemctl stop firewalld.service   # 關閉防火墻
systemctl start firewalld.service  # 打開防火墻
復制代碼

nginx基礎命令

  1. 再完成以上的基礎準備之后,已經對nginx進行了啟動,查看當前的nginx情況:
ps -ef | grep nginx
復制代碼
  1. 對nginx進行啟動,停止與重啟。
cd /usr/local/sbin   # 注意要進入到安裝的nginx對應的相關的目錄下才能夠執行相關聯的語句。
./nginx # 表示啟動nginx
./nginx -s stop    # 表示對nginx 進行停止。
./nginx - s reload # 表示重啟,一般在配置文件進行修改之后使用。
復制代碼

在啟動完成之后就可以進行ip地址的訪問(因為對于nginx來說默認是啟動在80 端口,所以可直接進行ip地址的訪問)

Nginx 反向代理,負載均衡及搭建高可用集群

 

配置文件講解:

首先是配置文件地址:/usr/local/nginx/conf/nginx.conf。

對于nginx配置文件來說分為三大塊:

全局快

從配置文件開始到 events 塊之間的內容,主要會設置一些影響 nginx 服務器整體運行的配置指令,主要包括配置運行 Nginx 服務器的用戶(組)、允許生成的 worker process 數,進程 PID 存放路徑、日志存放路徑和類型以及配置文件的引入等。

比如下面第一行配置的:

worker_processes  1;
復制代碼

這是 Nginx 服務器并發處理服務的關鍵配置,worker_processes 值越大,可以支持的并發處理量也越多,但是會受到硬件、軟件等設備的制約

events 塊

events {
    worker_connections  1024;
}
復制代碼

events 塊涉及的指令主要影響 Nginx 服務器與用戶的網絡連接,常用的設置包括是否開啟對多 work process 下的網絡連接進行序列化,是否允許同時接收多個網絡連接,選取哪種事件驅動模型來處理連接請求,每個 word process 可以同時支持的最大連接數等。

上述例子就表示每個 work process 支持的最大連接數為 1024. 這部分的配置對 Nginx 的性能影響較大,在實際中應該靈活配置。

http 塊

 

http {
    include       mime.types;
    default_type  Application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
       server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
…………………………
復制代碼

這算是 Nginx 服務器配置中最頻繁的部分,代理、緩存和日志定義等絕大多數功能和第三方模塊的配置都在這里。

需要注意的是:http 塊也可以包括http 全局塊server塊

http 全局塊

http 全局塊配置的指令包括文件引入、MIME-TYPE 定義、日志自定義、連接超時時間、單鏈接請求數上限等。

server 塊

這塊和虛擬主機有密切關系,虛擬主機從用戶角度看,和一臺獨立的硬件主機是完全一樣的,該技術的產生是為了節省互聯網服務器硬件成本。

每個 http 塊可以包括多個 server 塊,而每個 server 塊就相當于一個虛擬主機。

而每個 server 塊也分為全局 server 塊,以及可以同時包含多個 locaton 塊。

1, 全局server塊

最常見的配置是本虛擬機主機的監聽配置和本虛擬主機的名稱或 IP 配置。

2,location塊

一個 server 塊可以配置多個 location 塊。

這塊的主要作用是基于 Nginx 服務器接收到的請求字符串(例如 server_name/uri-string),對虛擬主機名稱(也可以是 IP 別名)之外的字符串(例如 前面的 /uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行。

反向代理

何為反向代理:

在了解反向代理之前,先了解正向代理:

正向代理:如果把局域網外的 Internet 想象成一個巨大的資源庫,則局域網中的客戶端要訪問 Internet,則需要通過代理服務器來訪問,這種代理服務就稱為正向代理。簡而言之就是起到一個幫助到達目標網絡的作用。

反向代理:反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問,我們只需要將請求發送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數據后,再返回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器地址,隱藏了真實服務器 IP 地址。

舉個例子:我們在本地環境上安裝一個Tomcat 服務器,對于tomact來說默認訪問是8080端口,但是我們不想輸入80端口就可以直接進行訪問,就需要我們直接訪問80 端口 表示訪問到nginx服務器,然后進行配置文件的配置,將請求轉發到我們的tomcat服務器上。

我們可以進行如下配置:

在http模塊中 進行如下配置:

 server {
        listen       80;
     #  server_name  localhost;
       server_name 121.*.*.34;# 表示監聽的服務的名稱是 如下地址
        location / {
            root   html;
           proxy_pass http://127.0.0.1:8080; # 表示進行轉發的地址,首先需要在本機安裝tomact 并啟動 自行官網下載即可
            index  index.html index.htm;
        }
        }
復制代碼

完成配置之后記得重啟服務:即可看到如下展示:表示從80端口跳轉到8080端口

Nginx 反向代理,負載均衡及搭建高可用集群

 

實例二

在上面的案例中我們訪問的還是默認的80端口,若是我們想要更換端口去訪問呢,我們若是想要訪問其他的端口,或者說是訪問帶路徑的信息呢,該如何進行操作,這個時候就可以添加一個server,因為一個server監聽一個唯一的端口,這里我們可以再創建一個server 選中我們監聽的端口信息。在location中進行配置即可。

 server {
        listen      3308; # 我們監聽不同的端口信息
        server_name  localhost;
        location  ~ /edu/  {
        # 在tomcat 下的webpage下創建對應的目錄,下添加一個index.html 頁面。
            proxy_pass http://127.0.0.1:8080;
        }
    }
復制代碼
Nginx 反向代理,負載均衡及搭建高可用集群

 

這個時候我們就可以訪問如下網址:可以發現如下的3308(自己測試時候要提前開啟端口)端口搭配上edu路徑和對應的index.html 就可以訪問到我們tomact 服務器下面的對應的頁面信息。

Nginx 反向代理,負載均衡及搭建高可用集群

 

負載均衡

概念

負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應足夠快,給用戶很好的體驗。快速增長的訪問量和數據流量催生了各式各樣的負載均衡產品,很多專業的負載均衡硬件提供了很好的功能,但卻價格不菲,這使得負載均衡軟件大受歡迎, nginx 就是其中的一個,在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服務,而且 Nginx 提供了幾種分配方式(策略):

  1. 輪詢(默認) 每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器 down 掉,能自動剔除。
  2. weight weight 代表權,重默認為 1,權重越高被分配的客戶端越多 指定輪詢幾率,weight 和訪問比率成正比,用于后端服務器性能不均的情況。 例如: upstream server_pool { server 121.111.2.34 weight = 10; server 121.111.2.35 weight = 10; } 復制代碼
  3. ip_hash 每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決 session 的問題。 upstream server_pool{ ip_hash; server 121.111.2.34 weight = 10; server 121.111.2.35 weight = 10; } 復制代碼
  1. fair(第三方)

按后端服務器的響應時間來分配請求,響應時間短的優先分配。

upstream server_pool{
fair;
server 121.111.2.34 weight = 10;
server 121.111.2.35 weight = 10;
}
復制代碼

實例

在http中添加upstream關鍵字:

http{
……
upstream myserver{
# 擁有兩臺服務器
fair # 表示 按照相應的時間進行分配哪個服務來相應當前的請求 。
server 121.111.2.34:8080;
server 121.111.2.35:8080;
# 注意 這里是模擬兩臺服務器,對于沒有兩臺真實的服務器的,可以開兩個tomcat 服務 配置不同的端口
server 121.111.2.34:8080;
server 121.111.2.34:8081;
}

server{
        listen 80;
        server_name 121.111.2.34;
        ……
        location /{
        proxy_pass http://myserver
        # myserver 和上面自己所起的upstream 相對應
        …… 
        }
}
復制代碼

這樣就可以在訪問到本機的80端口時候進行數據的轉發處理,選擇一個特定的主機進行服務的相應接收

高可用

簡介

關于這部分知識,之前在學習基于MySQL與redis集群上項目負載均衡時候有使用的到Docker 來搭建后端的nginx負載均衡,同時,這部分的具體完成的信息也在我的個人githubgithub項目地址賬戶上有所體現。

無論是nginx集群的創建,還是負載均衡的完成上,對于docker 來說都為我們提供了很大的便利,當時的docker配置上夾雜了一些其他的配置,可能把這部分分割出來還是需要點時間去理解,這里就單獨進行分析與學習。

實例

關于具體的邏輯信息,在我如上的基于Mysql與Redis集群上項目負載均衡,主要就是說:為了防止只有一個nginx導致問題的出現的問題,然后添加兩個nginx進行輪詢,但是這個輪詢的工作不需要我們自行完成,而是借助第三方的工具Keepalived,幫助我們完成系列的工作,見下圖:利用心跳檢測,來具體檢測出故障的機器,并且進行ip的虛擬化,只需要記錄一個ip信息,然后后面的操作

Nginx 反向代理,負載均衡及搭建高可用集群

 

  1. 首先是有兩臺服務器,然后在其上都進行keepalived的安裝 yum install keepalived -y # 安裝 rpm -q -a keepalived # 查看安裝的情況 cd /etc/keepalived vi keepalived.conf 復制代碼
  2. 然后修改兩臺keepalived中的文件的配置信息:
global_defs {

    notification_email {

        acassen@firewall.loc

        failover@firewall.loc

        sysadmin@firewall.loc

    }

    notification_email_from Alexandre.Cassen@firewall.loc

    smtp_server 121.111.2.34

    smtp_connect_timeout 30

    router_id LVS_DEVEL #唯一

}

vrrp_script chk_http_port {
    script "/usr/local/src/nginx_check.sh"
    interval 2  #(檢測腳本執行的間隔)2 s執行一次
    weight 2   # 腳本成立 權重增加2。
}

vrrp_instance VI_1 {

    state BACKUP    # 備份服務器上將 MASTER(主) 改為 BACKUP 

    interface ens33 # 網卡

virtual_router_id 51    # 主、備機的 virtual_router_id 必須相同

    priority 100    # 主、備機取不同的優先級,主機值較大,備份機值較小

    advert_int 1 # 進行心跳檢測 每隔一秒 發送檢測信息 查看是否存活

    authentication {

        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {

        121.111.2.20 # 虛擬地址
    }
}
復制代碼
  1. 腳本文件的編寫,不同于使用docker 的方式,如下是使用到dcoker 的解決方案,配置文件的不同。

如下我們編寫具體的信息查看nginx是否存活。存放的目錄是/usr/local/src/。

#!/bin/bash

A = `ps -C nginx –no-header |wc -l`

if [$A - eq 0]; then

    / usr / local / nginx / sbin / nginx
    # 查看nginx 是否還存活

sleep 2

if [`ps -C nginx --no-header |wc -l` - eq 0]; then killall keepalived

fi

fi
復制代碼
  1. 完成之后對nginx和keepalived 進行啟動即可keepalived 啟動命令:systemctl start keepalived

這個時候我們訪問虛擬地址:121.111.2.20,然后兩個keepalived會搶占這個虛擬ip,同時將服務請求發送到不同對應的nginx服務器上,這樣就保證了在一個服務器出現故障時候,另外一個還能夠正常的工作。


鏈接:https://juejin.im/post/6858430406736216072

分享到:
標簽:代理 Nginx
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定