Nacos2.3.1集群+数据持久化+鉴权+负载LB

环境:

cenos7.9 

主机4台:

192.26.100.4  nacos节点1

192.26.100.5 nacos节点2

192.26.100.6 nacos节点3

192.26.100.7 负载nginx

mysql:

MySQL需要5.7以上

MySQL部署点击跳转

相关安装包及下载地址:

nacos下载地址点击跳转

jdk下载地址点击跳转

jdk-8u421-linux-x64.tar.gz     
nacos-server-2.3.1.tar.gz  

前置操作(三台同理)

systemctl stop firewalld
systemctl disable firewalld

setenforce 0

 jdk安装:


(三个nacos节点同时操作)


   19  tar -xvf jdk-8u421-linux-x64.tar.gz  -C /usr/local/
   20  tar -xvf nacos-server-2.3.1.tar.gz  -C /usr/local/

   21  cd /usr/local/
   24  mv jdk1.8.0_421/  jdk

   25  ls
   26  vi /etc/profile  #在最下方添加

export PATH=/usr/local/jdk/bin:$PATH
export CLASSPATH=/usr/local/jdk/lib:$CLASSPATH
   27  source /etc/profile

   28  java -version  #如果找不到改命令要自己看你解压路径与变量文件是否写一致
java version "1.8.0_421"
Java(TM) SE Runtime Environment (build 1.8.0_421-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode)

nacos配置(数据持久化)

我们在jdk安装步骤中已经顺便解压nacos包到/usr/local所以我们现在配置数据库

 /usr/local/nacos/conf/mysql-schema.sql   #通常在这个目录下方
  #我们选取一台nacos拿sql文件传输到数据库机子

我已经传过来了

 ls
mysql-schema.sql

mysql -u root -p  #登录

mysql> create database nacos;
mysql> create user 'nacos'@'%' identified with mysql_native_password by 'passwd';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nacos'@'%';
mysql> source /root/mysql-schema.sql;
回显示全部ok即可
这一步是三个节点同时操作都要指定数据库一模一样配置

   30  mv /usr/local/nacos/conf/cluster.conf.example /usr/local/nacos/conf/cluster.conf
   31  vi /usr/local/nacos/conf/cluster.conf

#*************** Config Module Related Configurations ***************#
### If use MySQL as datasource:
### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
 spring.datasource.platform=mysql
 spring.sql.init.platform=mysql

### Count of DB:
 db.num=1

### Connect URL of DB:
 db.url.0=jdbc:mysql://数据库地址IP:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
 db.user.0=数据库用户 
 db.password.0=数据库passwd

配置集群(三个节点一模一样操作)

mv /usr/local/nacos/conf/cluster.conf.example /usr/local/nacos/conf/cluster.conf

vim /usr/local/nacos/conf/cluster.conf

把下面ip改成自己集群对应ip

192.26.100.4:8848

192.26.100.5:8848

192.26.100.6:8848

尝试启动

sh /usr/local/nacos/bin/startup.sh

查看日志

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

2024-07-19 17:12:07,973 INFO Nacos is starting...

2024-07-19 17:12:08,984 INFO Nacos is starting...

2024-07-19 17:12:09,986 INFO Nacos is starting...

2024-07-19 17:12:10,987 INFO Nacos is starting...

2024-07-19 17:12:11,362 INFO Nacos started successfully in cluster mode. use external storage

已成功

配置鉴权

三个节点都要操作(不用关机,nacos自动加载,直接修改配置文件即可)

#生成base64密码 

 31  dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 | tr -d '\n'

wsg5JEYX9JSezlxSeVhF9LnV66lZApI5EZ7L8HrDzHE=

   31  vi /usr/local/nacos/conf/cluster.conf


nacos.core.auth.system.type=nacos  
nacos.core.auth.enabled=true 


#这key是集群才会写入必须一致三个节点
nacos.core.auth.server.identity.key=wsg5JEYX9JSezlxSeVhF9LnV66lZApI5EZ7L8HrDzHE=
#这个value类似宇mysql的唯一的sid号 区分不可一致
nacos.core.auth.server.identity.value=nacos1 #其他节点是nacos2、nacos3 区分不可一致

#secret.key
nacos.core.auth.plugin.nacos.token.secret.key=wsg5JEYX9JSezlxSeVhF9LnV66lZApI5EZ7L8HrDzHE=
我们三台配置好直接访问

ncaos相关操作

启动

sh /usr/local/nacos/bin/startup.sh

查看日志

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

关闭

sh /usr/local/nacos/bin/shutdown.sh

负载LB

    5  yum -y install nginx

    6  vi /etc/nginx/nginx.conf

把下方注释掉
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

创建nginx的nacos配置文件

vi /etc/nginx/conf.d/nacos.conf

upstream nacos_cluster {
    server 192.26.100.4:8848
    server 192.26.100.5:8848
    server 192.26.100.6:8848
}
#我是配置了ssl,如果没有ssl证书注释掉
server {
    listen       443 ssl;
    listen       80;
    server_name  域名(如果没有写ip或者删除这行) ;
        ssl_certificate "ssl路径";
        ssl_certificate_key "ssl路径";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

    location / {
        rewrite ^(.*)$ /nacos$1 break;
        proxy_pass         http://nacos_cluster;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_redirect     off;
    }
}

41  systemctl restart nginx

访问:

https://ip/#/login

https://域名/#/login

报错合集


org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'namespaceControllerV2' defined in URL [jar:file:/usr/local/nacos/target/nacos-server.jar!/BOOT-INF/classes!/com/alibaba/nacos/console/controller/v2/NamespaceControllerV2.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'namespaceOperationService' defined in URL [jar:file:/usr/local/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-core-2.3.1.jar!/com/alibaba/nacos/core/service/NamespaceOperationService.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalOtherPersistServiceImpl' defined in URL [jar:file:/usr/local/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-core-2.3.1.jar!/com/alibaba/nacos/core/namespace/repository/ExternalNamespacePersistServiceImpl.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.namespace.repository.ExternalNamespacePersistServiceImpl]: Constructor threw except

对应的nacos主机sql配置文件指定数据库IP地址写错了 ,修正即可


2024-07-19 11:34:39,032 INFO Nacos Log files: /usr/local/nacos/data

2024-07-19 11:34:39,035 ERROR Startup errors :

org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:165) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:585) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:409) at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1289) at com.alibaba.nacos.Nacos.main(Nacos.java:48)

 这个是必须要配置集群 因为nacos默认集群模式 

  • 29
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值