环境准备 
本文采用的Linux系统为 Rocky Linux release 8.10 版本,nacos版本为 2.2.3,数据库使用mysql的 5.7.43 版本。
服务器 节点功能 软件包版本 10.0.0.10 nacos节点1 2.2.3 10.0.0.11 nacos节点2 2.2.3 10.0.0.12 nacos节点3 2.2.3 10.0.0.13 mysql数据库 5.7.43 
在10.0.0.10、10.0.0.11、10.0.0.12服务器安装java1.8:
1
 2
 3
 4
 # 安装java1.8 
yum list java* --showduplicate |  sort -r
 yum install -y java-1.8.0-openjdk-devel.x86_64
 java -version  #查看java版本  
在10.0.0.13服务器安装mysql:
1
 2
 3
 4
 5
 6
 7
 8
 9
 # 安装mysql 5.7.43 
rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
 sed -i 's/gpgcheck=1/gpgcheck=0/'  /etc/yum.repos.d/mysql-community.repo
 yum -y install mysql-community-server
 systemctl enable  --now mysqld
 password = ` sed -n '/temporary password/s/.*root@localhost: \(.*\)/\1/p'  /var/log/mysqld.log` 
mysql -uroot -p" $password "  --connect-expired-password -e"set global validate_password_policy=0;" 
 mysql -uroot -p" $password "  --connect-expired-password -e"set global validate_password_length=6;" 
 mysql -uroot -p" $password "  --connect-expired-password -e"alter user 'root'@'localhost' identified by '123456';"  
这里将mysql密码策略设置为简单,仅仅为了演示方便,生产不建议这么做。同时生产中nacos一般用作注册中心和配置中心,所以nacos用的数据库最好使用集群方式。
安装nacos集群 
安装nacos 
官网下载安装包 ,然后上传到10.0.0.10、10.0.0.11、10.0.0.12服务器。在这三台服务器上执行:
1
 2
 # 将nacos解压到/usr/local/目录下 
tar xf nacos-server-2.2.3.tar.gz -C /usr/local/ 
在10.0.0.13服务器上配置nacos使用的mysql数据库:
1
 2
 3
 4
 5
 6
 7
 8
 9
 # 提前将nacos数据sql文件复制到本机的/tmp目录下,sql文件在nacos安装目录的conf目录下:/usr/local/nacos/conf/ 
mysql -uroot -p123456
 create database nacos_config default character set  utf8; 
 create user 'nacos' @'%'  identified by '123456' ;   #演示用,生产请保证密码复杂度 
 grant all privileges on nacos_config.* to 'nacos' @'%' ; 
 flush privileges; 
 use nacos_config; 
 source  /tmp/mysql-schema.sql;   #执行nacos数据库脚本 
show tables;   #查看创建的表  
配置并启动nacos 
 1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 vim /usr/local/nacos/conf/application.properties
 spring.sql.init.platform= mysql
 db.num= 1 
 db.url.0= jdbc:mysql://10.0.0.13:3306/nacos_config?characterEncoding= utf8& connectTimeout = 1000& socketTimeout = 3000& autoReconnect = true& useUnicode = true& useSSL = false& serverTimezone = UTC
 db.user.0= nacos
 db.password.0= 123456 
 management.endpoints.web.exposure.include= prometheus  #开启prometheus监控 
 nacos.core.auth.enabled= true   #开启权限认证 
 nacos.core.auth.system.type= nacos
 nacos.core.auth.plugin.nacos.token.secret.key= ${ 自定义 ,保证所有节点一致 } 
 nacos.core.auth.server.identity.key= ${ 自定义 ,保证所有节点一致 } 
 nacos.core.auth.server.identity.value= ${ 自定义 ,保证所有节点一致 } 
 
 cd  /usr/local/nacos/conf/
cp -a cluster.conf.example cluster.conf
 vim cluster.conf
 10.0.0.10:8848
 10.0.0.11:8848
 10.0.0.12:8848
 
 # 将配置文件复制到另外两个主机 
scp /usr/local/nacos/conf/application.properties 10.0.0.11:/usr/local/nacos/conf/
 scp /usr/local/nacos/conf/cluster.conf 10.0.0.11:/usr/local/nacos/conf/
 scp /usr/local/nacos/conf/application.properties 10.0.0.12:/usr/local/nacos/conf/
 scp /usr/local/nacos/conf/cluster.conf 10.0.0.11:/usr/local/nacos/conf/
 
 # 依次启动三台服务器上的nacos 
sh /usr/local/nacos/bin/startup.sh
 tail -f /usr/local/nacos/logs/start.out  #查看启动日志,如果日志最后显示如下,则成功 
 ...
 2023-08-19 15:55:33,901 INFO Nacos started successfully in cluster mode. use external storage 
nacos集群访问 
使用nginx作为负载均衡来访问nacos集群,nginx配置如下:
 1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 upstream  nacos-cluster  { 
        server  10.0.0.9 : 8848 ; 
         server  10.0.0.10 : 8848 ; 
         server  10.0.0.12 : 8848 ; 
 } 
 server  { 
    listen        80 ; 
     server_name   www.nacos.com ; 
 
     #access_log  /var/log/nginx/host.access.log  main;
   
    location  /  { 
          #root   html;
            #index  index.html index.htm;
           proxy_pass  http://nacos-cluster/nacos/ ;   #'/'斜杠不能去掉
      } 
} 
正如上面所说,nacos用作注册中心和配置中心,是非常重要的服务,不仅数据库要使用集群来避免单点故障,用来反向代理nacos集群的nginx也需要高可用部署。推荐使用nginx+keepalived来实现,不过这里就不再演示了。
参考资料: 
Nacos官网