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

2023-10-18 15:09:47 浏览数 (1)

步骤

安装java jdk

查看系统是否自带

代码语言:javascript复制
rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj


如果有输出信息

代码语言:javascript复制
rpm -qa | grep java | xargs rpm -e --nodeps

安装java

代码语言:javascript复制
yum list java-1.8*
yum install java-1.8.0-openjdk* -y
java -version

安装nacos,单机部署

这里我使用的是nacos2.2.0

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

代码语言:javascript复制
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

代码语言:javascript复制
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

现在正式进入正题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文件停掉

代码语言:javascript复制
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 

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

接下来就是最坑的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 各个节点之间进行高效的、二进制的通信,如节点注册、心跳等。
代码语言:javascript复制
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;
    }
}

然后你就可以看到了:

问题

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、清除被阻止的主机列表

代码语言:javascript复制
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 架构设计及新模型

0 人点赞