nacos2.2.0+nginx1.14.1-三台集群搭建


步骤

安装java jdk

查看系统是否自带

rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj


如果有输出信息

rpm -qa | grep java | xargs rpm -e --nodeps

安装java

yum list java-1.8*
yum install java-1.8.0-openjdk* -y
java -version

安装nacos,单机部署

这里我使用的是nacos2.2.0

安装nacos,并单机部署,运行

unzip nacos-server-2.2.0.zip
cd nacos/bin
sh startup.sh -m standalone

默认轮询机制:


RoundRobinRule 轮询


RandomRule 随机


RetryRule 先安装

RoundRobinRule 的策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务


WeightedResponseTimeRule 对RoundRobinRule的扩展,响应速度越快的实例选中权重越大,越容易被选择


BestAvailableRule 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选中一个并发量最小的服务。


AvailabilityFilteringRule 先过滤掉故障实例,再选择并发较小的实例。
 ZoneAvoidanceRule 默认规则,复合判断server所在区域的性能和server的可用性选择服务器。

单机部署 没有用mysql数据库,默认Nacos使用嵌入式数据库实现数据的存储。

安装nginx

sudo systemctl stop nginx
sudo systemctl disable nginx
sudo yum remove nginx
sudo rm -rf /etc/nginx
sudo yum install nginx

Nacos集群部署(Nacos安装目录/Develop/nacos)

为什么我的显示的是四个,用的都是云服务器,有一个是服务器的内网IP的nacos

如果启动多个默认配置下的nacos节点,数据存储就存在了一致性问题,为了解决这个问题 ,Nacos采用了集中存储的方式来支持集群化部署,目前只支持MySQL

Naocs支持三种部署模式:

​ 1、单机模式-用于测试和单机使用

​ 2、集群模式-多用于生产环境,确保高可用

​ 3、多集群模式-多用于数据中心

单机模式支持mysql 在0.7版本增加了支持mysql数据源

../nacos/conf/application.properties

image-20230802214752096

现在正式进入正题nacos集群搭建

服务器名 服务端口 grpc协议端口+1000 grpc port for server +1001
Nacos_ali_1:101.200.40.242(nacos) 8848 9848 9849
Nacos_ali_2:49.232.522.36(naocs) 8848 9848 9849
Nacos_qq_1:121.41.171.66(nacos) 8848 9848 9849
Nginx:101.200.40.242(nginx) 18848 19848 19849

运行三台Nacos服务器

运行之前保证三台服务器都可以访问同一数据库服务器

将单机部署的nacos文件停掉

cd /Develop/nacos/conf
cp cluster.conf.example cluster.conf
vi cluster.conf
## 下边集群的IP放上  三个nacos服务器host:port
101.200.40.242:8848
49.232.52.36:8848
121.41.171.66:8848
# 三台服务器都运行
cd /Develop/nacos/bin
# 先暂停服务
./shutdown.sh
# 开启集群
./startup.sh 

随便找一台已经运行的服务器可以看出

image-20230802220033372

接下来就是最坑的nginx对已经安装Nacos服务的进行负载均衡

我这个并没有设置raft,后边添加了raft,也不知道配好了没,添不添加raft,nginx都可以负载均衡,等后边有时间在测试一下

粘贴代码的时候注意进行*的替换

坑点:

  1. Nacos Server 端口: Nacos Server 端口是用于提供 HTTP API 的端口。通过该端口,可以进行配置管理和服务发现相关的操作,如发布、获取配置信息,注册和发现服务等。这是 Nacos 的主要对外交互端口,一般是用户应用程序和 Nacos Server 之间进行通信的端口。
  2. Raft 协议端口: Raft 协议是用于 Nacos 的高可用集群的一种一致性协议。Nacos 使用 Raft 协议来保证集群中的各个节点之间数据的一致性和高可用性。Raft 协议端口用于各个节点之间进行数据同步和选举,以确保集群中的节点能够保持一致的状态。
  3. gRPC 端口: gRPC 是一种高性能、开源的 RPC 框架,它支持多种编程语言,并且在 Nacos 中被用于内部节点之间的通信。gRPC 端口用于 Nacos 各个节点之间进行高效的、二进制的通信,如节点注册、心跳等。

官网截图

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/conf.d/*.conf;
    upstream nacos-cluster {
        ip_hash;
        server 101.200.40.242:8848;
        server 49.232.52.36:8848;
        server 121.41.171.66:8848;
    }

    server {
        listen 18848;
        server_name localhost;

        location /nacos {
            proxy_pass http://nacos-cluster/nacos;
        }
    }
}

stream {
    # 偏移1000
    upstream nacos-grpc {
        server 101.200.40.242:9848;
        server 49.232.52.36:9848;
        server 121.41.171.66:9848;
    }

    server {
        listen 19848;
        proxy_pass nacos-grpc;
    }

    # 偏移1001
    upstream nacos-tcp-19849 {
        server 101.200.40.242:9849;
        server 49.232.52.36:9849;
        server 121.41.171.66:9849;
    }

    server {
        listen 19849;
        proxy_pass nacos-tcp-19849;
    }
    # 偏移-1000
    upstream nacos-tcp-17848{
        server 101.200.40.242:7848;
        server 49.232.52.36:7848;
        server 121.41.171.66:7848;
    }
    server{
        listen 17848;
        proxy_pass nacos-tcp-17848;
    }
}

然后你就可以看到了:

image-20230802222112566

问题

1、mysql访问次数太多

问题描述

[root@VM-8-8-centos ~]# mysql -h 101.200.40.242 -u root -p
Enter password:
ERROR 1129 (HY000): Host ‘49.232.52.36’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’

[root@VM-8-8-centos ~]# mysql -h 101.200.40.242 -u root -p 输入密码: 错误 1129 (HY000):由于连接错误过多,主机 ‘49.232.52.36’ 被阻止;使用 ‘mysqladmin flush-hosts’ 来解除阻止。

解决方法:

1、换个数据库

2、等事件结束

3、清除被阻止的主机列表

mysqladmin flush-hosts -u root -p

2、 nginx配置文件问题

用的nacos2.2.0没有想到引入了新的raft和grpc协议,要多开放几个节点

参考

Nginx + Nacos2.x集群配置 - 二先森 - 博客园 (cnblogs.com)

Nacos 2.0.0 兼容性文档

Nacos 原理 Jraft Distro Grpc 持续跟新中…_nacos jraft_不学会Ⅳ的博客-CSDN博客

Nacos 2.0 正式发布,性能提升了 10 倍!! - 有梦想的老王 - 博客园 (cnblogs.com)

超高性能rpc框架之gRPC 快速整合gRPC+nacos+springCloud_nacos grpc_川哟的博客-CSDN博客

支持 gRPC 长链接,深度解读 Nacos 2.0 架构设计及新模型-阿里云开发者社区 (aliyun.com)


文章作者: 毛豆不逗比
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 毛豆不逗比 !
  目录
{% include '_third-party/exturl.swig' %} {% include '_third-party/bookmark.swig' %} {% include '_third-party/copy-code.swig' %} + {% include '_custom/custom.swig' %}