您好,登錄后才能下訂單哦!
怎樣進行nginx部署基于http的負載均衡器,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
nginx跨多個應用程序實例的負載平衡是一種用于優化資源利用率,最大化吞吐量,減少延遲和確保容錯配置的常用技術。
配置nginx負載均衡器因會用到多臺服務器來進行,所以下面我會用到docker,具體docker的使用請移步 docker實戰
root@ubuntu:~# lsb_release -a #查看系統版本 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 19.10 Release: 19.10 Codename: eoan root@ubuntu:~# uname -a #查看系統是多少位 Linux ubuntu 5.3.0-18-generic #19-Ubuntu SMP Tue Oct 8 20:14:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
docker版本: root@ubuntu:~# docker --version #查看docker版本 Docker version 19.03.3, build a872fc2f86 操作系統版本: [root@57b669db1de1 /]# cat /etc/redhat-release #查看系統版本 CentOS Linux release 8.0.1905 (Core) [root@57b669db1de1 /]# uname -a Linux 57b669db1de1 5.3.0-18-generic #19-Ubuntu SMP Tue Oct 8 20:14:06 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
nginx版本: root@ubuntu:~# nginx -v 查看nginx版本 nginx version: nginx/1.16.1 (Ubuntu) docker中nginx版本: [root@57b669db1de1 /]# nginx -v #查看nginx版本 nginx version: nginx/1.14.1
具體nginx的安裝請參考 nginx安裝部署
更新軟件包: root@ubuntu:~# apt-get update 安裝依賴軟件: root@ubuntu:~# apt -y install openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev make gcc
下載nginx: root@ubuntu:~# wget http:#nginx.org/download/nginx-1.17.6.tar.gz 解壓: root@ubuntu:/opt# tar zxf nginx-1.17.6.tar.gz root@ubuntu:/opt# cd nginx-1.17.6/ root@ubuntu:/opt/nginx-1.17.6# ls #列出目錄 auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src root@ubuntu:/opt/nginx-1.17.6# 配置: root@ubuntu:/opt/nginx-1.17.6# ./configure --prefix=/usr/local/nginx 編譯以及部署: root@ubuntu:/opt/nginx-1.17.6# make && make install root@ubuntu:/opt/nginx-1.17.6# cd /usr/local/nginx/ root@ubuntu:/usr/local/nginx# ls conf html logs sbin 啟動: root@ubuntu:/usr/local/nginx# ln sbin/nginx /usr/local/sbin/ #創建nginx軟連接,設置為命令 root@ubuntu:/usr/local/nginx# nginx #啟動nginx root@ubuntu:/usr/local/nginx# netstat -anpl | grep nginx #查看nginx端口是否開啟 root@ubuntu:/usr/local/nginx# lsof -i:80 #查看80端口是否開啟
下載鏡像: root@ubuntu:~# docker pull registry.cn-beijing.aliyuncs.com/blxt/centos 創建容器并啟動: root@ubuntu:~# root@ubuntu:~# docker run -itd --name nginx1 --privileged registry.cn-beijing.aliyuncs.com/blxt/centos /sbin/init root@ubuntu:~# docker ps -a #查看容器是否創建并啟動 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME 6801d55682a3 registry.cn-beijing.aliyuncs.com/blxt/centos "/sbin/init" 5 minutes ago Up 5 minutes nginx1 相同方法創建第二個容器: root@ubuntu:~# docker run -itd --name nginx2 --privileged registry.cn-beijing.aliyuncs.com/blxt/centos /sbin/init root@ubuntu:~# docker ps -a root@ubuntu:~# root@ubuntu:~# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d31d3fc0ec1 registry.cn-beijing.aliyuncs.com/blxt/centos "/sbin/init" 4 minutes ago Up 4 minutes nginx2 6801d55682a3 registry.cn-beijing.aliyuncs.com/blxt/centos "/sbin/init" 5 minutes ago Up 5 minutes nginx1 連接到容器: root@ubuntu:~# docker exec -it nginx1 /bin/bash root@ubuntu:~# docker exec -it nginx2 /bin/bash [root@6801d55682a3 /]# hostname nginx1 #更改主機名稱 [root@6801d55682a3 /]# bash #使更改的名稱生效 [root@1d31d3fc0ec1 /]# hostname nginx2 [root@1d31d3fc0ec1 /]# bash
更新軟件包: [root@nginx1 /]# yum clean all #清空緩存 [root@nginx1 /]# yum makecache #更新軟件包 安裝nginx: [root@nginx1 /]# yum -y install nginx [root@nginx1 /]# rpm -qa | grep nginx #查看是否已經安裝 啟動nginx: [root@nginx1 /]# systemctl start nginx [root@nginx1 /]# netstat -anpl | grep nginx #查看nginxnn端口是否開啟 [root@nginx1 /]# lsof -i:80 #查看80端口是否開啟 安裝第二個nginx使用相同方法即可!此處省略!!! 訪問nginx: [root@nginx1 /]# curl 127.0.0.1
查看網頁存在目錄: [root@nginx1 nginx]# more nginx.conf #查看配置文件 在配置文件中找到下面root行,后面目錄即網頁文件存放目錄 root /usr/share/nginx/html; [root@nginx1 html]# cd /usr/share/nginx/html/ [root@nginx1 html]# ls #列出目錄內容 404.html 50x.html index.html nginx-logo.png poweredby.png [root@nginx1 html]# echo nginx1 > index.html #清空nginx主頁文件內容,并重新寫入內容為nginx1 nginx2如同,注意不要設置一樣的主頁內容 訪問nginx: [root@nginx1 html]# curl 127.0.0.1 nginx1 [root@nginx2 ~]# curl 127.0.0.1 nginx2
nginx1修改內容如下: server { listen 80; server_name www.nginx1.com; //設置域名 #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } } nginx2修改內容如下: server { listen 80; server_name www.nginx2.com; //設置域名 #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } }
要開始使用NGINX Plus或NGINX開源對一組服務器的HTTP流量進行負載均衡,使用upstream指令定義該組,該指令放置在http上下文中,proxy_pass指令用來轉發請求到后端一般指定在loction上下文中
基本配置方法:
http { upstream nginx { #test為組名 server www.nginx1.com ; #server用來指定后端服務器的訪問地址,一般指定域名、ip、端口,域名和ip二選一,端口可忽略 server www.nginx2.com weight=5; #weight指定權重值 server www.nginx3.com down; #down用來停止對此服務器的轉發 ......省略其他配置 } server{ location / { proxy_pass http://nginx; #http://nginx為轉發那個組的后端服務器 ......省略其他配置 } ......省略其他配置 }}
nginx做負載均衡官方提供了4種方法,下面逐一介紹這四種方法:
請求在服務器之間平均分配,同時考慮了服務器權重。默認情況下使用此方法(沒有啟用它的指令)
默認配置就是Round Robin,配置方法:
http { upstream nginx { #test為組名 server www.nginx1.com ; #server用來指定后端服務器的訪問地址 server www.nginx2.com ; #weight指定權重值 ......省略其他配置 } server{ location / { proxy_pass http://nginx; #http://nginx為轉發那個組的后端服務器 ......省略其他配置 } ......省略其他配置 }}
將活動連接最少的請求發送到服務器,也是在考慮到服務器的權重問題才設置的這種方法
配置方法:
http { upstream nginx { #test為組名 less_conn ; server www.nginx1.com ; #server用來指定后端服務器的訪問地址 server www.nginx2.com ; #weight指定權重值 ......省略其他配置 } server{ location / { proxy_pass http://nginx; #http:#nginx為轉發那個組的后端服務器 ......省略其他配置 } ......省略其他配置 }}
從客戶端IP地址確定向其發送請求的服務器。在這種情況下,可以使用IPv4地址的前三個八位位組或整個IPv6地址來計算哈希值。該方法保證了來自同一地址的請求將到達同一服務器,除非它不可用。
配置方法:
http { upstream nginx { #test為組名 ip_hash ; server www.nginx1.com ; #server用來指定后端服務器的訪問地址 server www.nginx2.com ; #weight指定權重值 ......省略其他配置 } server{ location / { proxy_pass http://nginx; #http:#nginx為轉發那個組的后端服務器 ......省略其他配置 } ......省略其他配置 }}
向其發送請求的服務器是根據用戶定義的鍵確定的,該鍵可以是文本字符串,變量或組合。
配置方法:
http { upstream nginx { #test為組名 hash $request_uri consistent; server www.nginx1.com ; #server用來指定后端服務器的訪問地址 server www.nginx2.com ; #weight指定權重值 ......省略其他配置 } server{ location / { proxy_pass http://nginx; #http://nginx為轉發那個組的后端服務器 ......省略其他配置 } ......省略其他配置 }}
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。