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

 

posted @ 2022-03-14 11:00  虞岩  阅读(2283)  评论(0编辑  收藏  举报