首页 > 其他分享 >玩转RuoYi-Cloud-Plus--6.搭建高可用Nacos集群

玩转RuoYi-Cloud-Plus--6.搭建高可用Nacos集群

时间:2023-04-16 23:14:14浏览次数:46  
标签:SERVICE -- Nacos nacos RuoYi nginx conf MYSQL server

Nacos高可用「集群部署」

注册中心,在微服务中是核心基础组件,当然要保证服务高可用,避免单节点故障。

官方部署文档:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

由于资源有限,在一台windows机器上,启动三个端口不同的节点测试。

解压安装后,复制出三个节点文件夹

 

 

Nacos 默认启动方式是 cluster(集群模式),端口号 8080,未配置数据库连接。

1. 修改服务端口

配置文件位置:

  

修改三个节点端口号分别为:4001、4003、4005

2. 修改数据库配置

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true
db.user=root
db.password=root

3. 修改集群配置

只需要将cluster.conf.example这个文件复制一份为cluster.conf放在conf目录下,其中配置的内容如下:

10.2.189.41:4001
10.2.189.41:4003
10.2.189.41:4005

三个节点配置信息一样,复制即可。

4. 启动节点

 

关闭4003节点,查看状态
 

5. Nginx转发

搭建单机Nginx,修改nginx.conf配置文件

upstream nacos{
            server 10.2.189.41:4001;
            server 10.2.189.41:4003;
            server 10.2.189.41:4005;
    }
server {
        listen       1234;
        server_name  localhost;


        location / {
            proxy_pass http://nacos;
        }

    }

启动Nginx服务端。

访问:http://localhost:1234/nacos 

6. 服务注册发现测试

修改项目中nacos的server-addr,有两种方式:

(1)直接配置节点地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 10.2.189.41:4001,10.2.189.41:4003,10.2.189.41:4005
        namespace: 7e98b650-0c03-4663-b747-b3d4848630aa
        group: DEFAULT_GROUP

(2)配置Nginx转发地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 10.2.189.41:1234
        namespace: 7e98b650-0c03-4663-b747-b3d4848630aa
        group: DEFAULT_GROUP

 

理想中的高可用场景:
 

 

 

 

Docker搭建Nacos集群

 

 

 Naocs需要安装Mysql数据做持久化,我采用的是Docker外部的原有的数据库,所以本篇Nacos集群搭建,忽略Docker安装Mysql,废话不多说,直接上硬货。

准备工作

创建数据库

新建数据库 nacos_db, 运行sql脚本,创建表。

https://github.com/alibaba/naco

搭建Nacos集群

下面以在两个Node,分别启动一个Nacos容器为例:

拉取镜像

在两台机器上拉取Nacos镜像

docker pull nacos/nacos-server

启动容器

--network host : 容器使用宿主机的IP和端口

# 在110机器运行容器
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.1.110:8848 192.168.1.111:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=xxxx \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_test \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
--network host \
--name nacos-110 \
--restart=always \

# 在111机器运行容器
nacos/nacos-server
docker run -itd \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVERS="192.168.1.110:8848 192.168.1.111:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=xxxx \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos_test \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
--network host \
--name nacos-111 \
--restart=always \
nacos/nacos-server

参数含义

 
Name Description Option
PREFER_HOST_MODE 是否支持hostname hostname/ip default ip
MODE cluster模式/standalone模式 cluster/standalone default cluster
NACOS_SERVERS nacos cluster地址 eg. ip1,ip2,ip3
SPRING_DATASOURCE_PLATFORM standalone 支持 mysql mysql / empty default empty
MYSQL_SERVICE_HOST mysql 主节点host  
MYSQL_SERVICE_PORT mysql 主节点端口 default : 3306
MYSQL_SERVICE_DB_NAME mysql 主节点数据库  
MYSQL_SERVICE_USER 数据库用户名  
MYSQL_SERVICE_PASSWORD 数据库密码  

测试验证

 

 

 

 持久化至Mysql没问题。

Docker安装Nginx

下面以单机Nginx配置转发代理为例,和以前普通部署一样。

https://zhuanlan.zhihu.com/p/49

# 1.先拉取nginx镜像

docker pull nginx
# 2、查看是否拉取成功

docker images
# 3、使用命令在源主机上新建文件夹

mkdir -p /root/nginx/{conf,html,log}
# 4、启动临时nginx

docker run -d --name nginx nginx
# 5、拷贝需要挂载的文件

docker cp nginx:/etc/nginx/conf.d /root/nginx/conf

docker cp nginx:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf

docker cp nginx:/usr/share/nginx/html/index.html /root/nginx/html/index.html
# 6、删除临时nginx

docker rm -f nginx
# 7、创建挂载的nginx

docker run -d --network host  --name nginx \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/html/index.html:/usr/share/nginx/html/index.html \
-v /root/nginx/log:/var/log/nginx \
nginx

 编辑nginx.config (/root/nginx/conf/nginx.conf)

upstream nacos{
            server 192.168.1.110:8848;
            server 192.168.1.111:8848;
    }
server {
        listen       1080;
        server_name  192.168.1.110;
        location / {
            proxy_pass http://nacos;
        }
    }
# 删除最后默认配置信息 include /etc/nginx/conf.d/*.conf;

访问:http://192.168.1.110:1080/nacos

 

 

 

 

 

 

 

标签:SERVICE,--,Nacos,nacos,RuoYi,nginx,conf,MYSQL,server
From: https://www.cnblogs.com/yayuya/p/17273037.html

相关文章

  • 玩转RuoYi-Cloud-Plus-2.安装Docker-ce
    2.安装Docker-ce一、删除之前安装的docker(若之前未安装过,此步骤省略…)进入centos根目录执行以下命令(\是linux系统种命令换行符,如果命令过长,可以用\来换行)yumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logr......
  • 免费智能助手使用说明
    ###免费智能助手使用说明####之前的服务说明原文地址:https://www.firstsaofan.top/archives/mian-fei-gpt-di-yi-ban-ben-fa-bu-yi-ji-shi-yong-shuo-ming最近消耗巨大,国际服额度已经使用完了,直连线路已经用完好几个个api\_key加上最近的openai对请求的限制以及网络的问题加......
  • 面经01
    面试java开发工程师常用数据结构,区别及使用场景以下是一些常用的数据结构,它们的区别以及适用场景:数组(Array):区别:数组是一种连续内存空间的数据结构,具有固定的大小,用于存储相同类型的元素。数组支持随机访问,访问速度快。使用场景:当需要快速查找和访问元素时,使用数组是......
  • 团体天梯练习 L2-001 紧急救援
    L2-001紧急救援作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快......
  • C#-WPF-美观炫酷的现代化风格工控机界面设计实际案例分享-界面设计代码
    1.动图效果展示 2.界面1  3.界面2   4.界面3  需要界面效果代码的可留言联系博主 ......
  • 聊聊Redis sentinel 机制
    Redis的哨兵机制自动完成了以下三大功能,从而实现了主从库的自动切换,可以降低Redis集群的运维开销:监控主库运行状态,并判断主库是否客观下线;在主库客观下线后,选取新主库;选出新主库后,通知从库和客户端。 一、为什么需要哨兵主从模式下,如果主库发生故障了,那就直接会影响到......
  • 第 14 章Linux 实操篇-进程管理(重点)
    第14章Linux实操篇-进程管理(重点)目录第14章Linux实操篇-进程管理(重点)14.1基本介绍14.2显示系统执行的进程14.2.1基本介绍14.2.2ps详解14.2.3应用实例14.1终止进程kill和killall14.3.1介绍:14.3.2基本语法14.3.3常用选项14.3.4最佳实践14.5服务(service)......
  • 最接近的三数之和
    最接近的三数之和题目描述题解暴力解法即是三重循环,时间复杂度为\(O(n^3)\)。但是,这种多个数字求和的题目都可以通过双指针的方法降低一层循环。首先我们枚举元素a,那么对于剩下的两个元素b和c,我们希望它们的和能够接近target-a。但是若要利用双指针,则需要一点预处理过程,即对数......
  • Java语言的基本元素:类和对象
    引入人认识世界,其实就是面向对象的。比如,我们认识一下美人鱼(都没见过)经过“仔细学习”,发现美人鱼通常具备一些特征:女孩有鱼尾美丽这个总结的过程,其实是抽象化的过程。抽象出来的美人鱼的特征,可以归纳为一个美人鱼类。而图片中的都是这个类呈现出来的具体的对象。类和对......
  • MyBatis获取参数的方式
    1MyBatis获取参数值的两种方式:${}和#{}2${}的本质就是字符串拼接,#{}的本质就是占位符赋值3${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动......