步骤
安装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
现在正式进入正题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
随便找一台已经运行的服务器可以看出
接下来就是最坑的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、清除被阻止的主机列表
mysqladmin flush-hosts -u root -p
2、 nginx配置文件问题
用的nacos2.2.0没有想到引入了新的raft和grpc协议,要多开放几个节点
参考
Nginx + Nacos2.x集群配置 - 二先森 - 博客园 (cnblogs.com)
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)