天天看点

3. SpringCloud Alibaba Nacos 之 集群

SpringCloud Alibaba系列文章列表

0. SpringCloud Alibaba入门简介

1. SpringCloud Alibaba Nacos 之 服务注册中心

2. SpringCloud Alibaba Nacos 之 服务配置中心

3. SpringCloud Alibaba Nacos 之 集群

4. SpringCloud Alibaba Sentinel 服务限流熔断(万字长文)

文章目录

      • **SpringCloud Alibaba系列文章列表**
      • 1. Nacos集群部署说明
      • 2. docker安装nacos集群
        • 2.1 下载安装脚本(nacos-docker-master.zip)
        • 2.2 Nginx配置
      • 3. 项目实战配置

1. Nacos集群部署说明

参考 https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
3. SpringCloud Alibaba Nacos 之 集群

需要1个nginx+3个nacos注册中心+1个mysql;

真正集群肯定是至少三台linux服务器,来跑3个nacos;

但是由于个人只有一台2G的Linux服务器(实际可用1G多点,小的可怜),跑一个nacos估计就撑死了;想跑集群不太可能;

如果用docker的话,一台linux服务器,需要安装docker,跑3个nacos,一个mysql;1G多也不够;

最后采用的方案是docker方案,然后进行改造;

本服务器,用docker跑三个nacos,再借一台服务器跑mysql;nginx安装在windows本地来访问服务器;

2. docker安装nacos集群

参考 https://github.com/nacos-group/nacos-docker

2.1 下载安装脚本(nacos-docker-master.zip)

下载地址:https://github.com/nacos-group/nacos-docker

放到服务器中解压

#解压
unzip nacos-docker-master.zip
#进入
cd nacos-docker-master/
#启动
docker-compose -f example/cluster-hostname.yaml up
           

如果内存够大,上面直接就ok了;实际情况内存不够,nacos一直重启;所以改造如下:

  1. 修改启动脚本cluster-hostname.yaml
    version: "3"
    services:
      nacos1:
        hostname: nacos1
        container_name: nacos1
        image: nacos/nacos-server:latest
        volumes:
          - ./cluster-logs/nacos1:/home/nacos/logs
          - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
        ports:
          - "8848:8848"
          - "9555:9555"
        env_file:
          - ../env/nacos-hostname.env
        #restart: always
        #depends_on:
        #  - mysql
    
      nacos2:
        hostname: nacos2
        image: nacos/nacos-server:latest
        container_name: nacos2
        volumes:
          - ./cluster-logs/nacos2:/home/nacos/logs
          - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
        ports:
          - "8849:8848"
        env_file:
          - ../env/nacos-hostname.env
        #restart: always
        #depends_on:
          #- mysql
      nacos3:
        hostname: nacos3
        image: nacos/nacos-server:latest
        container_name: nacos3
        volumes:
          - ./cluster-logs/nacos3:/home/nacos/logs
          - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
        ports:
          - "8850:8848"
        env_file:
          - ../env/nacos-hostname.env
        #restart: always
        #depends_on:
        #  - mysql
               
    注释掉mysql相关的;#restart: always是自动重启,因为测试所以就是注释掉了;
  2. 修改环境变量/nacos-docker-master/env/nacos-hostname.env
    #nacos dev env
    PREFER_HOST_MODE=hostname
    NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
    MYSQL_SERVICE_HOST=主机ip
    MYSQL_SERVICE_DB_NAME=nacos_devtest
    MYSQL_SERVICE_PORT=3306
    MYSQL_SERVICE_USER=用户名
    MYSQL_SERVICE_PASSWORD=密码
    #JVM参数限制
    JVM_XMS=256m
    JVM_XMX=256m
    JVM_XMN=128m
    JVM_MS=128m
    JVM_MMS=128m
               
  3. mysql添加数据库 nacos_devtest ,执行数据库脚本nacos-mysql.sql

    nacos-mysql.sql在nacos安装包下 conf目录下面,安装包下载地址 https://github.com/alibaba/nacos/releases

    3. SpringCloud Alibaba Nacos 之 集群
    3. SpringCloud Alibaba Nacos 之 集群
#启动
docker-compose -f example/cluster-hostname.yaml up
#查看启动日志
cd example/cluster-logs/nacos1
tail -f start.out 


           
3. SpringCloud Alibaba Nacos 之 集群
3. SpringCloud Alibaba Nacos 之 集群

2.2 Nginx配置

upstream cluster{
		server 服务器ip:8848;
		server 服务器ip:8849;
		server 服务器ip:8850;
	}
    location / {
    	proxy_pass http://cluster;
    }
           
3. SpringCloud Alibaba Nacos 之 集群

启动nginx,访问localhost/nacos , nacos/nacos登录

如下图,集群配置成功;

3. SpringCloud Alibaba Nacos 之 集群

3. 项目实战配置

采用之前的项目cloudalibaba-provider-payment9001 (具体参考博客 https://blog.csdn.net/shuai8624/article/details/111241747 )

修改application.yml文件中的server-addr 为 nginx地址 http://localhost:80

server:
  port: 9001

spring:
  application:
    name: nacos-payment-provider
  cloud:
    nacos:
      discovery:
        server-addr: http://localhost:80 #配置nacos地址

management: #暴露端口
  endpoints:
    web:
      exposure:
        include: '*'
           

启动项目,如下图注册成功

3. SpringCloud Alibaba Nacos 之 集群

点赞+评论+关注

本文源码地址: https://gitee.com/shuaidawang/SpringCloudDemo.git

有错误的地方欢迎指正!可以加入qq交流群: 700637673

继续阅读