• 9--SpringCloud Alibaba:Nacos周阳老师


    2021:9--SpringCloud Alibaba:Nacos

    https://www.cnblogs.com/coderD/p/14350076.html SpringCloud

    https://www.cnblogs.com/coderD/p/14350073.html SpringCloud 和 Eureka

    https://www.cnblogs.com/coderD/p/14350082.html SpringCloud 和 Zookeeper

    https://www.cnblogs.com/coderD/p/14350086.html SpringCloud-Ribbon/OpenFeign

    https://www.cnblogs.com/coderD/p/14350091.html SpringCloud:Hystrix 断路器

    https://www.cnblogs.com/coderD/p/14350097.html SpringCloud:服务网关 gateway

    https://www.cnblogs.com/coderD/p/14350099.html SpringCloud:Config/Bus

    https://www.cnblogs.com/coderD/p/14350103.html SpringCloud:Stream/Sleuth

    https://www.cnblogs.com/coderD/p/14350110.html SpringCloud Alibaba:Nacos

    https://www.cnblogs.com/coderD/p/14350114.html SpringCloud Alibaba:Sentinel

    https://www.cnblogs.com/coderD/p/14350119.html SpringCloud Alibaba:Seata

    代码:https://gitee.com/xue--dong/spring-cloud

    阳哥脑图:https://gitee.com/xue--dong/spring-cloud

    SpringCloudAlibaba 简介

    1. 为什么出现 SpringCloud Alibaba

        因为Spring Cloud NetFlix很多项目进入维护模式:
    复制代码
    

    img

        维护模式:
            意味着SpringCloud 团队将不会再向模块添加新的功能,只会修复打的bug。
        
        而且在Greenwich版本普及一年后,将不再支持这些模块。
    复制代码
    

    2. SpringCloud Alibaba 带来了什么

    GitHub

        诞生:
            2018.10.31,Spring Cloud Alibaba 正式入驻了Spring Cloud 官方孵化器,并在Maven中央
        仓库发布了第一个版本。
    复制代码
    

    img

            <dependencyManagement>
                <dependencies>
                    <dependency>
                        <groupId>com.alibaba.cloud</groupId>
                        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                        <version>2.1.0.RELEASE</version>
                        <type>pom</type>
                        <scope>import</scope>
                    </dependency>
                </dependencies>
            </dependencyManagement>
    复制代码
    

    3. SpringCloud Alibaba 学习资料获取

    官网资料

    Spring Cloud Alibaba Nacos 服务注册和配置中心

    对应着我们前面学的:Eureka/Consul/Zookeeper   Config+Bus
    复制代码
    

    1 Nacos 简介

    前4个字母分别为Naming和Configuration的前两个字母,最后的s为service
    复制代码
    

    1.1 是什么

        一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。
        
        Nacos:Dynamic Naming and Configuration Service
        
        Nacos就是注册中心+配置中心的组合。
        
        等价于:Eureka + Config + Bus
    复制代码
    

    1.2 能干嘛

        替代Eureka做服务注册中心
        
        替代Config做服务配置中心
    复制代码
    

    2 Nacos 的安装

        本地Java8+Maven环境已经OK
        
        下载完成后,解压安装包,直接运行bin目录下的startup.cmd
    复制代码
    

    img

        命令运行成功后直接访问:
            http://localhost:8848/nacos
            
            http://localhost:8848/nacos/#login
    复制代码
    

    img

        成功安装:
            用户名/密码:nacos/nacos
    复制代码
    

    Nacos 作为服务注册中心演示

    1. 基于 Nacos 的服务提供者

    1.1 新建 Module

        cloudalibaba-provider-payment9001
    复制代码
    

    1.2 POM

        1. 父POM
    复制代码
          <!--spring cloud 阿里巴巴-->
          <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.1.0.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
    复制代码
        2.  子POM
    复制代码
        <dependencies>
    
            <!--spring cloud alibaba nacos-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
            <!--web/actuator这两个一般一起使用,写在一起-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--监控-->
            <dependency>
                <groupId>
                    org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!--热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    复制代码
    

    1.3 yml

    img

            server:
              port: 9001
            
            spring:
              application:
                name: naocs-payment-provider
              cloud:
                nacos:
                  discovery:
                    server-addr: localhost:8848
            
            # 做监控的话:要把这个全部暴露出来
            management:
              endpoints:
                web:
                  exposure:
                    include: "*"  # 注意是双引号
    复制代码
    

    1.4 主启动类

        @SpringBootApplication
        @EnableDiscoveryClient
        public class PaymentMain9001 {
            public static void main(String[] args) {
                SpringApplication.run(PaymentMain9001.class, args);
            }
        }
    
    复制代码
    

    1.5 业务类

        @RestController
        public class PaymentController {
            
            @Value("${server.port}")
            private String serverPort;
            
            @GetMapping(value = "/payment/nacos/{id}")
            public String getPayment(Integer id){
                return "nacos registry, serverPort: "+ serverPort+"	 id"+id;
            }
        }
    复制代码
    

    1.6 测试

        这里不像eureka还要写注册中心微服务,直接安装打开nacos即可。
        
        启动9001:成功注册
    复制代码
    

    img

        测试成功:
            nacos服务注册中心+服务提供者9001都OK了。
    复制代码
    

    1.7 相同的配置再新建一个 module 9002

        1.  步骤略...
        
    
        2.  这里可以有一个取巧的方法:
        
            虚拟映射一个和9001配置相同的9011微服务,端口是9011
    复制代码
    

    img

    img

    2. 基于 Nacos 的服务消费者

        Nacos天生就支持负载均衡。
    复制代码
    

    2.1 新建 Module

        cloudalibaba-consumer-nacos-order83
    复制代码
    

    2.2 pom

        nacos天生就支持负载均衡的
    复制代码
    

    img

        Ribbo:支持负载均衡,自带RestTemplate
    复制代码
        <dependencies>
            <!--spring cloud alibaba nacos-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
    
            <!--引入我们自定义的公共api jar包-->
            <dependency>
                <groupId>com.atguigu.springcloud</groupId>
                <artifactId>cloud-api-commons</artifactId>
                <version>${project.version}</version>
            </dependency>
    
    
            <!--web/actuator这两个一般一起使用,写在一起-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--监控-->
            <dependency>
                <groupId>
                    org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!--热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    复制代码
    

    2.3 yml

        server:
          port: 83
          
        spring:
          application:
            name: naocs-order-consumer
          cloud:
            nacos:
              discovery:
                server-addr: localhost:8848 # 配置nacos注册中心地址
        
        # 消费者将要去访问的微服务名称(成功注册进nacos的微服务提供者)        
        server-url:
          nacos-user-service: http://nacos-payment-provider
    复制代码
    

    2.3 主启动类

        @SpringBootApplication
        @EnableDiscoveryClient
        public class PaymentMain83 {
        
            public static void main(String[] args) {
                SpringApplication.run(PaymentMain83.class, args);
            }
        }
    复制代码
    

    2.4 业务类

    @Configuration
    public class ApplicationContextConfig {
        
        @Bean
        public RestTemplate getRestTemplate(){
            
            
            return new RestTemplate();
        }
    }
    
    
    @RestController
    @Slf4j
    public class OrderNacosController {
    
        @Value("${server-url.nacos-user-service}")
        private String serverURL;
        
        @Resource
        private RestTemplate restTemplate;
        
        @GetMapping("/consumer/payment/nacos/{id}")
        public String paymentInfo(@PathVariable("id") Long id){
            
            return restTemplate.getForObject(serverURL+"/payment/nacos/"+id, String.class);
        }
        
    }
    复制代码
    

    img

    2.5 启动测试

    测试请求:http://localhost:83/consumer/payment/nacos/1
                
    单纯测试:没有查数据库。
    复制代码
    

    img

    报错1:
        
        发生在我们根据微服务名http://nacos-payment-provider,去调用微服务。
        抛出一个UnknownHostException:未知的主机名异常。
        
        因为这个主机名nacos-payment-provider对应的微服务有两个实例,他不知道用哪个,所以会报错。
    复制代码
    

    img

    解决:
        加上负载均衡注解:@LoadBalanced
    复制代码
    

    img

    再次报错2:
    复制代码
    

    img

    分析:
        9001/9002自测都成功,而且也都注册了进去。
        
        但是通过服务名找不到服务实例?
        
        仔细看了看发现服务名写错了:
    复制代码
    

    img

    再次测试:
    
        测试成功,而且默认带有负载均衡。
    复制代码
    

    Nacos 注册中心 -- 基础配置

        Nocas支持模式是可以切换的:AP/CP
    复制代码
    

    img

        Nacos与其他注册中心特性对比:
    复制代码
    

    img

    Nacos 支持 AP 和 CP 模式的切换

        C:  所有节点在同一时间看到的数据是一致的。强一致性
        A: 定义是所有的请求都可以被响应,最起码回复一个兜底的回复。高可用性
    
        何时使用何种模式:
        
            AP模式:
                如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上限,那么就
                可以选择AP模式。
                
                当前主流的服务如Spring Cloud和Dubbo服务,都是用于AP模式。
                
                AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。
                
            CP:
                如果需要在服务级别编辑或存储配置信息,那么CP是必须的,K8S服务和DNS服务则适用于CP模式。
                
                CP模式下则支持注册持久化实例,此时则是以Raft协议为集群运行模式,该模式下注册实例之前
                必须先注册服务,如果服务不存在,则会返回错。
                
        怎么切换:
            
        curl -X PUT '$NACOS_SERVER:8848/nacos/vi/ns/operator/switches?entry=serverMode&value=CP'
    复制代码
    

    Nacos 作为 Config 服务注册中心

        所有的配置信息,以前我们写到了GitHub上,用Config+Bus来进行自动刷新和动态的更新。
        
        现在我们可以直接把配置文件写进nacos,然后再用nacos做类似于config这样的功能。
        从nacos上抓取我们的配置信息。
    复制代码
    

    1. Nacos 作为配置中心 -- 基础配置

        主要添加一个:nacos-config
    复制代码
            <!--nacos-config-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>   
    复制代码
    

    1.1 新建 mudole:作为服务配置客户端

        cloudalibaba-config-nacos-client3377
    复制代码
    

    1.2 POM

        <dependencies>
    
            <!--nacos-config-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
    
            <!--nacos-discovery-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
            <!--web/actuator这两个一般一起使用,写在一起-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <!--监控-->
            <dependency>
                <groupId>
                    org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!--热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
    复制代码
    

    1.3 主配置类

        @SpringBootApplication
        @EnableDiscoveryClient
        public class NacosConfigClientMain3377 {
            public static void main(String[] args) {
                SpringApplication.run(NacosConfigClientMain3377.class, args);
            }
        }
    
    复制代码
    

    1.4 yml

    Nacos同springcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取。
    拉去配置后,才能保证项目的正常启动。
    
    springboot中配置文件的加载是存在优先级顺序的:bootstrap优先级高于application
        
        全局的放在:bootstrap.yml
        自己的放在:application.yml
        
        1.  bootstrap.yml
        
            微服务端口:3377,服务名nacos-config-client,
            注册进localhost:8848
            作为配置客户端
            再去服务注册中心读一个yaml的配置文件
    复制代码
        server:
          port: 3377
        
        spring:
          application:
            name: nacos-config-client
          cloud:
            nacos:
              discovery:
                server-addr: localhost:8848 # Nacos服务注册中心地址
              config:
                server-addr: localhost:8848 # Nacos作为配置中心地址
                file-extension: yaml  # 指定yaml格式的配置
    复制代码
        2.  application.yml
    复制代码
        spring:
          profiles:
            active: dev # 表示找一个开发环境的配置文件
    复制代码
    

    1.5 业务类

        @RestController
        @RefreshScope //支持Nacos的动态刷新功能
        public class ControllerClientController {
            
            @Value("${config.info}")  //在Nacos配置中心的配置文件内容
            private String configInfo;
            
            @GetMapping("/config/info")
            public String getConfigInfo(){
                return configInfo;
            }
        }
    
    复制代码
    

    1.6 在 Nacos 中添加配置信息

    Nacos中的匹配规则:
    
        1.  理论:Nacos中的Data Id的组成格式及与SpringBoot配置文件中的匹配规则
    复制代码
    

    img

            在Nacos Spring Cloud中,Data Id的完整格式如下:
            
            ${prefix}-${spring.profile.active}.${file-extension}
            
            其中:
                
                ${prefix}:为spring.application.name 的值
                
                ${spring.profile.active}:
                    即为当前环境对应的profile
                    当为空时,- 也将不存在,拼接格式变成:${prefix}.${file-extension}
                
                ${file-extension}:配置文件的数据格式,一般是 properties/yaml
                
                注意:nacos没有yml,只识别yaml。
                
            最终的公式:
    复制代码
    ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
            结果:nacos-config-client-dev.yaml 这也是我们要在nacos中配置的文件名。
            
            
            对应着配置文件上的这些:
    复制代码
    

    img

            规则图:
    复制代码
    

    img

        2.  配置新增
    复制代码
    

    img

    1.7 测试

        1.  发送请求:http://localhost:3377/config/info
        
            测试成功:
    复制代码
    

    img

        2.  自带刷新功能
        
            修改Nacos中的yaml配置文件,再次调用查看配置的接口,就会发现配置刷新了
    复制代码
    

    img

    2. Nacos 作为配置中心 -- 分类配置

    2.1 分布式开发中的:多环境多项目管理

        问题1:
        实际开发中,通常一个系统会准备:
            
            dev 开发环境
            test 测试环境
            prod 生产环境
        
        如何保证指定环境启动时服务能正确读取到Nacos上相应环境的配置文件呢?
        
        
        问题2:
        一个大型分布式微服务系统会有很多微服务子项目
        每个微服务项目又都会有相应的开发环境,测试环境,预发环境,正式环境......
        那怎么对这些微服务配置进行管理呢?
    复制代码
    

    2.2 Namespace+Group_Data ID 三者关系?

        最外层的namespace用于区分部署环境的
        
        Group和Data ID逻辑上区分两个目标对象
    复制代码
    

    img

        默认情况:
            Namespace=public
            Group=DEFAULT_GROUP,默认地Cluster是DEFAULT
            
        Nacos默认的命名空间是public,Namespace主要用来实现隔离。
            比方说我们现在有三个环境:开发,测试,生产环境,我们就可以创建三个Namespace,
            不同的Namespace之间是隔离的。
        
        Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去。
        
        Service就是微服务;一个Service可以包含多个Cluster(集群)
        
        Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟化分。
            
            比方说为了容灾,将Service微服务分别部署在杭州机房和广州机房,这时就可以给杭州机房的Service
            微服务起一个集群名称HZ,给广州机房的Service微服务起一个集群名称GZ,还可以尽量让同一个机房
            的微服务互相调用,以提升性能。
            
        最后Instance,就是微服务实例。
    复制代码
    

    2.3 案例 1:DataID 方案

        指定spring.profile.active和配置文件的DataID来使不同环境下读取不同的配置
        
        默认空间+默认分组+新建dev和test两个DataID
        
        通过spring.profile.active属性就能进行多环境下配置文件的读取
        
        1.  新建dev配置DataID
    复制代码
    

    img

        2.  新建test配置DataID
    复制代码
    

    img

        3.  默认的名称空间:public
    复制代码
    

    img

        4.  通过spring.profile.active属性就能进行多环境下配置文件的读取
        
            想加载那个DataID就配置哪个
    复制代码
    

    img

            为什么可以这样映射:因为DataID的命名规则和Nacos进行文件匹配的规则
    复制代码
    

    img

    img

        5.  测试:
    复制代码
    

    img

            测试成功
    复制代码
    

    2.4 案例 1:DataID 方案 小结

        只通过Data ID 就可以切换加载不同的配置文件。
        
        主要原因是Data ID命名组成规则:
            
            在配置文件中进行相关配置即可。
    复制代码
    

    img

    2.5 案例 2:分组 Group 方案

        通过Group实现环境分区
        
        1.  新建一个配置文件,添加分组DEV_GROUP
    复制代码
    

    img

        2.  新建一个配置文件,添加分组TEST_GROUP
    复制代码
    

    img

        3.  此时我们的DataID一样,但是Group不一样。
    复制代码
    

    img

        4.  bootstrap+application操作
        
            在config下增加一条group的配置即可,可配置为DEV_GROUP或TEST_GROUP
    复制代码
    

    img

        5.  测试:http://localhost:3377/config/info
    复制代码
    

    img

    2.6 案例 2:分组 Group 方案 小结

        案例一,是在默认名称空间namespace下,创建的两个不同的DataID,都在默认的分组下。
        
        我们也可以新建DataID两个相同的配置文件,但是指定不同的分组(环境),再通过在配置
        文件中添加相关的配置,即可指定。
    复制代码
    

    img

    2.7 案例 7:分组 Namespace 方案

        1.  新建dev/test的Namespace:
    复制代码
    

    img

        2.  回到服务管理-服务列表查看
    复制代码
    

    img

        3.  在这两个新建的namespace中分别新建三个不同分组的配置文件
    复制代码
    

    img

        4.  在配置文件中指定Namespace
    复制代码
    

    img

        5.  测试:报错
    复制代码
    

    img

            只要是这种报错,那么一定是对应关系没写好,client在nacos中没找到对应的配置文件,
            或者配置文件中没写config.info="xxxxxx"
            
            查错后再测试:测试成功
    复制代码
    

    img

    Nacos 集群和持久化配置 --- 很重要

            我们之前在学eureka时,配置了两个eureka注册中心微服务。
            
            学些nacos时,不用我们在单独新建注册中心微服务模块了,直接安装使用即可,很方便。
            
            但是:如果这个注册中心挂了怎么办,我们之前就只开了一个nacos程序,也没有配置集群。
            
            显然,实际情况中不可能只有一个nacos注册中心。
    复制代码
    

    官网文档

    1. 官网说明

        1.  架构图
    复制代码
    

    img

        2.  要将配置持久化到数据库中:MySQL
            
            不用它内嵌的数据库
    复制代码
    

    img

        3.  通俗易懂的Nacos集群架构图
    复制代码
    

    img

        4.  重点说明:
            
            默认Nacos使用嵌入式数据库实现数据存储。
                我们重启nacos后,还是有以前的配置文件的。
                
            但是如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。
                每个nacos都有自己独立呃嵌入式数据库,存放的数据不一致。
            
            为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只支持MySQL存储。
            
        
            Nacos支持三种部署模式:
                
                单机模式:用于测试和单机试用
                集群模式:用于生产环境,确保高可用
                多集群模式:用于多数据中心场景
    复制代码
    

    img

    2. Linux 版 Nacos+MySQL 生产环境配置

        Nacos默认自带的是嵌入式数据局 derby,那么如果做集群时每个Nacos都带一个derby,那么就有三个
        存储配置文件的数据库,显然数据的统一性会有问题。
    复制代码
    

    2 derby 切换到 mysql 配置步骤

        1.  nacos-server-1.2.0
    acosconf目录下找到sql脚本:
            
            nacos-mysql.sql
            执行脚本
            
            注意:库自己创建 naocs_config
            
        2.  nacos-server-1.2.0
    acosconf目录下找到application.properties
        
            将derby中的配置文件迁到mysql中
    复制代码
    

    img

            修改:注意端口,用户名和密码
    复制代码
    

    img

        3.  启动nacos,可以看到是个全新的空记录界面,记录进derby的迁移了:
    复制代码
    

    img

            刷新之后,以前的配置都没了,说明我们数据库迁移成功了。
            
        4.  在nacos新建配置文件时,会自动保存到mysql数据库中
    复制代码
    

    img

    3. Linux 版 Nacos+MySQL 生产环境配置

        注意注意注意:!!!!!!!!!
        
        一定要先把环境准备好:
            
            centos7 + maven3.2(以上) + mysql5.7 + JDK 1.8 
            
            docker装的mysql,我的nacos连不上去,怎么操作我不会。重新自己手动装了一个mysql后,好了。
            建议上述软件全部用tar.gz包安装到centos7上。
            
            具体安装步骤可以百度。
    复制代码
    

    3.1 linux 版 nacos 安装

        大概:一个Nginx+3个nacos注册中心+1个Mysql
        
        Nacos下载linux版安装:
    复制代码
    

    img

    img

        启动:进入bin目录,启动startup.sh
    复制代码
    

    3.2 集群配置步骤

    1.  Linux服务器上mysql数据库配置
    
        执行:nacos-mysql.sql
        
        远程连接该数据库,执行脚本
        
        我将该脚本下载到windows上在sqlyog中执行的。
        
    2.  修改pplication.properties配置文件
    
        修改之前先备份一个
    复制代码
    

    img

        修改,在复制到linux上:
    复制代码
    

    img

    3.  Linux服务器上nacos的集群配置cluster.conf
    
        梳理出一个nacos集群中的3台nacos服务的端口号
        
        hostname -I 或者 ip addr 查看ens33网卡的地址:注意是 I
    复制代码
    

    img

    img

    4.  编辑Nacos的启动脚本startup.sh,使他能够用接受不同的启动端口。
    
        我们希望传递不同的端口号启动不同的nacos实例
        
        注意是:O 不是0 
    复制代码
    

    img

    img

    img

    5.  测试是否配置好nacos
    
        同时通过window浏览器访问:
        
        http://192.168.111.130:3333/nacos/#/login
        
        http://192.168.111.130:4444/nacos/#/login
        
        http://192.168.111.130:5555/nacos/#/login
    复制代码
    

    img

    6.  Nginx的配置,由它作为负载均衡器
    
        注意:Nginx的安装要先安装3个环境,参考web笔记
        
        1.  所有的请求先访问1111,然后再从 / 目录下分流。
    复制代码
    

    img

        2.  将这些注释掉走我们自己的代理
    复制代码
    

    img

    img

        3.  upstream:
            
            注意这里配置的是127.0.0.1:3333
    复制代码
    

    img

    7.  1个Nginx+3个Nacos注册中心+1个Mysql
    
        还要装一个JAVA,注意我的centos7是mimn版,所以里面里面没有自带的jdk,直接安装。
        安装JDK1.8,参考web笔记。
    
        1.  先启动nacos
            [root@localhost bin]# ./startup.sh -p 3333
            报错
    复制代码
    

    img

            还要先装一个java
        
        2.  启动nacos集群
        
            [root@localhost bin]# ./startup.sh -p 3333
    复制代码
    

    img

            启动成功。
            
            [root@localhost bin]# ./startup.sh -p 4444
            [root@localhost bin]# ./startup.sh -p 5555
            
            ps -ef|grep nacos|grep -v grep|wc -l
            
        
        3.  启动Nginx
            
            [root@localhost sbin]# ./nginx -c /usr/local/nginx/conf/nginx.conf
            
            查看一下:[root@localhost sbin]# ps -ef|grep nginx
            成功启动
    复制代码
    

    img

            nginx的关闭:
            ./nginx -s stop
            ./nginx -s quit
    
    
    7.  测试通过Nginx访问nacos
    
        关闭防火墙:sudo systemctl stop firewalld.service
        
        一定要启动mysql,否则会报错:
        
        
        
        http://192.168.92.130:1111/nacos/#/login
    复制代码
    

    img

        测试成功!!!!!!
    复制代码
    

    3.3 nacos 集群部署成功

        说明通过我们的1111端口,nginx成功的访问到我们的nacos服务器。nginx转发到这三个结点。
        
        
        1.  新建一个配置文件
    复制代码
    

    img

        2.  数据库查询
    复制代码
    

    img

        3.  持久化成功!!
    复制代码
    

    3.4 微服务 cloudalibaba-provider-payment9002 启动注册进 nacos 集群

        1. 修改yml
    复制代码
    

    img

            server:
              port: 9002
            
            spring:
              application:
                name: nacos-payment-provider
              cloud:
                nacos:
                  discovery:
                    # server-addr: localhost:8848 # 配置nacos注册中心地址
                    # 注册进nacos集群
                    server-addr: 192.168.92.130:1111
            
            # 做监控的话:要把这个全部暴露出来
            management:
              endpoints:
                web:
                  exposure:
                    include: "*"  # 注意是双引号
    复制代码
        2.  启动9002威武
        
        
        3.  注册成功
    复制代码
    

    img

    4 . 小结

        到此为止,我们nacos在linux下的集群部署和持久化配置文件都弄好了。
    复制代码
    

    img

  • 相关阅读:
    codeforces-1144 (div3)
    codeforces-1142 (div1)
    codeforces-1131 (div2)
    codeforces-1132 (div2)
    [HAOI2006]均分数据
    Ellipsoid
    [JSOI2004]平衡点 / 吊打XXX
    CF208E Blood Cousins
    CF570D Tree Requests
    CF600E Lomsat gelral
  • 原文地址:https://www.cnblogs.com/coderD/p/14350110.html
Copyright © 2020-2023  润新知