Nacos 2.x集群的坑解决

如果已经能看到这边文章了,就证明你已经在linux环境部署好了nacos集群以及nginx已经代理nacos的8848端口了处理方案,只是java程序启动服务注册到服务中心nacos集群报错,启动时报错Connection is unregistered.或Client not connected,current status:STARTING。 本篇文章不在讲解如果搭建nacos集群了。

1. 在Nacos 2.x开发版本为了提高服务注册与发现管理,采用了gRPC协议。

因为Nginx对于gRPC不适合长连接的操作,如果使用Nginx实现gRPC代理,最终是无法完成所有微服务注册的。

采用Haproxy代理逐渐来实现Nacos集群管理。Haproxy是一个高可用组件,可以有效的实现集群服务节点的负载均衡以及基于TCP(第四层,类似LVS和Nginx) 和 HTTP(第七层,类似Nginx)应用的代理软件

重点:haproxy代理nacos集群的9848 grpc端口,需要用tcp协议

2.解决方案:

简单来说就是用nginx来带来nacos的8848端口,用haproxy来代理9848的grpc端口。

3.下载安装方式:

第一种:官方下载解压安装

https://www.haproxy.org
https://www.newbe.pro/Mirrors/Mirrors-HAProxy/

3.1解压haproxy源代码压缩包

tar -zxvf /tmp/haproxy-2.4.15.tar.gz -C /usr/local/src/
cd /usr/local/src/haproxy-2.4.15

3.2进行编译前缀配置,编译Haproxy源代码

make TARGET=custom ARCH=x86_64 PREFIX=/usr/local/haproxy

3.3 组件安装

make install PREFIX=/usr/local/haproxy

3.4 创建haproxy.cfg配置文件 (文件种的chroot 和pidfile路径是自己主机安装haproxy文件的位置)

vi /usr/local/haproxy/haproxy.cfg

文件内容类似下面

global                                                           #全局配置
    log         127.0.0.1 local2                                 #启用日志
    nbproc      1                                                #监控进程个数
	maxconnrate 300                                              #进程每秒所能创建的最大连接数
	maxcomprate 300                                              #压缩速率
	maxsessrate 500                                              #进程每秒能创建的会话数量
    chroot      /var/lib/haproxy                                 #Haproxy部署路径
    pidfile     /var/run/haproxy.pid                             #pid文件存储位置
    maxconn     4000                                             #进程接收最大并发连接数
    user        haproxy                                          #启动用户名
    group       haproxy                                          #启动用户组
    daemon                                                       # 后台模式运行
    stats socket /var/lib/haproxy/stats                          # 开启统计socket
    
defaults
    mode                  tcp                                 #默认配置
    log                      global                               #http处理模式
    option                  dontlognull                          #不记录健康日志信息
	option                  redispatch                           #允许重新分配session
	option                  logasap                              #传输大文件时他日前记录日志
	option                  tcplog                              #全局日志配置
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    retries                 3                                    #失败重试次数
    timeout http-request    10s                                  #http请求超时时间                          
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
	
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                         #隐藏统计页面上HAProxy的版本信息

frontend nacos_cluster
    bind *:9848
    mode tcp
    log global
	option tcplog
	option dontlognull
	option nolinger
    maxconn 8000
	timeout client  30s
    default_backend nacos_cluster_nodes


backend nacos_cluster_nodes
    mode tcp
    server localhost.localdomain 192.168.0.120:19848 check
    server localhost.localdomain 192.168.0.120:29848 check
    server localhost.localdomain 192.168.0.120:39848 check

上面的localhost.localdomain是自己的主机名称
vi /etc/hostname 可以查看自己的主机名称

更改主机名称命令

vi /etc/hostname 

#可以查看自己的主机名称
因为我这个域名是假的,所以需要在本机的hosts文件加一下

vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.120 mycentos
reboot #重启

上面文件的注意点是:

  1. frontend 前端的mode、backend的mode 都是 是tcp协议。
  2. defaults的mode改成tcp, option 原本httplog 改成tcplog
3.6添加用户

useradd haproxy

3.7修改防火墙规则(如果是本机测试的话,可以直接关闭防火墙)

firewall-cmd --zone=public --add-port=9999/tcp --permanent
firewall-cmd --zone=public --add-port=9848/tcp --permanent
filewall-cmd reload

3.7启动

/usr/local/haproxy -f /usr/local/haproxy/haproxy.cfg

3.8 关闭

killall haproxy

3.9 查看haproxy代理的三个naocs的grpc端口的情况的控制台

192.168.0.120 是haproxy所在的linux虚拟机的ip地址
http://192.168.0.120:9999/admin
在这里插入图片描述


第二种 yum安装

安装教程 https://blog.csdn.net/qq_39009944/article/details/123633624?spm=1001.2014.3001.5501

至于yum安装不知道haproxy的运行和配置文件在哪里的话,可以用whereis haproxy来查看
[root@localhost usr]# whereis haproxy
haproxy: /usr/sbin/haproxy /etc/haproxy /usr/share/haproxy /usr/share/man/man1/haproxy.1.gz

/usr/sbin/haproxy 是运行命令,类似一个 .exe运行文件

启动命令为 systemctl start haproxy 或者 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg

配置文件内容为:(亲自测试过yum下载haproxy,来代理nacos2.x集群的grpc端口,文件内容可以放心使用)

global
    log         127.0.0.1 local2	#全局配置
    chroot      /var/lib/haproxy	#HAproxy部署路径
    pidfile     /var/run/haproxy.pid	#pid文件存储位置
    maxconn     4000				#进程接收最大并发连接数
    user        haproxy				#启动用户名
    group       haproxy             #启动用户组
    daemon                          # 后台模式运行
    stats socket /var/lib/haproxy/stats # 开启统计socket
    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM


defaults
    mode                    tcp
    log                     global
    option                  tcplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

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                         #隐藏统计页面上HAProxy的版本信息


frontend nacos_cluster
    bind *:9848
    mode tcp
    default_backend   nacos_cluster_nodes          

backend nacos_cluster_nodes
    balance     roundrobin
    mode tcp
    server  mycentos 192.168.0.120:19848 check
    server  mycentos 192.168.0.120:29848 check
    server  mycentos 192.168.0.120:39848 check

以下是java程序成功把服务注册进nacos集群中效果图

在这里插入图片描述

在这里插入图片描述
springboot 以及springcloud 以及springcloud alibaba版本选型
版本选型参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E
在这里插入图片描述

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值