濮阳杆衣贸易有限公司

主頁 > 知識庫 > 負載均衡的基本知識以及使用nginx進行負載均衡的簡單例子

負載均衡的基本知識以及使用nginx進行負載均衡的簡單例子

熱門標簽:廈門營銷外呼系統(tǒng)平臺 外呼系統(tǒng)不彈窗 涪陵商都400電話開通辦理 柳州市機器人外呼系統(tǒng)報價 智能電話機器人坐席 云會外呼系統(tǒng) 申請400電話價格多少 安陽ai電銷機器人軟件 外呼系統(tǒng)的經(jīng)營范圍

nginx一般可以用于七層的負載均衡,這篇文章將介紹一些負載均衡的基本知識以及使用nginx進行負載均衡的簡單的例子。

四層負載均衡 vs 七層負載均衡

經(jīng)常會說七層負載均衡還是四層負載均衡,其實根據(jù)ISO的OSI網(wǎng)絡模型的所在層的叫法而決定的,nginx因為在使用http協(xié)議在應用層進行負載均衡的操作,所以被稱為七層負載均衡。而諸如LVS在TCP層進行負載均衡操作的則被稱為四層負載均衡。一般來說,有如下層的負載均衡分類:

常見軟件的支持

常見的負載均衡算法

負載均衡常見有如下幾種算法:

負載均衡演示實例:普通輪詢

接下來使用nginx來演示一下如何進行普通輪詢:

事前準備

事前在7001/7002兩個端口分別啟動兩個服務,用于顯示不同信息,為了演示方便,使用tornado做了一個鏡像,通過docker容器啟動時傳遞的參數(shù)不同用于顯示服務的不同。

[root@kong ~]# docker run -d -p 7001:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "User Service 1: 7001"
ddba0abd24524d270a782c3fab907f6a35c0ce514eec3159357bded09022ee57
[root@kong ~]# docker run -d -p 7002:8080 liumiaocn/tornado:latest python /usr/local/bin/daemon.py "User Service 1: 7002"
95deadd795e19f675891bfcd44e5ea622c95615a95655d1fd346351eca707951
[root@kong ~]# 
[root@kong ~]# curl http://192.168.163.117:7001
Hello, Service :User Service 1: 7001
[root@kong ~]# 
[root@kong ~]# curl http://192.168.163.117:7002
Hello, Service :User Service 1: 7002
[root@kong ~]# 

啟動nginx

[root@kong ~]# docker run -p 9080:80 --name nginx-lb -d nginx 
9d53c7e9a45ef93e7848eb3f4e51c2652a49681e83bda6337c89a3cf2f379c74
[root@kong ~]# docker ps |grep nginx-lb
9d53c7e9a45e    nginx           "nginx -g 'daemon ..."  11 seconds ago   Up 10 seconds    0.0.0.0:9080->80/tcp                         nginx-lb
[root@kong ~]#

nginx代碼段

準備如下nginx代碼段將其添加到nginx的/etc/nginx/conf.d/default.conf中

http {
upstream nginx_lb {
  server 192.168.163.117:7001;
  server 192.168.163.117:7002;
}
server {
  listen    80;
  server_name www.liumiao.cn 192.168.163.117;
  location / {
    proxy_pass http://nginx_lb;
  }
}

修改default.conf的方法

可以通過在容器中安裝vim達到效果,也可以在本地修改然后通過docker cp傳入,或者直接sed修改都可。如果在容器中安裝vim,使用如下方式即可

[root@kong ~]# docker exec -it nginx-lb sh
# apt-get update
...省略
# apt-get install vim
...省略

修改前

# cat default.conf
server {
  listen    80;
  server_name localhost;
  #charset koi8-r;
  #access_log /var/log/nginx/host.access.log main;
  location / {
    root  /usr/share/nginx/html;
    index index.html index.htm;
  }
  #error_page 404       /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  /usr/share/nginx/html;
  }
  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #  proxy_pass  http://127.0.0.1;
  #}
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  #location ~ \.php$ {
  #  root      html;
  #  fastcgi_pass  127.0.0.1:9000;
  #  fastcgi_index index.php;
  #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #  include    fastcgi_params;
  #}
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}
#

修改后

# cat default.conf
upstream nginx_lb {
  server 192.168.163.117:7001;
  server 192.168.163.117:7002;
}
server {
  listen    80;
  server_name www.liumiao.cn 192.168.163.117;
  #charset koi8-r;
  #access_log /var/log/nginx/host.access.log main;
  location / {
    #root  /usr/share/nginx/html;
    #index index.html index.htm;
    proxy_pass http://nginx_lb;
  }
  #error_page 404       /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page  500 502 503 504 /50x.html;
  location = /50x.html {
    root  /usr/share/nginx/html;
  }
  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #  proxy_pass  http://127.0.0.1;
  #}
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  #location ~ \.php$ {
  #  root      html;
  #  fastcgi_pass  127.0.0.1:9000;
  #  fastcgi_index index.php;
  #  fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #  include    fastcgi_params;
  #}
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #  deny all;
  #}
}
#

重啟nginx容器

[root@kong ~]# docker restart nginx-lb
nginx-lb
[root@kong ~]#

確認結果

可以清晰地看到按照順序,進行輪詢:

[root@kong ~]# curl http://localhost:9080
Hello, Service :User Service 1: 7001
[root@kong ~]# curl http://localhost:9080
Hello, Service :User Service 1: 7002
[root@kong ~]# curl http://localhost:9080
Hello, Service :User Service 1: 7001
[root@kong ~]# curl http://localhost:9080
Hello, Service :User Service 1: 7002
[root@kong ~]#

負載均衡演示實例:權重輪詢

而在此基礎上,進行權重輪詢只需要加上weight即可

修改default.conf

按照如下修改default.conf

# cp default.conf default.conf.org
# vi default.conf
# diff default.conf default.conf.org
2,3c2,3
<   server 192.168.163.117:7001 weight=100;
<   server 192.168.163.117:7002 weight=200;
---
>   server 192.168.163.117:7001;
>   server 192.168.163.117:7002;
#

重啟nginx容器

[root@kong ~]# docker restart nginx-lb
nginx-lb
[root@kong ~]#

確認結果

可以看到輪詢結果按照1/3和2/3的比重在進行了:

[root@kong ~]# curl http://localhost:9080
Hello, Service :User Service 1: 7001
[root@kong ~]# curl http://localhost:9080
Hello, Service :User Service 1: 7002
[root@kong ~]# curl http://localhost:9080
Hello, Service :User Service 1: 7002
[root@kong ~]#

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

標簽:晉城 南充 蕪湖 綏化 巴中 撫順 孝感 福州

巨人網(wǎng)絡通訊聲明:本文標題《負載均衡的基本知識以及使用nginx進行負載均衡的簡單例子》,本文關鍵詞  負載,均衡,的,基本知識,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《負載均衡的基本知識以及使用nginx進行負載均衡的簡單例子》相關的同類信息!
  • 本頁收集關于負載均衡的基本知識以及使用nginx進行負載均衡的簡單例子的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    寻甸| 武陟县| 丹棱县| 舒兰市| 海城市| 株洲县| 达州市| 邻水| 陈巴尔虎旗| 富民县| 榕江县| 嘉兴市| 湖口县| 吴旗县| 香河县| 永新县| 两当县| 宜春市| 垫江县| 青神县| 英吉沙县| 盖州市| 甘南县| 隆昌县| 广水市| 宜良县| 稻城县| 仁寿县| 廉江市| 阳信县| 叙永县| 滁州市| 临漳县| 临朐县| 肥东县| 南郑县| 澳门| 壤塘县| 团风县| 松桃| 会宁县|