1.負載均衡種類
第一種:通過硬件負載解決文搂,常見的有NetScaler、F5纸肉、Radware和Array等商用的負載均衡器怎虫,價格比較昂貴
第二種:通過軟件負載解決,常見的軟件有LVS膳音、Nginx召衔、apache等,它們是基于Linux系統(tǒng)并且開源的負載均衡策略.
2.介紹
Nginx (engine x) 是一個高性能的HTTP和反向代理服務,也是一個IMAP/POP3/SMTP服務祭陷。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器苍凛,并在一個BSD-like協(xié)議下發(fā)行。其特點是占有內存少兵志,并發(fā)能力強醇蝴,事實上nginx的并發(fā)能力確實在同類型的網(wǎng)頁服務器中表現(xiàn)較好。
3.nginx應用場景
1)http服務器想罕。Nginx是一個http服務可獨立提供http服務悠栓。可以做網(wǎng)頁靜態(tài)服務器按价。
2)虛擬主機惭适。能實現(xiàn)在一臺服務器虛擬出多個網(wǎng)站。例如個人網(wǎng)站使用的虛擬主機楼镐。
3)反向代理癞志,負載均衡。當網(wǎng)站的訪問量達到一定程度后框产,單臺服務器不能滿足用戶的請求時凄杯,需要用多臺服務器集群可以使用nginx做反向代理。并且多臺服務器可以平均分擔負載秉宿,不會因為某臺服務器負載高宕機而某臺服務器閑置的情況盾舌。
4.結構圖
Nginx負載均衡服務器的nginx.conf
配置注釋如下:
events
{
use epoll;
worker_connections 65535;
}
http
{
##upstream的負載均衡,四種調度算法##
#調度算法1:輪詢.每個請求按時間順序逐一分配到不同的后端服務器,
#如果后端某臺服務器宕機,故障系統(tǒng)被自動剔除,使用戶訪問不受影響
upstream webhost {
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
#調度算法2:weight(權重).可以根據(jù)機器配置定義權重.權重越高被分配到的幾率越大
upstream webhost {
server 192.168.0.5:6666 weight=2;
server 192.168.0.7:6666 weight=3;
}
#調度算法3:ip_hash. 每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個后端服務器,
#有效解決了動態(tài)網(wǎng)頁存在的session共享問題
upstream webhost {
ip_hash;
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
#調度算法4:url_hash(需安裝第三方插件).此方法按訪問url的hash結果來分配請求,
#使每個url定向到同一個后端服務器,可以進一步提高后端緩存服務器的效率.
#Nginx本身是不支持url_hash的,如果需要使用這種調度算法,必須安裝Nginx 的hash軟件包
upstream webhost {
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
hash $request_uri;
}
#調度算法5:fair(需安裝第三方插件).這是比上面兩個更加智能的負載均衡算法.
#此種算法可以依據(jù)頁面大小和加載時間長短智能地進行負載均衡,也就是根據(jù)后端服務器的響應時間來分配請求,
#響應時間短的優(yōu)先分配.Nginx本身是不支持fair的,如果需要使用這種調度算法,必須下載Nginx的upstream_fair模塊
####虛擬主機的配置(采用調度算法3:ip_hash)
server
{
listen 80;
server_name mongo.demo.com;
#對 “/” 啟用反向代理
location / {
proxy_pass http://webhost;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
#后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#以下是一些反向代理的配置,可選.
proxy_set_header Host $host;
client_max_body_size 10m; #允許客戶端請求的最大單文件字節(jié)數(shù)
client_body_buffer_size 128k; #緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù),
proxy_connect_timeout 90; #nginx跟后端服務器連接超時時間(代理連接超時)
proxy_send_timeout 90; #后端服務器數(shù)據(jù)回傳時間(代理發(fā)送超時)
proxy_read_timeout 90; #連接成功后,后端服務器響應時間(代理接收超時)
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩沖區(qū)大小
proxy_buffers 4 32k; #proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的設置
proxy_busy_buffers_size 64k; #高負荷下緩沖大小(proxy_buffers*2)
proxy_temp_file_write_size 64k;
#設定緩存文件夾大小,大于這個值,將從upstream服務器傳
}
}
}
配置 192.168.0.4(Nginx-Server)
創(chuàng)建文件夾準備存放配置文件
$ mkdir -p /opt/confs
$ vim /opt/confs/nginx.conf
events
{
use epoll;
worker_connections 65535;
}
http
{
upstream webhost {
ip_hash;
server 192.168.0.5:6666 ;
server 192.168.0.7:6666 ;
}
server
{
listen 80;
server_name mongo.demo.com;
location / {
proxy_pass http://webhost;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
}
啟動負載均衡服務器192.168.0.4(Nginx-Server)
//配置 192.168.0.5(Nginx-Node1/Nginx-Web1)
//創(chuàng)建文件夾用于存放web頁面
$ mkdir -p /opt/html
$ vim /opt/html/index.html
//編輯內容如下:
The host is 192.168.0.5 - Node 1
啟動192.168.0.5(Nginx-Node1/Nginx-Web1)
//配置192.168.0.7(Nginx-Node2/Nginx-Web2)
//創(chuàng)建文件夾用于存放web頁面
$ mkdir -p /opt/html
$ vim /opt/html/index.html
//編輯內容如下:
The host is 192.168.0.7 - Node 2
啟動192.168.0.7(Nginx-Node2/Nginx-Web2)
-
windows下nginx配置
1蘸鲸、多臺服務器中挑選一臺作為nginx代理服務器妖谴,其他服務器作為應用服務器(本地IIS測試,三個站點)酌摇,如下圖所示:
2膝舅、我們在nginx代理服務器上,首先安裝nginx窑多,我們首先去nginx官網(wǎng)下載安裝包仍稀,如下圖所示:
官方站點下載地址
3、將安裝包解壓到D盤根目錄下埂息,文件的目錄結構技潘,如下圖所示:
4遥巴、找到nginx安裝目錄下的conf文件下的nginx.conf,默認訪問端口是8080享幽,如下圖所示:
注:如果是80端口铲掐,請先關閉IIS的默認80端口
5、我們可以添加如下配置節(jié)
#IIS配置多臺Server值桩,weight是權重摆霉,權重越大,被訪問的幾率越大
upstream iis_server{
server 127.0.0.1:801 weight=1;
server 127.0.0.1:802 weight=1;
server 127.0.0.1:803 weight=1;
}
6奔坟、接下來我們修改端口為8080携栋,然后在location配置節(jié)下配置代理地址已經(jīng)靜態(tài)的目錄,如下圖所示:
location / {
root html;
index index.html index.htm;
#iis_server代理地址
proxy_pass http://iis_server;
}
7咳秉、設置字符集婉支,以防止中文字符亂碼,如下圖所示:
8澜建、進入到nginx根目錄向挖,使用命令提示符關閉和重新啟動nginx.
9、然后我們通過nginx代理服務地址訪問霎奢,可以看到內容是隨機訪問3臺服務器上的户誓,如果我們有多臺服務器,在這多臺服務器上部署相同的應用幕侠,就可以達到負載均衡的目的帝美,如下圖所示:
Windows下Nginx的啟動、停止等命令
在Windows下使用Nginx晤硕,我們需要掌握一些基本的操作命令悼潭,比如:啟動、停止Nginx服務舞箍,重新載入Nginx等舰褪,下面我就進行一些簡單的介紹。
1疏橄、啟動:
C:\server\nginx-1.0.2>start nginx
或
C:\server\nginx-1.0.2>nginx.exe
注:建議使用第一種占拍,第二種會使你的cmd窗口一直處于執(zhí)行中,不能進行其他命令操作捎迫。
2晃酒、停止:
C:\server\nginx-1.0.2>nginx.exe -s stop
或
C:\server\nginx-1.0.2>nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相關信息窄绒;quit是完整有序的停止nginx贝次,并保存相關信息。
3彰导、重新載入Nginx:
C:\server\nginx-1.0.2>nginx.exe -s reload
當配置信息修改蛔翅,需要重新載入這些配置時使用此命令敲茄。
4、重新打開日志文件:
C:\server\nginx-1.0.2>nginx.exe -s reopen
5山析、查看Nginx版本:
C:\server\nginx-1.0.2>nginx -v
-
Linux下nginx配置
1.安裝nginx(服務器1)
1)首先安裝好編譯環(huán)境
[root@VM_0_10_centos tmp]# yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2)解壓nginx并切換到解壓目錄
[root@VM_0_10_centos tmp]# tar -zxf nginx-1.16.1.tar.gz
[root@VM_0_10_centos tmp]# cd nginx-1.16.1/
[root@VM_0_10_centos nginx-1.16.1]# pwd
/tmp/nginx-1.16.1
3)編譯安裝
創(chuàng)建nginx的臨時文件,存放在/var/tmp/nginx
[root@VM_0_10_centos nginx-1.16.1]# mkdir -p /var/tmp/nginx
#執(zhí)行命令
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_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/fastcgi \
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
--http-scgi-temp-path=/var/tmp/nginx/scgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module
如圖則表示成功
#編譯源碼堰燎,安裝nginx
[root@VM_0_10_centos nginx-1.16.1]# make
[root@VM_0_10_centos nginx-1.16.1]# make install
安裝完成,查看安裝目錄
4)啟動nginx服務
[root@VM_0_10_centos nginx]# cd sbin/
[root@VM_0_10_centos sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
#查看nginx進程是否啟動
[root@VM_0_10_centos sbin]# ps -aux | grep nginx
注意:其中master為主進程worker為工作進程
5)退出nginx
1 [root@VM_0_10_centos sbin]# ./nginx -s quit
6)重啟nginx
1 [root@VM_0_10_centos sbin]# pwd
2 /usr/local/nginx/sbin
3 [root@VM_0_10_centos sbin]# ./nginx -s reload
7)測試nginx
在瀏覽器上通過ip訪問:http://localhost盖腿,出現(xiàn)如下界面即成功
2.安裝tomcat服務(服務器1爽待,服務器2)
查看服務端口進程是否啟動
3.配置nginx負載(服務器1)
1)修改配置文件nginx.conf
[root@VM_0_10_centos ~]# cd /usr/local/nginx/conf/
[root@VM_0_10_centos conf]# vi nginx.conf
配置負載均衡损同,配置完保存并退出
#20190827添加
upstream testTomcat{
#設置分權翩腐,權重越高優(yōu)先訪問
server 106.53.73.200:8888 weight=1;
server 182.254.184.102:8888 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#所有請求都在這里去找分配
location / {
#root html;
index index.html index.htm;
#使用test分配規(guī)則,即剛剛自定義添加的upstream節(jié)點
proxy_pass http://testTomcat/test/;
}
}
重新啟動nginx服務
1 [root@VM_0_10_centos conf]# /usr/local/nginx/sbin/nginx -s reload
2)測試負載均衡
通過瀏覽器訪問負載ip膏燃,出現(xiàn)下圖即負載成功
-
參考: