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

发布时间:2024年01月16日

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


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

1. 集群搭建规划

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

2. 环境准备

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

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

2.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创建集群

3.1.1 安装MySQL

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

3.1.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;

创建好之后,有这些表:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

3.1.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库的用户名和密码

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

3.1.5 启动服务:

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

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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

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

3.1.6 在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节点:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

比如test101的元数据:

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

验证集群数据同步:

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

3.2 通过hostname创建集群

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

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

10.0.0.101 test101
10.0.0.102 test102
10.0.0.103 test103

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

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

注意事项:

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

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

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

watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=

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访问了。

5. 连接数据库报错

有一次测试nacos,在修改nacos配置文件后,提交配置时web界面出现报错:

caused: PreparedStatementCallback; uncategorized SQLException for SQL [INSERT INTO his_config_info (id,data_id,group_id,tenant_id,app_name,content,md5,src_ip,src_user,gmt_modified,op_type) VALUES(?,?,?,?,?,?,?,?,?,?,?)]; SQL state [HY000]; error code [1114]; The table 'his_config_info' is full; nested exception is java.sql.SQLException: The table 'his_config_info' is full;caused: The table 'his_config_info' is full;

原因:

最后找到原因,是nacos连接的mysql数据库所在的服务器磁盘满了(也可能是表数据量太大)

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

文章来源:https://blog.csdn.net/WF_crystal/article/details/135621632
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。