目录
前言
nacos官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
Java 版本>1.8
Linux
下载地址:https://github.com/alibaba/nacos/releases
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
. ├── bin # 控制启动与关闭 │ ├── shutdown.cmd │ ├── shutdown.sh │ ├── startup.cmd │ └── startup.sh ├── conf # 配置文件 │ ├── 1.4.0-ipv6_support-update.sql │ ├── application.properties # 配置文件 │ ├── application.properties.example # 配置文件的模板文件 │ ├── cluster.conf.example # 集群配置文件的模板文件,开启集群需要copy此文件为cluster.conf │ ├── nacos-logback.xml │ ├── nacos-mysql.sql # 使用MySQL作为持久化,需要导入此文件 │ └── schema.sql ├── LICENSE ├── NOTICE └── target └── nacos-server.jar # nacos本体 |
启动nacos:
官方文档:https://nacos.io/zh-cn/docs/quick-start.html
1 2 3 4 5 6 7 8 9 10 |
# 进入nacos的bin文件夹 cd nacos/bin # 启动(单机模式) bash startup.sh -m standalone # 启动(默认:集群模式) bash startup.sh # 关闭 sh shutdown.sh |
访问nacos控制面板:(nacos默认端口:8848 默认账号、密码都是nacos)
http://IP:8848/nacos
完毕。
数据持久化
官方文档:单机模式支持mysql
nacos默认使用自带的derby数据库作为存储。重启数据会丢失。nacos仅支持MySQL作为持久化存储。
导入数据库
新建名为nacos_config
的书库,导入nacos/conf/nacos-mysql.sql
文件。(打开nacos-mysql.sql,里面的注释会告诉你数据库名称叫nacos_config)。
修改conf/application.properties文件
编辑配置文件
1 |
vi nacos/conf/application.properties |
nacos 2.x 只需要打开并修改配置里的 Config Module Related Configurations 里的内容即可
1 2 3 4 5 6 7 8 9 10 11 |
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: # spring.datasource.platform=mysql ### Count of DB: # db.num=1 ### Connect URL of DB: # db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC # db.user.0=nacos # db.password.0=nacos |
nacos 1.x需要新增以下内容:
1 2 3 4 5 6 7 8 |
# 新增以下数据 spring.datasource.platform=mysql # 以下按自己的MySQL修改 db.num=1 db.url.0=jdbc:mysql://11.162.196.16:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=nacos_devtest db.password=youdontknow |
重启:
1 2 3 4 |
# 关闭 sh nacos/bin/shutdown.sh # 启动 sh nacos/bin/startup.sh -m standalone |
查看有没有报错:
1 |
cat nacos/logs/start.out |
测试
新增配置,查看config_info表有没有插入数据。
集群部署
官方文档:集群部署说明
部署架构
配置持久化
编辑配置文件
1 |
vi nacos/conf/application.properties |
修改如下内容
1 2 3 4 5 6 7 8 9 10 11 |
#*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: # spring.datasource.platform=mysql ### Count of DB: # db.num=1 ### Connect URL of DB: # db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC # db.user.0=nacos # db.password.0=nacos |
配置集群信息
把nacos/conf文件夹下的cluster.conf.example复制为cluster.conf
1 |
cp cluster.conf.example cluster.conf |
编辑cluster.conf
1 |
vi nacos/conf/cluster.conf |
把需要组成每个nacos的ip和端口都写上去
1 2 3 4 5 |
#it is ip #example 192.168.43.133:8841 192.168.43.133:8842 192.168.43.133:8843 |
修改启动脚本(nacos 2.x以上不需要看,启动不了)
nacos都在同一个机器下,通过端口来区分的,则需要修改启动脚本,否则不需要。
1 2 3 4 |
# 备份 cp nacos/bin/startup.sh nacos/bin/startup.sh.bak # 修改 vi nacos/bin/startup.sh |
第一处修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# po是新增 while getopts ":m:f:s:c:p:po" opt do case $opt in m) MODE=$OPTARG;; f) FUNCTION_MODE=$OPTARG;; s) SERVER=$OPTARG;; c) MEMBER_LIST=$OPTARG;; p) EMBEDDED_STORAGE=$OPTARG;; po) # 新增 PORT=$OPTARG;; # 新增 ?) echo "Unknown parameter" exit 1;; esac done |
第二处修改
1 2 3 4 |
echo "$JAVA ${JAVA_OPT}" > ${BASE_DIR}/logs/start.out 2>&1 & # -Dserver.port=${PORT} 是新增 nohup $JAVA -Dserver.port=${PORT} ${JAVA_OPT} nacos.nacos >> ${BASE_DIR}/logs/start.out 2>&1 & echo "nacos is starting,you can check the ${BASE_DIR}/logs/start.out" |
启动
1 2 3 |
sh nacos/bin/startup.sh -po 8841 sh nacos/bin/startup.sh -po 8842 sh nacos/bin/startup.sh -po 8843 |
nginx 负载均衡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
upstream nacos { server 192.168.43.133:8841; server 192.168.43.133:8842; server 192.168.43.133:8843; } server { listen 80; location / { proxy_pass http://nacos; } } |
Docker
官方文档:https://github.com/nacos-group/nacos-docker/blob/master/README_ZH.md
单机持久化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
docker run -d \ -p 8848:8848 \ --net localbridge \ -e MODE=standalone \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=mysql57 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_DATABASE_NUM=1 \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e JVM_XMN=128m \ -e JVM_MS=32m \ -e JVM_MMS=320m \ --name nacos nacos/nacos-server:2.0.2 |
集群持久化
这里新建3个nacos,不对外暴露端口,通过nginx负载内部访问nacos,nginx对外暴露80端口。1个nginx+3个nacos+1个MySQL使用完3G内存。
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
docker run -d \ --net localbridge \ -e MODE=cluster \ -e PREFER_HOST_MODE=hostname \ -e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=mysql57 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_DATABASE_NUM=1 \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e JVM_XMN=128m \ -e JVM_MS=32m \ -e JVM_MMS=320m \ --name nacos1 nacos/nacos-server:2.0.2 docker run -d \ --net localbridge \ -e MODE=cluster \ -e PREFER_HOST_MODE=hostname \ -e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=mysql57 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_DATABASE_NUM=1 \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e JVM_XMN=128m \ -e JVM_MS=32m \ -e JVM_MMS=320m \ --name nacos2 nacos/nacos-server:2.0.2 docker run -d \ --net localbridge \ -e MODE=cluster \ -e PREFER_HOST_MODE=hostname \ -e NACOS_SERVERS="nacos1:8848 nacos2:8848 nacos3:8848" \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=mysql57 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=123456 \ -e MYSQL_DATABASE_NUM=1 \ -e JVM_XMS=256m \ -e JVM_XMX=256m \ -e JVM_XMN=128m \ -e JVM_MS=32m \ -e JVM_MMS=320m \ --name nacos3 nacos/nacos-server:2.0.2 |
nginx负载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
upstream nacos { server nacos1:8848; server nacos2:8848; server nacos3:8848; } server { listen 80; server_name nacos.binz.com; location / { proxy_pass http://nacos; } } |
访问:http://nacos.binz.com/nacos