杨梅冲
每天在想什么呢?

一、前期准备

github:https://github.com/alibaba/nacos

官网:https://nacos.io/

1.1 数据库部署

# mysql 8.0 下载
官网:https://dev.mysql.com/downloads/mysql/8.0.html

cd /usr/local/
tar xf mysql-8.0.36-linux-glibc2.17-x86_64.tar.xz
ln -s mysql-8.0.36-linux-glibc2.17-x86_64 mysql

echo "export PATH=$PATH:/usr/local/mysql8/bin" >>/etc/profile
source /etc/profile

vim /usr/local/mysql/my.cnf
[mysql]
#默认字符集
default-character-set=utf8mb4
socket = /usr/local/mysql/data/mysql.sock
[client]
port       = 3306
socket = /usr/local/mysql/data/mysql.sock
 
[mysqld]
port       = 3306
server-id  = 3306
socket     = /usr/local/mysql/data/mysql.sock
# 安装目录
basedir    = /usr/local/mysql
# 数据存放目录
datadir    = /usr/local/mysql/data
log-bin    = /usr/local/mysql/data/mysql-bin
innodb_data_home_dir      = /usr/local/mysql/data
innodb_log_group_home_dir = /usr/local/mysql/data
#日志及进程数据的存放目录
log-error =/usr/local/mysql/data/mysql-err.log
pid-file  =/usr/local/mysql/data/mysql.pid
# 服务端使用的字符集默认为8比特编码
character-set-server=utf8mb4
lower_case_table_names=1
autocommit =1
# 创建新表时将使用的默认存储引擎
default_storage_engine = InnoDB

mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --initialize-insecure

各参数意义
            --defaults-file: 指定配置文件 (放在--initialize-insecure前)
            --user: 指定用户
            --basedir: 指定安装目录
            --datadir: 指定初始化数据目录
            --initialize-insecure: 初始化不设置密码(若无该参数,则随机生成密码,需在 /data/mysql8/logs/mysql.log 查看

# 启动mysql
/usr/local/mysql8/bin/mysqld_safe --defaults-file=/usr/local/mysql8/my.cnf &
nacos_config 表结构
相关表说明:

config_* :所有 config_ 开头的表都是 Nacos 配置中心使用时保存应用配置的表。
users:系统用户表,在集群环境下用户信息保存在 users 表中,而非在配置文件中。
roles:系统角色表,Nacos 的权限基于 RBAC(基于角色的访问控制)模型设计,此表保存角色数据。
permissions: 系统权限表,说明角色与系统使用权限的对应关系。

1.2 jdk下载部署

下载地址:https://www.oracle.com/cn/java/technologies/downloads/#java11

# JDK版本支持
2023.x branch: Corresponds to Spring Cloud 2023 & Spring Boot 3.2.x, JDK 17 or later versions are supported.
2022.x branch: Corresponds to Spring Cloud 2022 & Spring Boot 3.0.x, JDK 17 or later versions are supported.
2021.x branch: Corresponds to Spring Cloud 2021 & Spring Boot 2.6.x. JDK 1.8 or later versions are supported.
2020.0 branch: Corresponds to Spring Cloud 2020 & Spring Boot 2.4.x. JDK 1.8 or later versions are supported.
2.2.x branch: Corresponds to Spring Cloud Hoxton & Spring Boot 2.2.x. JDK 1.8 or later versions are supported.
greenwich branch: Corresponds to Spring Cloud Greenwich & Spring Boot 2.1.x. JDK 1.8 or later versions are supported.
finchley branch: Corresponds to Spring Cloud Finchley & Spring Boot 2.0.x. JDK 1.8 or later versions are supported.
1.x branch: Corresponds to Spring Cloud Edgware & Spring Boot 1.x, JDK 1.7 or later versions are supported.
echo "export JAVA_HOME=/usr/local/jdk-11.0.23" >> /etc/profile
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile

[root@harbor mysql]# java -version
java version "11.0.23" 2024-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.23+7-LTS-222)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.23+7-LTS-222, mixed mode)

生成jre
cd /usr/local/jdk-11.0.23
bin/jlink --module-path jmods --add-modules java.desktop --output jre
Nacos部署需要开放以下四个端口以确保其正常运行:

主端口:默认为8848,用于客户端、控制台及OpenAPI的HTTP通信。
客户端gRPC请求服务端端口:默认为9848,用于客户端向服务端发起gRPC连接和请求。
服务端gRPC请求服务端端口:默认为9849,用于服务间的数据同步和其他服务端之间的通信。
Jraft请求服务端端口:默认为7848,用于处理服务端间的Raft相关请求,比如集群管理中的选主和日志复制等。
在实际部署环境中,至少需要确保主端口(8848)和客户端gRPC端口(9848)对外开放,并且根据实际需求和网络配置,可能也需要开放服务端gRPC请求服务端端口(9849)和Jraft请求服务端端口(7848)。同时,为了保障安全,应当采取相应的安全措施,
比如使用防火墙控制访问、启用身份验证和授权、以及加密通信等。

二、nacos单机安装

1.1 nacos单机安装

下载地址:https://github.com/alibaba/nacos/releases

cd /usr/local/
tar -xzvf nacos-server-2.3.2.tar.gz
# 数据库设置
# 1.创建nscos用户,如果在nacos和mysql在2台机器上
CREATE USER 'nacos'@'%';
ALTER USER 'nacos'@'%' IDENTIFIED BY 'nacos';
GRANT ALL privileges on nacos.* TO 'nacos'@'%';

# 如果nacos和mysql在同一台机器上
CREATE user 'nacos'@'localhost';
ALTER USER 'nacos'@'localhost' IDENTIFIED BY 'nacos';
GRANT ALL privileges on nacos.* TO 'nacos'@'localhost';

FLUSH PRIVILEGES;

CREATE DATABASE nacos;
quit;

mysql -P 3307 -u root -p"wg1q2w3e" -D nacos < /usr/local/nacos/conf/mysql-schema.sql

mysql> use nacos
Database changed
mysql> show tables;
+----------------------+
| Tables_in_nacos      |
+----------------------+
| config_info          |
| config_info_aggr     |
| config_info_beta     |
| config_info_tag      |
| config_tags_relation |
| group_capacity       |
| his_config_info      |
| permissions          |
| roles                |
| tenant_capacity      |
| tenant_info          |
| users                |
+----------------------+
12 rows in set (0.00 sec)

# 配置nacos
vim /usr/local/nacos/conf/application.properties

db.url.0 中的 ip: 如果是mysql与nacos在同一台机器上,就不用更改,使用原来的127.0.0.1。
db.url.0 中的 connectTimeout、socketTimeout 如果设置时间较短可能在启动nacos时会连接不上数据库而启动失败。
2.2.2版本还需要打开
spring.sql.init.platform=mysql
db.num=1

1.2 启动nacos

cd /usr/local/nacos/bin
sh startup.sh -m standalone    # -m standalone 代表单机模式启动
或
nohup sh startup.sh -m standalone &
[root@harbor conf]# netstat -ntlp | grep java
tcp6       0      0 :::7848                 :::*                    LISTEN      2318/java           
tcp6       0      0 :::8848                 :::*                    LISTEN      2318/java           
tcp6       0      0 :::9848                 :::*                    LISTEN      2318/java           
tcp6       0      0 :::9849                 :::*                    LISTEN      2318/java

# 8848 用户web页面访问
# 98489849 用于2.x版本服务端链接
# 7848 Nacos集群通信端口,用于Nacos集群间进行检举、检测
https://nacos.io/zh-cn/docs/upgrading/2.0.0-compatibility/

# 停止服务
cd /usr/local/nacos/bin
sh shutdown.sh

# 浏览器访问:
http://192.168.10.20:8848/nacos

1.2.1 nacos导入配置问题

nacos-2.2.2 版本中如果没有启用账号密码登录,就会点击不动导入配置

application.properties:

base64字符串,官网最少需要 32 位

nacos.core.auth.enabled=true
 
nacos.core.auth.caching.enabled=true
 
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos
nacos.core.auth.plugin.nacos.token.secret.key=U2VjcmV0S2V5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5

1.3 集群部署

配置nacos配置文件/usr/local/nacos/conf/cluster.conf.example

cp cluster.conf.example cluster.conf

# 添加集群中其它机器IP地址和端口信息
192.168.10.20:8848
192.168.10.21:8848
192.168.10.22:8848

# 再配置 application.properties 

# 启动nacos
cd /usr/local/bin/
nohup sh ./startup.sh &      # nacos 默认的启动方式就是以集群模式启动

# 如果出现问题查看日志,虚拟机一般就内存问题
查看启动日志,cat /usr/local/nacos/logs/start.out ,或查看 nacos 日志cat /usr/local/nacos/logs/nacos.log
# 设置为系统服务,并开机启动
vim /etc/systemd/system/nacos.service
[Unit]
Description= Nacos cluster
After=network.target

[Service]
Type=forking
User=root
Restart=alway
ExecStart=/usr/local/nacos/bin/startup.sh 2>&1 >/dev/null
ExecStop=/usr/local/nacos/bin/shutdown.sh >/dev/null

[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl enable nacos

1.4 集群负载均衡

 keepalived+nginx

upstream nacos_backend {
    #ip_hash;
    server 192.168.10.10:8848;
    server 192.168.10.11:8848;
}

server {
        listen       80;
        server_name  localhost;
        error_log  logs/nacos_err.log;
        access_log logs/nacos_acc.log;

        location / {
            proxy_pass http://nacos_backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real_IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

}

# 访问:
http://192.168.10.10/nacos 或者在10上新建命名空间,11上查看

 

posted on 2024-06-13 01:36  杨梅冲  阅读(542)  评论(0编辑  收藏  举报