步骤
安装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都可以负载均衡,等后边有时间在测试一下 粘贴代码的时候注意进行*的替换 坑点:
- Nacos Server 端口: Nacos Server 端口是用于提供 HTTP API 的端口。通过该端口,可以进行配置管理和服务发现相关的操作,如发布、获取配置信息,注册和发现服务等。这是 Nacos 的主要对外交互端口,一般是用户应用程序和 Nacos Server 之间进行通信的端口。
- Raft 协议端口: Raft 协议是用于 Nacos 的高可用集群的一种一致性协议。Nacos 使用 Raft 协议来保证集群中的各个节点之间数据的一致性和高可用性。Raft 协议端口用于各个节点之间进行数据同步和选举,以确保集群中的节点能够保持一致的状态。
- 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;
}
}
然后你就可以看到了:
问题
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 架构设计及新模型