环境:
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 firewalldsetenforce 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/ jdk25 ls
26 vi /etc/profile #在最下方添加export PATH=/usr/local/jdk/bin:$PATH
export CLASSPATH=/usr/local/jdk/lib:$CLASSPATH
27 source /etc/profile28 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.sqlmysql -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://域名/#/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默认集群模式