nginx配置nacos集群代理機制


說明:五台主機

nacos-a             192.168.20.11

nacos-b             192.168.20.12

nacos-c             192.168.20.13

nacos-mysql     192.168.20.14

nacos-nginx      192.168.20.15

所有安裝包位置:     /data/tarapps/

所有腳本啟動位置:    /data/bin/

所有安裝目錄位置:    /data/proc/

所有軟件日志位置:   /data/logs/

一:nginx轉換

在nginx配置文件里添加(子配置文件nacos.conf)

upstream nacoscluster {
              server 192.168.20.11:8848 weight=3 ;
              server 192.168.20.12:8848 weight=1 ;
              server 192.168.20.13:8848 weight=2 ;
    }
server {
           listen 80;
           server_name localhost;

location / {
           proxy_pass http://nacoscluster;
           root /nacos/;
      }
}

 

 

瀏覽器訪問http://nacos-nginx/nacos/

 

 

nginx主配置文件

worker_processes auto; #nginx工作線程數
worker_cpu_affinity auto ;
#配置CPU親和性
##使用命令 ps -eo pid,ni,pri,pcpu,psr,comm|grep nginx|awk '{++s[$(NF-1)]}END{for (i in s)print "core-id",i,"\t",s[i]}'|sort -nr -k 3 查看 cpu親和性
events {
worker_connections 1000; #設置nginx並發量為32w
#並發=(worker_processes*worker_connections)
}

http {
           include mime.types;
           default_type application/octet-stream;
           log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';

           log_format pre '$remote_addr - $remote_user [$time_local] host: $host "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';
           #設置日志格式: main
           access_log /data/logs/nginx/access.log main;
           charset utf-8;
           server_tokens off;                               #關閉nginx的錯誤版本提示
           sendfile on;                                         #使用sendfile系統調用來傳輸文件
           keepalive_timeout 65;                        #keepalive 超時時間
           gzip on;                                              #開啟gzip壓縮,減少流量傳輸但是會加大CPU壓力
           client_header_buffer_size 4k;           #客戶端請求頭部的緩沖區大小,這個可以根據你的系統分頁大小來設置,分頁大小可以用命令getconf PAGESIZE 取得。
           server_names_hash_bucket_size 128;
           large_client_header_buffers 4 4k;
           client_max_body_size 2048m;
           include conf.d/*.conf;
}

 

 

二:gRPC代理機制

 nginx在1.3版本之后就開始支持gRPC代理通訊,但是並不適合長連接的操作,你現在如果使用了nginx實現gRPC代理,最終無法完成所有微服務注冊的

在Nacos 2.0之后的把呢不能是為了提高服務注冊與發現管理的性能,才用了gRPC協議,所以在進行服務代理時就可以利用HAProxy代理組件來實現Nacos集群管理

HAProxy是一款高可用組件,可以有效地實現集群服務節點的負載均衡以及基於TCP(第四層)和HTTP(第七層)應用的單例軟件,開發者可以直接通過HAProxy官方(https://haproxy.org/)免費獲取

 

 

將haproxy包放入到nginx主機上,解壓到/data/proc目錄中並進入目錄中

先查看自己的內核版本uname -r  然后進行編譯

[root@nacos-nginx haproxy-2.5.4]# uname -r
3.10.0-1160.el7.x86_64

 

編譯:

[root@nacos-nginx haproxy-2.5.4]# make TARGET=3100 ARCH=x86_64 PREFIX=/data/prog/haproxy

說明:TARGET=3100是內核版本3.10.0-1160.el7.x86_64

安裝:

[root@nacos-nginx ~]# make install PREFIX=/data/prog/haproxy

 

haproxy配置文件

[root@nacos-nginx haproxy]# vim haproxy.cfg 

#全局配置項: 
global                                                                               #全局配置
log                              127.0.0.1 local0                            #啟用日志
nbproc                        1                                                   #監控進程個數
maxconnrate              300                                               #進程每秒所能創建的最大連接數
maxcomprate             300                                               #壓縮速率
maxsessrate               500                                               #進程每秒能創建的會話數量
#chroot                        /data/proc/haproxy                         #HAProxy部署路徑
pidfile                         /data/proc/haproxy/haproxy.pid     #pid文件存儲路徑
maxconn                   30000                                             #進程所能接受的最大並發連接數
user                          haproxy                                          #啟動用戶名
group                        haproxy                                          #啟動用戶組
daemon                                                                           #后台運行模式
stats                         socket /data/proc/haproxy/stats     #開始統計Socket

#默認配置項:
defaults                                                                           #默認配置
log                           global                                              #全局日志配置
mode                       http                                                  #http處理模式
option                      httplog                                             #日志類別
option                      dontlognull                                      #不記錄健康日志信息
retries                      3                                                     #失敗重試次數
#option                      http-use-htx                                    #啟用HTTP/2
option                      redispatch                                       #允許重新分配session
timeout                             connect 5m                             #連接超時
timeout client                    5m                                          #客戶端超時
timeout server                   5m                                          #服務端超時
timeout check                   10s                                          #超時檢查
timeout http-keep-alive     100s                                        #保持HTTP連接

#管理控制台:
listen                                admin_stats                              #管理控制台
stats                                 enable                                      #啟用管理控制台
bind                                  0.0.0.0:9999                             #監控端口設置
mode                               http                                            #管理控制台模式
log                                   global                                        #日志配置
maxconn                        10                                              #最大連接數
stats                                uri /admin                                  #登陸監控子路徑配置
stats realm                      welcome\ Haproxy                    #登錄提示信息
stats auth                        admin:admin                             #監控的賬號密碼
stats admin                     if TRUE                                     #啟用管理員模式
option                             httplog                                       #http日志記錄
stats refresh                   30s                                            #監控刷新時間
stats                               hide-version                              #隱藏頁面版本號

#代理轉發配置:
frontend nacos_cluster                                                    #代理集群配置(名稱自定義)
bind                               :9848                                          #代理端口
mode                             http                                             #代理模式
log                                 global                                         #日志配置
maxconn                       8000                                           #最大連接數
default_backend           nacos_cluster_nodes                 #代理節點名稱(名稱自定義)

#集群節點控制:
backend nacos_cluster_nodes                                        #集群節點(名稱自定義)
mode                            http                                             #代理模式
server      nacos-a 192.168.20.11:9848 check                #集群節點
server      nacos-b 192.168.20.12:9848 check                #集群節點
server      nacos-c 192.168.20.13:9848 check                #集群節點

說明: nacos-a  nacos-b  nacos-c是一種集群標識,自定義名稱 

創建一個用戶haproxy,然后啟動

[root@nacos-nginx haproxy]# useradd haproxy
[root@nacos-nginx haproxy]# /data/prog/haproxy/sbin/haproxy -f /data/prog/haproxy/haproxy.cfg

 

 然后在瀏覽器上 http://nacos-nginx:9999/admin

賬號密碼都是admin

 項目啟動之后微服務就可以通過當前的GRPC代理實現了服務的注冊

如果集群有問題的話,就查詢一下集群的命名日志nanaming-server.log

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM