• 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

  • 相关阅读:
    【转载】C++指针随想
    微信小程序实现电子签名
    js数组常用方法
    css文本两端对齐
    js判断某个数组中是否包含另一个数组
    react 限制小数点位数
    原生js 操作class 原生js获取父元素
    转发: JS中的call()和apply()方法和区别 --小白变色记
    fail2Ban ubuntu
    VSCode 搭建 Vue项目 lite-server
  • 原文地址:https://www.cnblogs.com/zgqbky/p/16003258.html
Copyright © 2020-2023  润新知