• 献给Nacos小白的一篇好文:集群环境搭建


    集群环境搭建

    Nacos单例模式不推荐用在生产环境,所以需要对nacos服务做高可用,而nacos集群正是为了解决这个问题而来的。既然是集群,那么就涉及到数据存储一致性问题,虽然nacos提供了内嵌derby数据库及本地文件等形式,但是不能在跨服务器节点实例间进行数据同步或保持一致,所以,需要一个独立的存储系统,目前nacos1.4.3版本推荐使用的是开源的MySQL数据库。 

    | Nacos集群构建

    | 集群验证及使用

    | 一些注意事项

    一、Nacos集群构建

    1、前置环境准备

    1.1 JDK/JRE

    因为nacos采用java开发,其需要运行在jdk/jre环境,所以需要先安装jdk/jre,这里推荐1.8+版本以上,具体安装过程请读者自行查阅资料。

    1.2 MySQL8.x

    正如上面介绍,目前版本的nacos集群本身没有提供能够解决跨服务器节点nacos实例数据一致的支持,其推荐使用开源的MySQL数据库(推荐8+版本),使其作为一个独立的存储系统,供各个nacos共同使用,解决了数据一致性的问题。官方建议MySQL至少是主备形式,也可以是集群模式,做到高可用即可,具体的搭建过程请读者查阅资源自行实现。

    2、服务器环境

    序号

    IP地址

    系统类型

    操作系统

    1

    182.168.157.134

    Linux

    CentOS7.x

    2

    182.168.157.136

    Linux

    CentOS7.x

    3

    182.168.157.147

    Linux

    CentOS7.x

    3、具体部署过程

    以下操作需在三台服务器同步操作:

    # 解压缩nacos服务软包

    $ tar -xvf nacos-server-1.4.3.tar.gz

    $ cd nacos

    $ pwd 

    /home/nacos

    # 创建集群配置文件

    $ cd /home/nacos/conf

    $ cp cluster.conf.example cluster.conf

    $ vim cluster.conf

    182.168.157.134:8848

    182.168.157.136:8848

    182.168.157.147:8848

    # 外置数据源配置

    $ cd /home/nacos/conf

    $ vim application.properties

    db.num=1

    db.url.0=jdbc:mysql://182.168.157.134:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true

    db.user.0=root

    db.password.0=root@test123

    防火墙端口放行

    如果内网服务器开启了防火墙,各nacos节点均须开放8848和7848端口,否则参与nacos集群的各个节点之间无法选举,进而集群选举失败。另外,安装了mysql的服务器若开启了防火墙,也需要开放3306端口,否则无法链接到数据库。

    4、nacos服务启动

    三台机器同步执行如下命令,以集群模式启动,关闭可使用sh shutdown.sh:

    $ cd /home/nacos/bin

    $ sh startup.sh 

    启动完成后,可查看/home/nacos/logs下的nacos.log日志,查看启动是否完成或分析某些问题。若一切正常时,可访问任何一台机器的nacos网站,如:

    http://182.168.157.134:8848/nacos/#/login

    默认nacos的账号和密码:nacos/nacos,输入登录即可。

    集群是否搭建成功,登录nacos后,切换到菜单:集群管理->节点列表,可看到上图所示三台机器的IP和状态信息。

    5、开启安全认证

    若要为nacos开启安全认证,需要在每个nacos的application.properties配置文件中添加如下内容,添加后需要重启nacos实例才能生效:

    nacos.core.auth.enabled=true

    注意:

    开启密码认证后,服务程序注册及配置时,需要添加用户名和密码才能注册或配置成功。具体的账号和密码,可在nacos ui控制台手动添加和修改,默认账号/密码:nacos/nacos。

    二、集群验证及使用

    这里我们以springboot服务为例,验证下nacos集群是否可正常注册,具体项目构建不在这里介绍,这里仅罗列一些关键的配置内容,这里构建的服务为provider-service,我们来试试它能否注册到nacos集群中。

    1、pom.xml配置

    <dependencies>


    <dependency>
        <groupId>com.alibaba.cloudgroupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
    dependency>

    dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-alibaba-dependenciesartifactId>
                <version>2.2.1.RELEASEversion>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>

    这里选用了nacos spring cloud组件,因为其提供了一些便捷的API和简洁配置。

    2、bootstrap.yml配置

    spring:
      
    application:
        
    name: provider-service
      
    cloud:
        
    nacos:
          ### 指定用户名和密码
          username: nacos
          
    password: nacos
          
    ### 服务注册与发现
          discovery:
            
    ### 服务注册地址及端口
            server-addr: 182.168.157.134:8848,182.168.157.136:8848,182.168.157.147:8848

    如上所示,如果不指定username和password时,服务无法注册到nacos,而server-addr指定集群各个服务器nacos实例的IP和端口号,中间使用,号分割即可。

    3、启动程序注册

    服务程序启动后,若控制台无报错,就可在nacos ui控制台的服务列表中看到服务provider-service已注册成功。

    默认情况下,服务注册到nacos的默认空间public中,而所属分组为默认分组DEFAULT_GROUP,即代表服务已注册到集群中。

    说明:

    当我们关掉当前的leader实例后,其它备选nacos实例会自动晋升为leader,继续对外提供正常服务。

    三、一些注意事项

    1、MySQL依赖

    Nacos1.4.3版本构建的集群环境,其依赖的统一独立存储系统依然选用开源的mysql数据库,这里推荐使用8+版本,另外,考虑到mysql高可用情况,官方建议mysql至少为主备模式或是集群模式。

    2、防火墙放行

    如果内网服务器开启了防火墙,各nacos节点均须开放8848端口,否则参与nacos集群的各个节点之间无法选举,进而集群选举失败。另外,安装了mysql的服务器若开启了防火墙,也需要开放3306端口,否则无法链接到数据库。

     

  • 相关阅读:
    Windows 多媒体编程库 DirectX 介绍
    安卓性能优化,UI优化漫谈
    thinkphp和laravel一样吗
    w字符编码
    (附源码)小程序 音乐播放器小程序 毕业设计 170900
    大型医院HIS系统源码 优质源码 医院管理系统源码
    BUG系列路径规划算法原理介绍(六)——BugFlood算法
    Tomcat概述和基础优化
    C 练习实例15
    数据结构——3道栈和队列OJ题
  • 原文地址:https://blog.csdn.net/why_2012_gogo/article/details/126167005