安装nacos集群并配置nginx做负载

关于配置中心,之前用过公司自研的配置中心工具,用过Apollo,用过Gitlab和Gogs。最近的项目选了nacos,本文为记录nacos集群非docker方式搭建过程。

1. 集群搭建规划

安装nacos集群并配置nginx做负载

?2. 环境准备

1、3台服务器都关闭防火墙和selinux

2、版本:当前推荐的稳定版本为1.4.2或2.0.1。

3、依赖组建:Nacos 依赖 Java 环境来运行(如果是从代码开始构建并运行Nacos,还需要为此配置 Maven环境)。官方要求确保是在以下版本环境中安装使用:

1) 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。2) 64 bit JDK 1.8+;3) Maven 3.2.x+(本文不需要);

3. 集群安装集群步骤

3.1 通过IP创建集群

1、安装MySQL

MySQL安装版本为5.7.20(安装过程省略):

安装nacos集群并配置nginx做负载

2、在官网下载nacos安装包,上传到服务器并解压

最近nacos出来了新的版本2.0.2,在2.0.1基础上修复了一些bug,因此下载的 nacos-server-2.0.2.zip这个包。上传到/home目录并解压:

安装nacos集群并配置nginx做负载

3、初始化数据库:

?将nacos-server-2.0.2.zip解压后,conf目录下就有初始化sql,将该sql导入数据库。导入之前记得先创建nacos数据库

mysql> CREATE DATABASE `nacos` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all privileges on nacos.* to "nacos"@"%" identified by "nacos@passwd";   #密码自行修改
mysql> flush privileges;
mysql> use nacos;
mysql> source /home/nacos/conf/nacos-mysql.sql;  
mysql> show tables;

创建好之后,有这些表:

安装nacos集群并配置nginx做负载

4、修改配置文件:

4.1 修改application.properties文件:

cd /home/nacos/conf
cp application.properties application.properties_bak20210719

修改application.properties文件里面的数据库信息:

第33行:去掉spring.datasource.platform=mysql的注释

第36行:去掉db.num=1的注释

第39行:去掉注释,并将 127.0.0.1:3306/nacos 替换为你的的MySQL数据库IP地址和database名

第40、41行:去掉注释,将默认的数据库用户名和密码nacos改为你真实的的nacos库的用户名和密码

安装nacos集群并配置nginx做负载

4.2 修改cluster.conf,配置集群信息:

cd /home/nacos/conf 
cp cluster.conf.example cluster.conf

注释掉cluster.conf文件末尾三行192的IP,添加下列内容:

10.0.0.101  #如果不指定端口,就用默认端口8848
10.0.0.102
10.0.0.103

安装nacos集群并配置nginx做负载

5、启动服务:

cd /home/nacos/bin/ 
sh startup.sh     #单机版就用 sh startup.sh -m standalone启动

在3个节点都启动之后,/home/nacos/conf/cluster.conf文件会被刷新:

安装nacos集群并配置nginx做负载

6、如需停止服务,就执行如下命令:

cd /home/nacos/bin/ && sh shutdown.sh 

7、在10.0.0.102和10.0.0.103重复第4、5步骤,完成nacos安装8、登录三个节点验证,默认账号为nacos/nacos

http://10.0.0.101:8848/nacos/
http://10.0.0.102:8848/nacos/
http://10.0.0.103:8848/nacos/

如test101节点:

安装nacos集群并配置nginx做负载

登录后,查看集群节点和元数据信息是否正常:

安装nacos集群并配置nginx做负载

比如test101的元数据:

安装nacos集群并配置nginx做负载

验证集群数据同步:

可以在任意节点创建一个新的命名空间,一个test配置文件,然后到剩余两个节点查看是否正常同步。

3.2 通过hostname创建集群

通过hostname创建集群需要在通过IP创建集群基础上增加/修改以下配置:

1、在3台服务器添加/etc/hosts解析:

10.0.0.101 test101
10.0.0.102 test102
10.0.0.103 test103

2、修改配置文件nacos/conf/application.properties时,除了修改数据库信息外,还需要放开第25行?nacos.inetutils.prefer-hostname-over-ip=false的注释,并将false改成true

3、修改配置文件nacos/conf/cluster.conf时,集群信息不再用IP,而是改成hostname:

安装nacos集群并配置nginx做负载

4、三个节点依次启动应用后,在nacos界面看到集群节点就是hostname了:

安装nacos集群并配置nginx做负载

注意事项:

1、从IP转向hostname或者从hostname集群转向用IP创建集群,就删除以下目录。原来的数据不会丢失,数据写到MySQL数据库的(生产慎用!)

nacos/data
nacos/logs
nacos/bin/work
nacos/bin/logs

2、用hostname创建集群,如果某一个节点在hosts解析了多个域名,nacos都会读取到,集群节点的元数据就会出现异常,比如我之前在安装另一个环境时遇到的:

安装nacos集群并配置nginx做负载

4. 部署nginx负载

编译安装一个nginx,在nginx/conf/domains下添加一个nacos配置文件后启动nginx即可。

如在test101安装一个nginx,配置文件:

[root@test101 conf]# cat domains/www.nacos-test.com 
upstream nacos-cluster { 
    server 10.0.0.101:8848; 
    server 10.0.0.102:8848; 
    server 10.0.0.103:8848; 
} 

server { 
    listen       80; 
    server_name  www.nacos-test.com; 

    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,在windows本地C:\Windows\System32\drivers\etc\hosts文件添加一行解析:

10.0.0.101 www.nacos-test.com

即可使用http://www.nacos-test.com/nacos访问了。

?

官网链接:
英文版:https://nacos.io/en-us/docs/quick-start.html
中文版:https://nacos.io/zh-cn/docs/quick-start.html

?

?

?

上一篇:五十音小游戏中的前端知识


下一篇:Docker常用命令