3

Nacos在企业中如何使用集群环境?

 2 years ago
source link: https://developer.51cto.com/article/707880.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在公司,注册中心和配置中心都是使用的Nacos,因为前一段时间比较忙(木有划水时间),也没有精力仔细去研究,但是时间就像海绵里的水,挤一挤总会是有的,出于对技术的好奇心,今天终于到了我 牧汉三 出马了。就说一说Nacos集群架构是如何搭配。

Nacos集群架构

在搭建Nacos集群之前,我们首先要了解一下Nacos的架构,工欲善其事必先利其器,磨刀不费砍材功,在上一节中,我们了解了Nacos基础功能,对Nacos的一些基本使用和配置,但是这些在实际工作过程中是远远不够的,我们还需要了解一个非常重要的点,就是对Nacos集群相关的操作,首先我们就要从Nacos的集群配置开始说起。

2.1 Nacos 三种部署模式

  • 单机模式:用于测试和单节点使用。
  • 集群模式:用于生产环境,确保高可用。
  • 多集群模式:用户多数据中心场景。

2.2 参考文档

参考网站:

https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

部署手册:

https://nacos.io/zh-cn/docs/deployment.html

下面我们来看一下Nacos的一个具体拆分架构图:

a7dbf4e04af23d947294685ef0c5be60736b72.png

对于Nacos而言,本身是存在内置的数据库 derby 实现配置持久化,但是为了查看和维护以及配置nacos集群方便我们需要将内置数据库配置成本地MySQL数据库,同时因为Nacos使用的嵌入式实现数据的存储,所以如果启动多个默认配置下的Nacos节点,数据存储会存在一致性的问题,为了解决这个问题,Naacos采用了集中存储方式来支持集群化存储。目前nacos仅支持MySQL数据库。

3.1 准备工作

  • 64 bit OS Linux/Unix/Mac,推荐使用Linux系统。
  • 64 bit JDK 1.8+;
  • Maven 3.2.x+;
  • 3个或3个以上Nacos节点才能构成集群;
  • Nginx;
  • MySql 5.6.5+;

0785c0314d6ce1719a6528b5ede5c5388d2bae.png

在Linxu下安装Nacos

我们需要3个或3个以上Nacos节点才能构成集群,同时也需要一个Nginx来模拟负载均衡。

安装包已备好,后台回复nacos即可。

f507ee6430768d472fe507dddb7917fab2920f.png

1. 解压Nacos

tar -zxvf nacos-server-2.0.3.tar.gz

持久化配置前面我们已经讲过了,Nacos 默认自带的嵌入式数据库 derby,当我们每次创建一个Nacos实例的时候就会有一个 derby,当我们想要搭建Nacos集群,出现多个Nacos节点的时候,就会出现一致性的问题,所以我们如果要搭建Nacos集群,首先要使用Nacos支持的外部统一数据管理MYSQL。

参考官网:

https://nacos.io/zh-cn/docs/deployment.html

这里建立的Mysql数据库,一定要Linux下Nacos的可以访问。

我们需要找到Nacos安装目录下conf目录下的SQL脚本,然后在数据库中执行。

1.创建数据库

CREATE DATABASE nacos_config;USE nacos_config;

2.执行脚本

找到nacos数据库脚本,在刚才创建的数据库中执行。

79624ce70b848fa4529585b899e7c1e9f2fcc7.png

执行成功,如下图所示:

550945434a831371e3d4625878f7fa5ac4c03b.png

3.修改配置

修改 conf/application.properties文件,增加支持MySQL数据源配置。

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
db.user=root
db.password=123456

Nacos集群配置

1. 修改cluter.conf文件

我们在正式开始配置集群之前,我们需要修改conf/cluter.conf配置文件,在修改一个文件之前,先进行备份,这一步Nacos文件已经帮我们做了,如果没有手动复制一个备份文件。

cp cluster.conf cluster.conf.example

831a563212a3f343f1f022edf0ad1b4cbadbf6.png

在配置集群的时候,不能通过127.0.0.1 来进行分配,服务器是不知道具体哪台机器,具体的IP地址,需要使用conf/cluter.conf来指明对应的IP和端口。

同时我们修改端口的时候,要有一定的偏移量,因为Nacos2.0本身新增了占用端口,在设置端口的时候要避开。

0738d9587c6686533ef70024f401da9b5e310a.png

09c6fa814eaf71a833378085111c76487c1beb.png

每行配置成ip:port;

ifconfig -a #查看具体ip

在这里我的IP地址为:192.168.137.152;

vi cluster.conf

在配置中添加我们需要使用的IP和port;

192.168.137.152:8848
192.168.137.152:8868
192.168.137.152:8888

2.编辑启动脚本startup.sh

修改这个脚本,是为了能够让我们在使用这个命令启动的时候传入对应的端口参数,这样携带具体端口号参数启动就能启动具体的Nacos节点,脚本目录为:nacos/bin/startup.sh修改参数:

d9699de49069f6afb025919f3ea3516267f118.png

2464bb563718b5647f2782479545499c0ac564.png

启动Nacos

启动命令:

  • ./startup.sh -o 8848
  • ./startup.sh -o 8848
  • ./startup.sh -o 8848

启动以后我们可以查看这个日志文件,是否启动成功。

c6f83ff61a18ce1450e676cdb727bd12430811.png

tail -f /usr/local/nacos/nacos/logs/start.out

667baf104589c07881242735c25b12892532be.png

启动完成之后,我们可以使用下面的命令来测试Nacos集群是否正常启动:

ps -ef|grep nacos|grep -v grep |wc -l

一般数量为3,我这里是启动了三个日志查看,所以是6。

e2d2ed002e72ce085e47388092bc9b8e378d27.png

注意:我们在浏览器访问Nacos地址的时候,一定要把防火墙关闭。

  • systemctl stop firewalld # 临时关闭;
  • systemctl disable firewalld # 永久关闭;

打开任意IP和端口下的路径,使用账号密码nacos/nacos 登录成功后,在 集群管理>节点列表 中可以看到我们三个nacos服务,到这里nacos此时已经完成全部配置。

b5402c1540e88fe65a71114ffbdeb09307ea43.png

nginx 负载均衡配置

tar -zxvg nginx-1.14.2.tar.gz # 解压
cd nginx-1.14.2 
./configure # 编译
make && make install #安装
cd /usr/local/nginx/conf/
vi nginx.conf  # 修改nginx文件

整个文件中只需要使用到下面的配置即可:

下面没有使用HTTP请求进行转发,而是使用的TCP协议使用nginx请求时,需要配置成TCP转发,不能配置http2转发,否则连接会被nginx断开。

worker_processes  1;

events {
    worker_connections  1024;
}

stream {
        upstream nacos {
            server 192.168.137.152:8848;
            server 192.168.137.152:8868;
            server 192.168.137.152:8888;

        }

        server {
                listen 81;
                proxy_pass nacos;
        }

}

启动nginx

cd /usr/local/nginx/sbin/  # 进入目录
./nginx   #启动

在浏览器上输入网址,查看是否可以启动成功

http://192.168.137.152:81/nacos

b929b61353cb089f09a885f326732560f26228.png

f52240c3278557fd5ec5114227e07f13db891d.png

我们在 config_info 表中也看到了对应的添加记录。

f96f7dc89c7f660aaf882284788c8330ba9ba5.png

注册服务到nacos中

我们拿上一节中讲到的服务cloud-alibaba-nacos-9001进行注册到Nacos集群中,如果成功,表示我们Nacos已经可以使用了。

yml配置:

server:
  port: 9001
spring:
  application:
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        server-addr: http://192.168.137.152:81
#      server-addr: localhost:8848

management:
  endpoint:
    web:
      exposure:
        include: '*'

启动成功后,我们在浏览器中就可以看到对应的服务注册到nacos了。

46af96c581913fb369742187e372fcc9331b60.png

总结到这里,我们Nacos集群搭建就完成了,有不懂的小伙伴,下方留言告诉我,小农看到了会第一时间回复,要注意的是,在nginx安装那里,可能会有一些包找不到,需要你自己去下载安装,上面都是小农自己一步一步搭建出来的,按照步骤来,是不会有问题的。

cd /usr/local/nginx/sbin/ # 进入目录
./nginx #启动

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK