欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringCloud Alibaba Nacos 集群配置

程序员文章站 2022-06-13 12:26:39
...

【系统环境】

  1. 集群配置环境为Centos7
  2. Nacos 的版本为1.1.4,MYSQL为5.7,Nginx版本为1.17.9
  3. 需要配置使用到 Nginx 集群,即值暴露Nginx的地址,由Nginx实现负载均衡,图中VIP的角色就可以理解为Nginx。SpringCloud Alibaba Nacos 集群配置
  4. MYSQL版本必须高于5.6.5,这是官方文档规定的。具体参照Nacos官方文档

【参考】

  1. Nacos官方文档
  2. SpringCloud Alibaba 中文开发文档
  3. SpringCloud Alibaba Spring社区开发文档

  1. Nginx配置
  2. MySQL配置

【下载地址】

  1. Nacos下载地址

将下载好的压缩包通过远程访问工具复制到 opt 目录下,并解压。


  • 这里所有的配置都会将原始文件复制一份之后,进行操作,以免造成修改错误无法回滚的尴尬
  • 默认认为已经配置好 MYSQL 和 Nginx

Nacos 配置

  1. 复制一份 opt 目录下解压好的 nacos 文件夹到 /mynacos,
  2. 进入当前文件,conf 目录
  3. 此目录下有 nacos 官方提供的 SQL脚本,执行此脚本,执行成功后查看表
    SpringCloud Alibaba Nacos 集群配置SpringCloud Alibaba Nacos 集群配置
    SpringCloud Alibaba Nacos 集群配置

  1. 同样,在此目录下有 application.properties,在操作之前,首先备份一份。 修改当前配置文件,在后添加如下命令

    vim application.properties
    
    添加
    spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    你的db的username 和 password
    db.user=root
    db.password=root
    
    

  1. 继续修改 conf 目录下的 ,复制 cluster.conf.example 文件为 cluster.conf,修改当前文件。

     1) 设置当前文件就是配置nacos集群启动的 ip 和 port
     2) IP必须和当前虚拟机的网卡ens33相同,不能写127.0.0.1
     3) port 端口号可以自定义 
     4) 根据nacos官方文档可知,nacos集群最少需要三个节点
    
    192.168.xxx.132:3333
    192.168.xxx.132:444
    192.168.xxx.132:5555
    

  1. 修改nacos启动脚本。

     进入bin目录下,修改 startup.sh,首先备份一份
     进入后,输入命令 :set nu,显示行号
     分别修改57.66.134行
     
     ! 同时还需要修改JAVA_HOME,要写成你自己的Jdk位置
     ! 如果虚拟机内存不够大,建议修改虚拟机启动参数,不然机器会自动停掉一台,这里坑很大
    
     57 while getopts ":m:f:s:p:" opt
     58 do
     59     case $opt in
     60         m)
     61             MODE=$OPTARG;;
     62         f)
     63             FUNCTION_MODE=$OPTARG;;
     64         s)
     65             SERVER=$OPTARG;;
     66         p)
     67             PORT=$OPTARG;;
     68         ?)
     69         echo "Unknown parameter"
     70         exit 1;;
     71     esac
     72 done
    
    134 nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 &
    135 echo "nacos is starting,you can check the ${BASE_DIR}/logs/start.out"
    
    #===========================================================================================
    # JVM Configuration
    #===========================================================================================
    if [[ "${MODE}" == "standalone" ]]; then
        JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
        JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
    else
        JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
        JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
        JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
    
    

SpringCloud Alibaba Nacos 集群配置
SpringCloud Alibaba Nacos 集群配置

Nginx 配置
  1. 进入Nginx配置文件目录,备份配置文件

    cd /usr/local/nginx/conf/
    
    cp nginx.conf nginx.conf.bk
    
  2. 修改Nginx的默认端口,集群配置和地址
    SpringCloud Alibaba Nacos 集群配置


测试
  • 从本地浏览器访问地址虚拟机IP:1111/nacos,出现Nacos登录界面后登录
  • 随便写一条测试配置数据,发布后查看虚拟机的MYSQL数据库是否保存有数据,如果更新数据,则表示配置成功
    SpringCloud Alibaba Nacos 集群配置
    SpringCloud Alibaba Nacos 集群配置

补充

  • 编写一个微服务,将Nacos集群配置数据读取出来。

  • Controller

        @Value("${server.port}")
        private String serverPort;
    
        @Value("${config.info}")
        private String configInfo;
    
        @GetMapping(value = "/payment/nacos/{id}")
        public String getPayment(@PathVariable("id") Integer id) {
            return "Hello Nacos Discovery: " + serverPort + "\t id: " + id + ", ConfigInfo : " + configInfo;
    //        return "Hello Nacos Discovery: " + serverPort + "\t id: " + id;
        }
    
  • application.yml && bootstrap.yml

    spring:
      profiles:
        active: dev
    
    server:
      port: 9002
    spring:
      application:
        name: nacos-payment-provider
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.xxx.132:1111
          config:
            server-addr: 192.168.xxx.132:1111
            namespace: 41ccd308-12b9-4673-acb6-21206765998a
            file-extension: yaml
    

  • pom

    • 需要加入这两个依赖,当然依赖也不止这两个,其他的依赖信息,alibaba的官方文档都有说明,或依照个人而定。
     <!-- SpringCloud ailibaba nacos-->
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
     </dependency>
     <!-- nacos config-->
     <dependency>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
     </dependency>
    

  • Nacos配置中心创建 命名空间为dev的yaml格式的配置文件nacos-payment-provider-dev.yaml

    config: 
        info: springcloud alibaba nacos cluster config center, group is DEFAULT_GROUP, version = 1.0
    

    SpringCloud Alibaba Nacos 集群配置


  • 启动项目:通过 idea 插件访问 http://localhost:9002/payment/nacos/1001
    SpringCloud Alibaba Nacos 集群配置
  • 如图所示,注册和配置成功。