参考 https://nacos.io/zh-cn/docs/quick-start.html 和 https://nacos.io/docs/latest/quickstart/quick-start-docker/
linux安装nacos
1.下载
wget https://github.com/alibaba/nacos/releases/download/2.0.4/nacos-server-2.0.4.tar.gz
2.解压
unzip nacos-server-
v
e
r
s
i
o
n
.
z
i
p
或者
t
a
r
−
x
v
f
n
a
c
o
s
−
s
e
r
v
e
r
−
version.zip 或者 tar -xvf nacos-server-
version.zip或者tar−xvfnacos−server−version.tar.gz
3.启动服务器
cd nacos/bin
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
4.服务注册&发现和配置管理
服务注册
curl -X POST ‘http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080’
服务发现
curl -X GET ‘http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName’
发布配置
curl -X POST “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld”
获取配置
curl -X GET “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test”
5.关闭服务器
Linux/Unix/Mac
sh shutdown.sh
Windows
shutdown.cmd
或者双击shutdown.cmd运行文件。
Docker安装nacos
端口说明:9848为2.0之后新增的grpc通信端口,如果是单机启动,9849不需要,7848也不需要
安装时发现-e JVM_XMS=256m -e JVM_XMX=256m -e JVM_XMN=128m -e JVM_MS=64m -e JVM_MMS=128m低于上面的配置不能完全启动成功,会内存溢出
要在standalone模式远程调试nacos需以下配置(不需在standalone模式下调试,可跳过此节,直接查看docker安装nacos重新整理安装和配置)
监控jvm使用情况:
-Dcom.sun.management.jmxremote 开启jmx远程连接
-Dcom.sun.management.jmxremote.rmi.port=8890 映射 宿主机端口,一定要注意这个是jmx的端口
-Dcom.sun.management.jmxremote.port=8890 docker 容器端口
-Djava.rmi.server.hostname= 你的服务器ip,客户端可访问的外网地址
-Dcom.sun.management.jmxremote.ssl=false 是否采用ssl协议
-Dcom.sun.management.jmxremote.authenticate=false 是否通过账户密码
-Dcom.sun.management.jmxremote.acccess.file=jmxremote.access 不起作用,文件名错了或文件找不到也不报错
-Dcom.sun.management.jmxremote.password.file=jmxremote.password
jmxremote.password里的用户固定为monitorRole和controlRole 其他自定义用户不起作用
在docker-startup.sh文件里加上
#jconsole
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote"
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.rmi.port=5505"
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.port=5505"
JAVA_OPT="${JAVA_OPT} -Djava.rmi.server.hostname=内网不行,需外网地址"
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.authenticate=true"
JAVA_OPT="${JAVA_OPT} -Dcom.sun.management.jmxremote.password.file=/home/nacos/jmxremote/jmxremote.password"
Error: Password file read access must be restricted: /etc/cassandra/jmxremote.password
在配置JMX远程访问的时候,设置jmxremote.password文件权限,修改该文件时添加写权限,chmod +w jmxremote.password ,放开角色信息那俩行的注释,保存,再使用chmod 0400 jmxremote.password
这样就是它正确的权限设置
在application.proerties中配置mysql的方法
把下面这段放到conf/application.proerties文件里就生效了
#mysql数据库配置
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_DATABASE_NUM=1
MYSQL_SERVICE_HOST=公网ip 主机的内网不行或者用mysql容器的ip(没尝试)
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_DB_NAME=nacos_config
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=123456
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true
docker安装nacos重新整理安装和配置
- 下载镜像
docker pull nacos/nacos-server:v2.4.3
- 简单启动nacos命令(为了看nacos的默认配置文件,mysql初始化脚本【当然也可从其他方式,如官网,github直接查看或下载】),在这里直接从容器中获取这些文件。
docker run --name nacos -d -p 8848:8848 -e MODE=standalone -e JVM_XMS=128m -e JVM_XMX=128m -e JVM_XMN=64m -e JVM_MS=96m -e JVM_MMS=128m nacos/nacos-server:v2.4.3
将容器内的/home/nacos/conf复制到宿主机/opt/config/nacos
mkdir -p /opt/config/nacos
sudo docker cp nacos:/home/nacos/conf /opt/config/nacos
在数据库中新建nacos_config库,执行脚本mysql-schema.sql。然后创建一个用户
create user 'nacos'@'%' IDENTIFIED by '123456';
grant all privileges on nacos_config.* to 'nacos'@'%';
FLUSH PRIVILEGES;
- 编辑docker compose的yaml文件 6-nacos.yml
services:
nacos:
image: nacos/nacos-server:v2.4.3
container_name: nacos
#cap_add:
# 只是为了在容器中用jmap,jps,jinfo命令时配的,一般不需要
#- SYS_PTRACE
volumes:
- /opt/services/nacos/logs:/home/nacos/logs
#用env_file或environment代替下面的配置
#- /opt/services/nacos/conf/application.properties:/home/nacos/conf/application.properties
#- /opt/services/nacos/jmxremote:/home/nacos/jmxremote#调试nacos,standalone模式启动需修改容器内/home/nacos/bin/docker-startup.sh
env_file:
- /opt/config/nacos/nacos-standalone-mysql.env
#environment中的变量比env_file中的优先级高,如果有重复则environment会覆盖env_file文件中的变量
environment:
JVM_XMS: 128m
JVM_XMX: 128m
JVM_XMN: 64m
JVM_MS: 96m
JVM_MMS: 128m
ports:
#- 5505:5505#调试nacos
- 8848:8848
- 9848:9848
networks:
default:
name: sill
nacos的配置可以用application.properties,我这里用了https://github.com/nacos-group/nacos-docker/blob/master/example/standalone-mysql-8.yaml官方示例中的方式。
/opt/config/nacos/nacos-standalone-mysql.env的内容如下:
PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
# mysql是容器的名称,因为同在一个网络:sill中,所以可以用容器名称作为主机名
MYSQL_SERVICE_HOST=mysql
MYSQL_SERVICE_DB_NAME=nacos_conf
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=nacos
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
NACOS_AUTH_IDENTITY_KEY=2222
NACOS_AUTH_IDENTITY_VALUE=2xxx
NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
创建nacos日志文件挂载目录
mkdir -p /opt/services/nacos/logs
4.运行。先停掉之前启动的nacos容器,然后正式启动。
sudo docker stop nacos
docker rm nacos
启动
sudo docker compose -f 6-nacos.yml up -d
另外停止并删除容器命令
sudo docker compose -f 6-nacos.yml up -d
仅停止容器命令
sudo docker stop nacos