• 【无标题】


    前置条件

    nacos安装部署非常的简单,下面一起学习一下nacos的安装。初步了解一下nacos的安装过程。

    上面基础环境奠定了以后开始做nacos集群的安装和部署工作。

    下载nacos

    根据官方推荐,目前推荐使用2.0.3稳定版本。下载地址:nacos在github上的下载地址

    特别提醒:

    这里有个坑需要规避,进入这个下载地址后,不要直接点击后面的zip或者tar.gz下载,需要点击对应版本号,进入详情页面,拉到底部下载,下载的包名是nacos-server-2.0.3.tar.gz。如果直接点击后面的zip或者tar.gz下载,下载的包是nacos-2.0.2.tar.gz,这个不是编译好的安装包。

    上传nacos安装包到服务器上

    • 可以通过scp命令将nacos安装包上传到服务器上,命令如下:
    scp D:\\nacos-server-2.0.3.tar.gz root@192.168.75.130:/usr/local
    
    • 1
    • 解压nacos安装包:
    tar -xvf nacos-server-2.0.3.tar.gz
    
    • 1
    • 将名称改为nacos-8840
    mv nacos nacos-8840
    
    • 1

    持久化数据库配置

    • 进入nacos-8840/cnof目录下,将Connect URL of DB修改为如下内容:
    spring.datasource.platform=mysql
    jdbc.DriverClassName=com.mysql.cj.jdbc.Driver ## 如果使用数据库是MySQL8,需要加上此驱动名,否则不用加
    db.num=1
    db.url.0=jdbc:mysql://192.168.75.128:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
    db.user.0=root
    db.password.0=123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • nacos-8840/conf目录下的nacos-mysql.sql文件复制到数据库所在的服务器内,创建名为nacos_config数据库,并在数据库内执行sql脚本文件;
    ## 复制文件到数据库所在服务器
    scp nacos-mysql.sql root@192.168.75.128:/usr/local
    ## 创建数据库并执行脚本
    mysql -uroot -p123456
    create datasource nacos_config
    use nacos_config
    source /usr/local/nacos-mysql.sql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    修改集群配置

    • nacos-8840/conf目录下的cluster.conf.example文件复制一份并重命名为cluster.conf,修改其内容如下:
    ## 复制并重命名
    cp cluster.conf.example cluster.conf
    ## 修改内容,将文件内最后三行换成现有的集群ip和端口,如果超过3台依次向后加即可
    vim cluster.conf
    ## 修改后如下:
    192.168.75.130:8840
    192.168.75.130:8850
    192.168.75.130:8860
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 修改application.properties文件,将server-port修改为8840
    ### Default web context path:
    server.servlet.contextPath=/nacos
    ### Default web server port:
    server.port=8840
    
    • 1
    • 2
    • 3
    • 4

    配置优化点

    这个优化点在你的服务器性能较好的情况下,可以不做,我是在单台虚拟机里面部署三个nacos服务,资源紧张,修改一下此配置更放心,进入nacos-8840/bin目录,找到startup.sh文件,将文件中java堆栈的配置修改小一点,这里修改成128m,修改内容JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m",具体修改如下:

    ## 修改前的内容
    if [[ "${MODE}" == "standalone" ]]; then
        JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
        JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
    else
        if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
            JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
        fi
        JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -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"
    fi
    ## 修改后的内容
    if [[ "${MODE}" == "standalone" ]]; then
        JAVA_OPT="${JAVA_OPT} -Xms512m -Xmx512m -Xmn256m"
        JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
    else
        if [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; then
            JAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"
        fi
        JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
        JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"
        JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    复制集群节点

    • 上面已经完成端口为8840节点的配置,接下来将nacos-8840复制两份出来,并重命名:
    cp -R nacos-8840 nacos-8850
    cp -R nacos-8840 nacos-8860
    
    • 1
    • 2
    • 修改88508860节点的配置,很简单,将application.properties文件中的server-port做对应的修改即可。

    启动集群服务

    • 分别执行三个节点的startup.sh命令:
    # 在/usr/local目录下执行
    ./nacos-8840/bin/startup.sh
    ./nacos-8850/bin/startup.sh
    ./nacos-8860/bin/startup.sh
    
    • 1
    • 2
    • 3
    • 4
    • 检查节点是否已经启动成功:
    netstat -ano | grep 8840
    netstat -ano | grep 8850
    netstat -ano | grep 8860
    
    • 1
    • 2
    • 3

    配置nginx负载均衡

    • 主要配置负载和监听,配置内容如下:
    ## 在http下配置负载
    upstream cluster {        
        server 127.0.0.1:8840;
        server 127.0.0.1:8850;
        server 127.0.0.1:8860;
    }
    ## 在server内配置监听
    listen       8848;     ## 监听8848端口                 
    server_name  localhost;                                        
    #charset koi8-r;                                                        
    #access_log  logs/host.access.log  main;                                      
    location / {                            
        #root   html;                       
        #index  index.html index.htm;       
        proxy_pass http://cluster;   ## 代理到负载上      
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 配置完成后启动或者重启nginx即可。

    访问nacos页面

    在浏览器中输入:http://192.168.75.130:8848/nacos,会弹出登录页面,默认用户名和密码都是nacos,到此集群部署大功告成。

    存在的坑点

    官方解释

    nacos2.0版本相比1.x新增了gRPC的通信方式,因此需要增加两个端口,新增端口在配置的主端口(server.port)基础上,进行一定的偏移量自动生成。偏移规则:

    端口与主端口偏移量描述
    98481000客户端gRPC请求服务端端口,用于客户端服务发起连接和请求
    98491001客户端gRPC请求服务端端口,用于服务间同步等

    改动引起的变化

    因为这个改动,在一台机器上部署nacos集群时,不能将运行端口设置为连续端口,比如:884088418842,否则会发生端口冲突。

    运行在8840端口nacos服务实际上会占用884089408941三个端口;

    运行在8841端口nacos服务实际上会占用884189418942三个端口;

    运行在8842端口nacos服务实际上会占用884289428943三个端口。

  • 相关阅读:
    ChatGPT如何应对用户提出的道德伦理困境?
    如何通过Java应用程序创建Word表格
    FPGA+ARM异核架构,基于米尔MYC-JX8MMA7核心板的全自动血细胞分析仪
    亚马逊鲲鹏系统全自动化功能有哪些
    C语言画直方图
    VMware 打开运行一段时间后卡死,CPU占比增至100%
    Matlab论文插图绘制模板第116期—带时间刻度的图
    Mybatis-plus学习笔记
    多线程消息处理(支持动态调整线程数)
    LNMP网站架构
  • 原文地址:https://blog.csdn.net/millery22/article/details/125564078