Nacos集群如何搭建

小编给大家分享一下Nacos集群如何搭建,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

创新互联从2013年成立,先为弋江等服务建站,弋江等地企业,进行企业商务咨询服务。为弋江企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

 一、Nacos 简介

Nacos(Naming and Configuration Service)致力于帮助您发现、配置和管理微服务。Nacos  提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

详情查看Nacos 官方文档[1]

二、Nacos 安装

1、Nacos 依赖

Nacos 基于 java 开发的,运行依赖于 java 环境。

依赖 64 bit JDK 1.8+,前往官网下载 JDK[2]

2、Nacos 安装

下载编译后压缩包,最新稳定版本[3]

unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz cd nacos/bin

三、Nacos 部署

1、单实例部署

单实例部署不适合生产环境,单点故障是致命的。

Linux 单实例非集群模式启动命令

startup.sh -m standalone

Linux 单实例非集群模式关闭命令

shutdown.sh

访问 nacos 管理页面,初始化用户名密码均为 nacos

Nacos集群如何搭建

2、集群部署

1、集群架构

Nacos集群如何搭建
  • 高可用 Nginx 集群

  • Nacos 集群(至少三个实例)

  • 高可用数据库集群(取代 Nacos 内嵌数据库)

2、本地虚拟机模拟集群部署

本地环境准备

Nacos集群如何搭建

在本地 PC 机上利用 VMware workstation 虚拟出如上表所示的几台机器,其中 Nginx 和 MySQL  都是采用的单实例,仅做练习使用。

搭建步骤

初始化 nacos 必须的数据库表并配置

找到 Nacos 安装目录下提供的数据库脚本文件

Nacos集群如何搭建

在 MySQL 实例创建 nacos_config 库并导入脚本

Nacos集群如何搭建

修改修改 Nacos 配置文件,指向 MySQL 实例,替换其内嵌数据库

Nacos集群如何搭建
#*************** 切换Nacos内嵌数据库平台为MySQL ***************# spring.datasource.platform=mysql  db.num=1 db.url.0=jdbc:mysql://192.168.15.141:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user=root db.password=123456

说明:三台 nacos 实例都需要切换 MySQL 平台,均需执行以上操作

nacos 集群配置

复制 cluster.conf 文件

Nacos集群如何搭建

Nacos 集群配置,修改 cluster.conf 文件

[root@localhost conf]# vim ./cluster.conf #it is ip #example 192.168.15.145 192.168.15.147 192.168.15.148

说明:三台 nacos 实例都需要做以上集群配置,至此关于 nacos 的配置结束了,可以尝试以集群模式启动三个 nacos 实例了

以集群模式分别启动三个 nacos 实例

Nacos集群如何搭建
Nacos集群如何搭建

尝试访问 nacos 管理页,测试三个实例是否正常

Nacos集群如何搭建

说明:如果三个实例以集群模式正常启动,那么分别访问三个实例的管理页就是展示以上登录页了。如果不能访问,则可能防火墙未开放 nacos  服务的端口,可执行如下命令。

[root@localhost bin]# firewall-cmd --add-port=8848/tcp --permanent success [root@localhost bin]# firewall-cmd --reload success [root@localhost bin]# firewall-cmd --list-all public (active)   target: default   icmp-block-inversion: no   interfaces: ens33   sources:   services: ssh dhcpv6-client   ports: 27017/tcp 8848/tcp   protocols:   masquerade: no   forward-ports:   source-ports:   icmp-blocks:   rich rules:  [root@localhost bin]#

Nginx 配置

  • Nginx 安装参考,Nginx 源码安装[4]

  • 修改 Nginx 配置文件 nginx.conf

worker_processes  1;  events {     worker_connections  1024; }  http {     include       mime.types;     default_type  application/octet-stream;      sendfile        on;      keepalive_timeout  65;      #nacos集群负载均衡     upstream nacos-cluster {         server 192.168.15.145:8848;         server 192.168.15.147:8848;         server 192.168.15.148:8848;     }      server {         listen       80;         server_name  192.168.15.146;          location / {             #root   html;             #index  index.html index.htm;             proxy_pass http://nacos-cluster;         }          error_page   500 502 503 504  /50x.html;         location = /50x.html {             root   html;         }     }  }

启动 Nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

微服务配置

微服务父 pom 配置

       4.0.0      com.atguigu.springcloud     cloud2020     1.0-SNAPSHOT     pom                    cloud-alibaba-nacos-config-client-3377                         UTF-8         1.8         1.8         4.12         1.2.17         1.16.18         5.1.47         1.1.16         1.3.0                                                                    org.springframework.boot                 spring-boot                 2.2.2.RELEASE                 pom                 import                                                         org.springframework.cloud                 spring-cloud-dependencies                 Hoxton.SR1                 pom                 import                                                         com.alibaba.cloud                 spring-cloud-alibaba-dependencies                 2.1.0.RELEASE                 pom                 import                                                         mysql                 mysql-connector-java                 ${mysql.version}                                                         com.alibaba                 druid                 ${druid.version}                                                         org.mybatis.spring.boot                 mybatis-spring-boot-starter                 ${mybatis.spring.boot.version}                                                         junit                 junit                 ${junit.version}                                                         log4j                 log4j                 ${log4j.version}                                                         org.projectlombok                 lombok                 ${lombok.version}                                                                         org.springframework.boot                 spring-boot-maven-plugin                                      true                     true                                              

微服务 pom 依赖

               cloud2020         com.atguigu.springcloud         1.0-SNAPSHOT          4.0.0      cloud-alibaba-nacos-config-client-3377                                      com.alibaba.cloud             spring-cloud-starter-alibaba-nacos-config                                         com.alibaba.cloud             spring-cloud-starter-alibaba-nacos-discovery                                         org.springframework.boot             spring-boot-starter-web                                         org.springframework.boot             spring-boot-starter-actuator                                         org.springframework.boot             spring-boot-starter-test             test                                         org.springframework.boot             spring-boot-devtools             runtime             true                                         org.projectlombok             lombok             true               

微服务 bootstrap.yml 配置

server:   port: 3377  spring:   application:     name: nacos-config-client    cloud:     nacos:       discovery:         #server-addr: my.nacos.com:8848         #nacos集群配置(Nginx)         server-addr: 192.168.15.146:80       config:         #server-addr: my.nacos.com:8848         #nacos集群配置(Nginx)         server-addr: 192.168.15.146:80         #指定yaml格式的配置         file-extension: yaml         #指定分组         group: DEV_GROUP         #指定命名空间ID         namespace: my_nacos_namespace

微服务启动类配置

package com.atguigu.springcloud;  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;  @SpringBootApplication @EnableDiscoveryClient public class NacosConfigClientMain3377 {      public static void main(String[] args) {         SpringApplication.run(NacosConfigClientMain3377.class, args);     }  }

微服务 Controller 读取 nacos 配置

package com.atguigu.springcloud.controller;  import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;  @RestController @Slf4j @RefreshScope //支持Nacos的动态刷新功能 public class ConfigClientController {      @Value("${config.info}")     private String configInfo;      @GetMapping("/config/info")     public String getConfigInfo() {         return configInfo;     } }

在 nacos 管理页上维护一个配置

Nacos集群如何搭建
Nacos集群如何搭建

本地启动微服务并访问

Nacos集群如何搭建

以上是“Nacos集群如何搭建”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


文章标题:Nacos集群如何搭建
文章起源:http://hbruida.cn/article/gjsjho.html