nginx實踐

Nginx負載均衡實踐

本次實踐是爲了體驗在目前分佈式集羣的環境部署的條件下,使用nginx實現負載均衡配置,體驗服務器集羣處理請求操作的過程。

一、服務器環境搭建

本次實踐使用了兩臺AWS服務器,每臺機器上部署了相同的服務,並且在其中一臺機器上搭建了nginx,進行負載均衡。

1.創建虛擬機

本次實驗選擇的虛擬機的操作系統是ubuntu 16.04 LTS,創建虛擬機的操作比較簡單,但是AWS默認使用的是密鑰登陸,對新手用戶不是很友好,尤其容易讓人忘記需要下載密鑰文件到本地保存,並設置使用權限爲400。
服務器列表:
服務器列表

AWS默認用戶名爲: ubuntu
AWS密碼爲: *****************

連接示例:
連接示例

將密鑰登陸修改爲密碼登陸:設置AWS服務器爲密碼登陸

2.安裝nginx

使用命令:

sudo apt-get install nginx

完成安裝之後,ubuntu會默認啓動nginx,在瀏覽器中輸入對應AWS服務器端外網IP計科訪問到nginx的主頁。

3.安裝Java

此次實踐的服務是使用Java語言開發的,因此運行需要Java的環境。
安裝步驟請參考:ubuntu環境下Java Web環境搭建
安裝命令如下:

sudo apt-get install software-properties-common   
sudo add-apt-repository ppa:webupd8team/java    
sudo apt-get update
sudo apt-get install oracle-java8-installer

安裝完成之後使用命令:

java -version

檢查java是否安裝成功

二、部署應用

1.克隆代碼

本次實驗的代碼我已經上傳到Github,代碼倉庫的地址爲:

git@github.com:JimmyU1/turing_robot.git

使用命令

git clone git@github.com:JimmyU1/turing_robot.git

即可將代碼克隆到本地進行修改。

2.打包代碼

代碼進行修改之後需要將代碼重新打包,使用maven工具進行打包
打包命令:

mvn clean
mvn package -D skipTests

然後會在代碼目錄下生成一個target文件夾,裏面由一個jar文件即爲本項目的可執行文件

3.上傳代碼

在服務器上的/home/ubuntu路徑下新建一個文件夾命名webroot用於存儲代碼文件。使用命令:

sudo mkdir webroot
sudo chmod 777 webroot

創建好目錄之後把打包好的jar文件上傳至服務器。使用命令(文件名、目錄名和服務器地址請自行替換):

sudo scp robot-0.0.1-SNAPSHOT.jar ubuntu@52.36.73.236:/home/ubuntu/webroot

4.啓動服務

進入到webroot目錄,使用nohup從後臺啓動程序:

nohup java -jar robot-0.0.1-SNAPSHOT.jar &

本服務默認使用端口號是11200,之後的nginx配置將對11200端口的服務進行負責均衡。

三、負載均衡配置

負載均衡的配置是通過修改nginx配置文件來實現的。
nginx的默認配置文件路徑爲/etc/nginx/conf.d/

在其中一臺服務器上配置nginx來進行負載均衡,在/etc/nginx/conf.d/目錄下創建一個配置文件,命名turing_robot.conf,具體內容如下:

upstream turingrobot{
    server 127.0.0.1:11200;
    server 52.36.73.236:11200;
}

server{
    listen 8700;
    location / {
        proxy_pass http://turingrobot;
    }
}

備註:
1. upstream用於配置同樣服務的多個服務器,不要帶有http或者https的協議頭。
2. upstream的裏面配置多個server,是是提供服務的服務器地址和端口號。
3. server結構中,listen接口表示的是nginx對外服務的端口號。是服務訪問的實際入口。
4. proxy_pass 用於表示該服務代理的是upstream中配置的對應實際服務地址。

最後重新加載nginx的配置文件即可完成配置,使用命令:

sudo nginx -s reload

四、效果演示

我們在代碼中會獲取服務器的IP(內網IP,暴露外網IP存在安全隱患),並返回給了前端,然後前端會在每次請求返回只有在頁面上展示對應的服務器IP。下圖中兩次返回的IP地址並不一樣,表示我們兩次請求分別是由不同的服務器來處理的。

展示效果:
展示效果

1

1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章