环境:
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
vi /etc/profile #在最下方添加export PATH=/usr/local/jdk/bin:$PATH
export CLASSPATH=/usr/local/jdk/lib:$CLASSPATH
source /etc/profilejava -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文件传输到数据库机子
我已经传过来了
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即可
这一步是三个节点同时操作
#生成base64密码
dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 | tr -d '\n'
wsg5JEYX9JSezlxSeVhF9LnV66lZApI5EZ7L8HrDzHE=
30 vi /usr/local/nacos/conf/application.properties
#*************** Spring Boot Related Configurations ***************#
server.servlet.contextPath=/nacos
server.error.include-message=ALWAYS
server.port=8848
#*************** Config Module Related Configurations ***************#
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://******:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=**
db.password.0=**
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
nacos.config.push.maxRetryTime=50
#*************** Access Log Related Configurations ***************#
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.rotate=true
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=file:.
#*************** Access Control Related Configurations ***************#
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=serverIdentity
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
nacos.core.auth.plugin.nacos.token.secret.key=OTVjNzBmNDMzZmIxNDgzOGY2OTVjNWJmYzA0ZDkwNTVjMzBiZTYwMjJmYTI5Y2Q3NTJlYTljOWM0NmFiZWQ0ZA==
#*************** Metrics for tomcat **************************#
server.tomcat.mbeanregistry.enabled=true
#*************** Istio Related Configurations ***************#
nacos.istio.mcp.server.enabled=false
#*************** JRaft Related Configurations ***************#
nacos.core.protocol.raft.data.election_timeout_ms=5000
nacos.core.protocol.raft.data.snapshot_interval_secs=30
nacos.core.protocol.raft.data.core_thread_num=8
nacos.core.protocol.raft.data.cli_service_thread_num=4
nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000
配置集群(三个节点一模一样操作)
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 startup.sh -m cluster
查看日志
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
我们三台配置好直接访问
ncaos相关操作
启动
sh startup.sh -m cluster
查看日志
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默认集群模式