• linux环境搭建nacos集群详解


    一、集群部署说明

    官网集群部署:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

    集群架构如下:

    在这里插入图片描述

    二、环境准备

    搭建集群首先要具备JDK环境,其次需要,1个Nginx+3个nacos注册中心+1个mysql,集群按正常来说应该要具备三台服务器,我这里设备有限,就在一台机器上来搭建集群了!Nginx主要用他作为负载均衡。如果您也是一台Linux机器,Linux内存最少要4个G左右,不然可能会内存爆满,然后会导致Nacos启动不成功等问题!

    1. jdk环境:https://blog.csdn.net/weixin_43888891/article/details/126810947?spm=1001.2014.3001.5501
    2. 基于docker安装mysql:https://blog.csdn.net/weixin_43888891/article/details/113577006
    3. 创建Nacos数据库,并执行脚本(Nacos数据持久化到mysql),脚本文件:https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql
    4. 安装Nginx:https://blog.csdn.net/weixin_43888891/article/details/122831636
    5. Nacos下载地址:https://github.com/alibaba/nacos/releases

    在这里插入图片描述
    6. 查看nginx是否启动成功:ps -ef | grep nginx

    在这里插入图片描述

    三、搭建Nacos集群

    我这里用的是一台机器,假如你是三台机器,那么每一台都需要这么操作,切记每个nacos的cluster.conf要保持一致,并且application.properties当中指定的mysql数据库也都要是一致的。

    第一步:上传解压:

    1. 创建存放nacos的文件夹:mkdir /opt/nacos
    2. 通过xftp上传tar包到/opt/nacos
    3. 解压:tar -zxvf nacos-server-2.1.1.tar.gz

    第二步:修改application.properties,指定mysql持久化

    1. 修改配置文件:vi /opt/nacos/nacos/conf/application.properties ,Esc进入编辑状态
    spring.datasource.platform=mysql
    
    db.num=1
    db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=root
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. :wq保存application.properties配置

    第三步:指定集群的IP和端口

    1. 进入/opt/nacos/nacos/conf复制出cluster.conf:cp cluster.conf.example cluster.conf
    2. cluster.conf内容如下,在文件最下方修改即可(这里我用本机真实ip地址或者127.0.0.1,在后面均可正常启动,但还是推荐使用本机真实ip地址,如果使用127.0.0.1,在nacos页面的集群管理当中会出现两个节点,一个是127.0.0.1,一个是真实ip的!):vi cluster.conf 改完后 :wq保存cluster.conf配置

    在这里插入图片描述

    第四步:由于用的一台机器,而startup.sh并没有传入端口号的参数,所以手动加一个

    编辑Nacos的启动脚本startup.sh,使它能够接受不同的启动端口(如果本身就是三台机器,可以跳过这一步)

    • /opt/nacos/nacos/bin:目录下有startup.sh,平时单机版的启动,都是./startup.sh即可。
    • 集群启动,我们希望可以类似其它软件的shell命令,传递不同的端口号启动不同的nacos实例。命令:./startup.sh -t 3333 表示启动端口号为3333的nacos服务器实例,和上一步的cluster.conf配置的一致。

    一共需要修改两个地方,如下:vi startup.sh

    在这里插入图片描述在这里插入图片描述

    在这里插入图片描述

    修改后:-Dserver.port=${PORT} 一定不要放错地方了,放到"$JAVA"后面

    在这里插入图片描述

    第五步:copy两个nacos

    由于我们没有多台机器,只有一台,那我们一台机器启动多个nacos,在低版本当中支持一个nacos安装包多个启动,但是2.0以后版本是不支持的,不然会报错:Fail to init node, please see the logs to find the reason.,所以一切配置好之后直接copy两个文件: cp -r /opt/nacos/nacos /opt/nacos/nacos2

    在这里插入图片描述

    第六步:启动执行

    sh /opt/nacos/nacos/bin/startup.sh -t 3333
    sh /opt/nacos/nacos1/bin/startup.sh -t 4444
    sh /opt/nacos/nacos2/bin/startup.sh -t 5555 
    
    • 1
    • 2
    • 3
    1. 查看启动日志:tail -f /opt/nacos/nacos/logs/start.out
    2. 出现报错(没有出现报错的话忽略这一步):
      在这里插入图片描述
      • (1)查看哪个安装包包含该库:yum provides libstdc++.so.6
        在这里插入图片描述

      • (2)安装:yum install libstdc+±4.8.5-44.el7.i686

      • (3)停止nacos:ps -ef | grep nacos然后再kill -9 进程id 这时候再启动就不报错了!

    四、调整Nginx的配置

    在实际开发当中是可以使用Nginx集群的,当然我这里用的是单机Nginx

    1. 修改配置文件:vi /usr/local/nginx/conf/nginx.conf
    2. 在nginx.conf的http块加如下配置:
    upstream cluster {
         server 127.0.0.1:3333;
         server 127.0.0.1:4444;
         server 127.0.0.1:5555;
     }
    
    server {
         listen       1111;
         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
    • 17
    1. cd /usr/local/nginx/sbin
    2. 让配置生效:./nginx -s reload

    防火墙相关设置:

    1. 查看是否开启防火墙:systemctl status firewalld
    2. 如果开启了,需要开放1111端口: firewall-cmd --zone=public --add-port=1111/tcp --permanent
    3. 重启防火墙:systemctl restart firewalld.service
    4. 查看已经开放的端口号:firewall-cmd --list-all

    如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估:systemctl stop firewalld.service

    五、测试访问

    http://192.168.1.104:1111/nacos

    在这里插入图片描述

    新建一个配置测试:

    在这里插入图片描述

    查看数据库:

    在这里插入图片描述

    微服务注册:

    server:
      port: 9002
    
    spring:
      application:
        name: nacos-payment-provider
      cloud:
        nacos:
          discovery:
            #配置Nacos地址
            #server-addr: localhost:8848
            # 换成nginx的1111端口,做集群
            server-addr: 192.168.111.144:1111
    
    
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    【C# 基础精讲】Task和Task<T>的应用
    新建模板,或组件自适应
    每日一题:leetcode1155 掷骰子等于目标和的方法数
    Latex语法学习08:打通latex、mathml和word公式转换
    IDEA 2023git提交和拉数据都出现问题,分支名一直有感叹号Rebasing
    git-仓库迁移并保留commit log
    【数据结构】谈谈ArrayList和LinkedList的区别
    学生个人网页设计作品:旅游网页设计与实现——成都旅游网站4个页HTML+CSS web前端网页设计期末课程大作业 学生DW静态网页设计 学生个人网页设计作品
    文心一言 VS 讯飞星火 VS chatgpt (84)-- 算法导论8.2 1题
    公网远程访问GeoServe Web管理界面【内网穿透】
  • 原文地址:https://blog.csdn.net/weixin_43888891/article/details/126808112