集群模式部署

前面我们已经学习了Nacos作为注册中心、配置中心的相关功能,但是我们之前启动Nacos是通过单实例模式启动的,只适合在学习和开发阶段,生产环境需要保证Nacos的高可用,所以今天我们来学习一下Nacos的集群模式部署。

官方推荐使用:http://nacos.com:port/openAPI 域名 + VIP模式搭建Nacos集群。

Nacos集群模式是需要两个条件的:

  1. 需要将Nacos数据持久化存储到Mysql数据库(单例模式默认使用了内嵌数据库)。
  2. 需要为集群的多个实例实现VIP功能(通常通过Nginx实现)。

使用Mysql存储数据

第一步:初始化mysql数据库。数据库版本要求5.6.5以上,数据库初始化文件为nacos-mysql.sql,存放在nacos的config目录里面。





第二步:修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://192.168.0.205:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456



如果数据库有多个实例,可以按照下面配置方式添加多个Mysql实例

spring.datasource.platform=mysql

#数据库实例个数
db.num=2 # 第1个实例的地址
db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
# 第2个实例的地址
db.url.1=jdbc:mysql://11.162.196.17:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=nacos
db.password=123456

集群模式启动Nacos

集群模式至少需要两个Nacos实例才能维持,所以要保证Nacos高可用就必须至少要有三个实例。由于作者机器有限,我就在一台Linux机器192.168.0.127上启动三个不同端口的Nacos实例,在bin目录下对startup.sh文件复制出三个新的文件:

startup-8841.sh、startup-8842.sh、startup-8843.sh,并通过-Dserver.port参数指定应用运行端口。





接着复制conf目录下cluster.conf.example文件出一个新文件cluster.conf,并配置上所有集群节点的地址和端口信息,最后依次执行三个startup-xxx.sh脚本文件启动Nacos。(注意:不需要添加任何模式参数,将以集群模式启动)





启动之后Linux需要防火墙开放相应的三个服务端口,同时可以依次访问三个实例测试是否启动成功。

通过Nginx实现VIP

实现VIP的方式很多,这里我简单介绍一下使用Nginx实现集群模式的VIP功能。

关于如何安装Nginx可以参考这篇文章:https://www.runoob.com/linux/nginx-install-setup.html



安装好Nginx之后,修改conf目录下的nginx.conf文件,实现简单的VIP功能配置,最后启动Nginx。

upstream nacoscluster {
server 192.168.0.127:8841;
server 192.168.0.127:8842;
server 192.168.0.127:8841;
} server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /nacos/ {
#root html;
#index index.html index.htm;
proxy_pass http://nacoscluster/nacos/;
}
}

简单测试集群模式

1、访问192.168.0.17/nacos可以正常访问,前面说到的功能都可以正常使用。

2、Nacos集群模式需要至少两个存活实例节点,读者朋友可以通过关闭实例节点来测试验证。

关注公众号了解更多原创博文

![Alt](https://img-blog.csdnimg.cn/20191104123907694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3Mzk1NTE=,size_16,color_FFFFFF,t_70#pic_center =591x339)

感谢每一位关注的读者朋友,你们的关注是我继续写作与分享的动力!!!

Spring Cloud Alibaba 教程 | Nacos(六)的更多相关文章

  1. Spring Cloud Alibaba 教程 | Nacos(一)

    什么是Nacos Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. Nacos 致力于帮助您发现.配置和管理微服务.Nacos提供了一组简单易用的特性集,帮助您快速实现动态 ...

  2. Spring Cloud Alibaba 教程 | Nacos(五)

    扩展配置(extended configurations) 通过之前的学习,我们知道应用引入nacos配置中心之后默认将会加载Data ID= ${prefix} - ${spring.profile ...

  3. Spring Cloud Alibaba 教程 | Nacos(三)

    使用Nacos作为配置中心 前面我们已经介绍过滤Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.所以它可以作为注册中心和配置中心,作为注册中心Nacos可以让我们灵活配置多 ...

  4. Spring Cloud Alibaba 教程 | Nacos(二)

    源码解析客户端注册过程 nacos作为注册中心,包含了nacos服务端(注册中心服务)和nacos客户端,nacos注册中心服务上面一讲已经介绍过了它是一个用Java语言编写开源web项目,并且拥有自 ...

  5. Spring Cloud Alibaba 教程 | Nacos(四)

    Nacos环境隔离 Nacos管理台有一个单独的菜单"命名空间",里面默认存在一个名为"public"的默认命名空间,我们在使用Nacos时不管是作为注册中心还 ...

  6. Spring Cloud Alibaba 使用nacos 注册中心

    ### 背景 上一文我们讲到了如何去搭建注册中心,这一次我们讲述如何使用nacos作为注册中心 ### spring-cloud-alibaba-basis 创建基础依赖 首先我们创建一个spring ...

  7. Spring Cloud Alibaba(6)---Nacos持久化Mysql8.0版本

    Nacos持久化Mysql8.0版本 有关Nacos之前写过三篇文章. Spring Cloud Alibaba(3)---Nacos概述 Spring Cloud Alibaba(4)---Naco ...

  8. spring cloud系列教程第六篇-Eureka集群版

    spring cloud系列教程第六篇-Eureka集群版 本文主要内容: 本文来源:本文由凯哥Java(kaigejava)发布在博客园博客的.转载请注明 1:Eureka执行步骤理解 2:集群原理 ...

  9. Spring Cloud Alibaba(2)---Nacos概述

    Spring Cloud Alibaba(2)---nacos概述 上一篇博客讲了有关 SpringCloudAlibaba的概述,这篇开始讲SpringCloudAlibaba组件之一---Naco ...

随机推荐

  1. 六十一、SAP中的逻辑运算与进制转换

    一.代码如下 二.16进制计算过程如下 三.计算结果为16进制的11,也就是10进制的17

  2. 129-PHP子类不能访问父类private修饰的类成员

    <?php class father{ //定义father类 //定义private修饰的类成员和方法 private $hair='curly hair'; private function ...

  3. Babel(1)认识Babel

    阅读文档 Babel中文网 关于 Babel 你必须知道的 如何写好.babelrc?Babel的presets和plugins配置解析 不容错过的 Babel 7 知识汇总 一口(很长的)气了解 b ...

  4. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤

    在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...

  5. Ajax请求传递数组参数的方法

    方法一:拼接字符串参数 var arr={params:['param','param2']}; $.ajax({url:请求地址, data:arr, type:"POST", ...

  6. 安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)

    VM tools:方便我们虚拟机和宿主机之间复制数据或移动文件等 安装VMtools 1.菜单栏-虚拟机-安装VM tools 将其选中 2.进入系统,在桌面位置里面有VM tools的光盘,双击进入 ...

  7. SpringBoot之Order注解启动顺序

    order的规则: order的值越小,优先级越高order如果不标注数字,默认最低优先级,因为其默认值是int最大值该注解等同于实现Ordered接口getOrder方法,并返回数字. @Reten ...

  8. 吴裕雄--天生自然 JAVASCRIPT开发学习: Break 和 Continue 语句

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. js保留的关键字

    js保留的关键字 break else new var case finally return void catch for switch while continue function this w ...

  10. Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断

    项目登录流程如下 用户进入前端登录界面,输入账号密码等,输入完成之后前端发送请求到后端(拦截器不会拦截登录请求),后端验证账号密码等成功之后生成Token并存储到数据库,数据库中包含该Token过期时 ...