說明:五台主機
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