• centos7安装nacos2.1.0


    前言

    时隔多年,重新自己折腾springcloud,视角成熟了很多。在zookeepereureka、etcd、nacos等几个注册中心中,最后选中了nacos作为注册中心。为什么呢?也是填过一些坑:

    • zookeeper:有的时候会出现整个集群不可服务的时候,就是它重新选举的时候,还是比较难接受。
    • etcd:说实话是我从k8s里听说的,说想试试,但是网传好像策略和zookeeper是类似的,只是算法不同。
    • eureka:之前用过,也研究过一些。其实挺好的,唯一介意的是它2.0版本闭源了。我这次的选择其实是选择自己以后长期的技术栈的。所以就不选它了。
    • nacos:说实话,以前没听过。最近入职的公司在用它管理集群里的服务配置。选注册中心的时候发现它还能做注册中心。阿里开源的。在CAP策略中也是可选的。大体上靠谱,就选它了。

    下载

    官方链接
    其实在官网我们可以找到它的github,然后找到对应版本的压缩包下载。2.1.0官方下载页面 之所以要正式说下载这事,是因为我在研究的过程中发现,nacos在数据库方面仅支持mysql不支持postgresql。而pg是我这次的数据库选型,我也不想因为这个原因换,也不想因为这个原因引入mysql。
    说实话,我觉得这是不正常的,毕竟postgresql的使用量位居世界第四。于是去nacos的issue里扒了扒。发现,官方似乎没打算支持postgresql。然后在网上又找到了很多改源码支持postgresql的帖子。添加postgresql支持的原贴 然后我发现它还打好了包放在了github上,好人呀。postgresql版nacos下载页 是的,我用的就是这个版本。最后的最后,我发现默认使用的是内置嵌入式数据库。算了,不折腾了,有需要再折腾postgresql数据源吧。

    启动

    这里我没打算尝试集群部署,就单实例部署。压缩包解压后在nacos目录执行如下指令

    sh bin/startup.sh -m standalone
    

    开机启动

    我的操作系统是centos。在/lib/systemd/system/创建文件nacos.service

    vim /lib/systemd/system/nacos.service
    

    内容如下:

    [Unit]
    Description=nacos
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/sh /opt/nacos/bin/startup.sh -m standalone
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    

    注意EsecStart的指令中地址都是绝对地址。
    然后执行如下指令

    systemctl daemon-reload  # 重新加载服务
    systemctl start nacos # 启动服务
    

    是的,这时会报错。原因是在startup.sh文件中\r是windows下的符号,在linux下不认。
    执行如下指令:

    sed -i 's/\r//g' /opt/nacos/bin/*
    

    注意把/opt/nacos换成你的nacos目录。这个的目的就是把\r换成\n。
    然后,还有个事,就是脚本里其实是找不到JAVA_HOME的。所以需要在startup.sh的第一行添加JAVA_HOME的声明,我的如下:

    JAVA_HOME='/opt/jdk-11'
    

    注意换成自己jdk的路径。再执行启动服务的指令,就会启动成功了。

    systemctl enable nacos #设置开机启动
    

    这个时候,开机启动设置成功。

    打开nacos

    浏览器里打开nacos的地址:

    http://192.168.3.30:8848/nacos
    

    默认用户名密码都是nacos。有管理界面用,还是很爽的。

    服务发现

    我们这里的描述是建立在一个可运行的springbootweb服务上的。在此基础之上,我们再添加改动。也不多,大概也就以下几点:

    添加依赖

    
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-discovery
        2021.0.4.0
    
    

    这里和我官网的区别是,我给了一个具体的版本。因为这个库是由阿里维护的,它并不会严格的追着spring的每个版本进行更新。因为我经历了几个小时痛苦的解决冲突的问题。最后我们公布适配的其它依赖。

    添加代码

    在Application类上添加一个注解@EnableDiscoveryClient,如下:

    @SpringBootApplication(exclude= DataSourceAutoConfiguration.class)
    @EnableDiscoveryClient
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

    添加配置

    spring:
      application:
        name: service-provider
      cloud:
        nacos:
          discovery:
            server-addr: 192.168.3.30:8848
    

    这里主要配置的是应用名字和注册中心地址

    其它依赖

    这里主要是springboot的版本,以及我在解决冲突时遇到的jackson-databind的冲突导致的类找不到。具体的依赖如下:

    
        com.fasterxml.jackson.core
        jackson-databind
        2.12.2
    
    
        org.springframework.boot
        spring-boot-starter
        2.6.11
    
    
        org.springframework.boot
        spring-boot-starter-web
        2.6.11
    
    

    可能还有其他的springboot系列的starter,尽量用2.6.x大版本的依赖。

    未完待续

    后续的使用,动态更新配置后面调试到了再更新进来,暂时先到这里

  • 相关阅读:
    Go指针探秘:深入理解内存与安全性
    物联网感知-高压直流长距离供电在线实时监测(光纤传感技术)
    ubuntu 卸载miniconda3
    新超导光子电路
    序列化协议:Protobuf入门
    ssm毕设项目学生信息管理系统ow05a(java+VUE+Mybatis+Maven+Mysql+sprnig)
    python的堆队列(优先队列)
    超市的执行者-《软件方法》自测题解析024
    DTFT和DFT有何区别?一文为你讲解清楚
    循环队列----数据结构
  • 原文地址:https://blog.csdn.net/linghuanxu/article/details/126957723