Nginx簡(jiǎn)介&集群搭建

一、nginx簡(jiǎn)介

1.什么是nginx?

一個(gè)高性能的HTTP反向代理服務(wù),也是一個(gè)IMAP/POP3/SMTP服務(wù)
特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng)

2.為什么使用niginx?

互聯(lián)網(wǎng)時(shí)代,海量用戶高并發(fā)已然成為互聯(lián)網(wǎng)的主體。
如何能讓一個(gè)網(wǎng)站承載幾萬(wàn)甚至幾十萬(wàn)個(gè)用戶的持續(xù)訪問(wèn)呢?這是中小網(wǎng)站急需解決的問(wèn)題。
傳統(tǒng)單機(jī)tomcat搭建的網(wǎng)站,在比較理想的狀態(tài)下能夠承受的并發(fā)訪問(wèn)量在 150 到 200 左右。按照并發(fā)訪問(wèn)量占總用戶數(shù)量的 5% 到 10% 這樣計(jì)算,單點(diǎn) tomcat 網(wǎng)站的用戶人數(shù)在 1500 到 4000 左右。遠(yuǎn)遠(yuǎn)不能滿足海量用戶的訪問(wèn)需求。這時(shí)候可以使用負(fù)載均衡來(lái)解決高并發(fā)的問(wèn)題,而nginx就是一款高性能可以實(shí)現(xiàn)負(fù)載均衡的代理服務(wù)器。

應(yīng)用場(chǎng)景:

  • http 服務(wù)器,可以做靜態(tài)網(wǎng)頁(yè)的 http 服務(wù)器。
  • 配置虛擬機(jī),一個(gè)域名可以被多個(gè) ip 綁定??梢愿鶕?jù)域名的不同把請(qǐng)求轉(zhuǎn)發(fā)給運(yùn)行在不同端口的服務(wù)器。
  • 反向代理,負(fù)載均衡。把請(qǐng)求轉(zhuǎn)發(fā)給不同的服務(wù)器。

二、搭建集群

1.在Windows下搭建集群

1.1.在 D 盤新建兩個(gè)新建兩個(gè)目錄 tomcat1、tomcat2
1.2.修改 tomcat2 的端口,例如, 在以 tomcat1 的端口為基礎(chǔ)上+10,修改完,啟動(dòng)這兩個(gè) tomcat,再分別訪問(wèn)

  • 訪問(wèn) 8080 端口:localhost:8080/test/
  • 訪問(wèn) 8090 端口:localhost:8090/test/

1.3.解壓 nginx


圖片.png

修改 ngnix 的 nginx.conf 文件,在 location / 下添加反向代理服務(wù)器,代理 8080 端口:

location / {
  root   html;
  index  index.html index.htm;
  proxy_pass http://localhost:8080
}

以上只是代理了一臺(tái)服務(wù)器。啟動(dòng) nginx,每次訪問(wèn) localhost/test/, 最后訪問(wèn)的都是8080端口服務(wù)器的數(shù)據(jù)。
1.4.代理集群,例如代理兩臺(tái)服務(wù)器

//需要在http節(jié)點(diǎn)上添加一個(gè)
upstream mz{
  server 127.0.0.1:8080;
  server 127.0.0.1:8090;
}
//修改location /下的反向代理
    proxy_pass http://mz

修改如圖:


圖片.png

另外,還可以給服務(wù)器添加權(quán)重:


圖片.png

表示如果有 6 次訪問(wèn),則有 4 次可能訪問(wèn)到第二個(gè)服務(wù)器。啟動(dòng) nginx,則每次訪問(wèn)localhost/test/,會(huì)有可能訪問(wèn)到8080端口服務(wù)器的數(shù)據(jù),也可能訪問(wèn)到8090端口服務(wù)器的數(shù)據(jù)。
1.5.Session共享問(wèn)題
  • 解決方式一(只能在 windows 下好使):
    web 服務(wù)器解決(廣播機(jī)制),注意:tomcat 下性能低
    修改兩個(gè)地方:
    • 修改兩個(gè) tomcat 的 server.xml,支持共享,將引擎標(biāo)簽下的 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>注釋去掉
      圖片.png
    • 修改項(xiàng)目的配置文件 web.xml 中添加一個(gè)節(jié)點(diǎn) <distributable/>
      圖片.png
  • 解決方式二:可以將 session 的 id 放入 redis 中
  • 解決方式三:保證一個(gè) ip 地址永遠(yuǎn)的訪問(wèn)一臺(tái) web 服務(wù)器,就不存在 session 共享問(wèn)題了,在 nginx 的配置文件中 upstream 中添加 ip_hash(在 Linux 下經(jīng)常使用該方式)

    ip_hash 指令能夠?qū)⒛硞€(gè)客戶端 IP 的請(qǐng)求通過(guò)哈希算法定位到同一臺(tái)后端服務(wù)器上。

2.在Linux下搭建集群

2.1.先將 nginx 上傳到 linux 上
2.2.解壓 nginx
2.3.先編譯 nginx

安裝依賴包
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
執(zhí)行編譯
先進(jìn)入 nginx的目錄
執(zhí)行
        ./configure

2.4.安裝 nginx

  • 執(zhí)行make
  • 執(zhí)行make install
    2.5.啟動(dòng) nginx:
cd nginx 目錄下
    配置文件 conf
    啟動(dòng)nginx
        ./nginx

注:
①在 nginx 目錄下有一個(gè) sbin 目錄,sbin 目錄下有一個(gè) nginx 可執(zhí)行程序
②關(guān)閉 ngnix:

  • 關(guān)閉命令:相當(dāng)于找到 nginx 進(jìn)程kill ./nginx -s stop
  • 退出命令 ./nginx -s quit等程序執(zhí)行完畢后關(guān)閉,建議使用此命令。
    2.6.將端口號(hào) 80 放行
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
將該設(shè)置添加到防火墻的規(guī)則中
/etc/rc.d/init.d/iptables save

2.7.修改 conf 文件和 window 下一樣:配置集群

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容