Nacos启动(带配置库参数)
MYSQL_***
启动时附带配置mysql
连接参数MODE=standalone
单例启动,默认集群SPRING_DATASOURCE_PLATFORM=mysql
指定schema
类型
docker run -d \
-p 8848:8848 \
--name nacos --env MODE=standalone --env \ SPRING_DATASOURCE_PLATFORM=mysql --env
MYSQL_SERVICE_HOST=127.0.0.1 --env
MYSQL_SERVICE_PORT=3306 --env
MYSQL_SERVICE_DB_NAME=nacos_config --env
MYSQL_SERVICE_USER=root --env
MYSQL_SERVICE_PASSWORD=123456\!@#
--restart=always nacos/nacos-server:latest
nacos报错
Unknown COLUMN 'encrypted_data_key' IN 'field list'
BUG产生原因:
目前(nacos 2.1.0后)官网nacos版本更新后有下面的优化:
数据库表config_info、config_info_beta、his_config_info
中需要新增字段encrypted_data_key
,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql
中已经添加该字段。
- 解决,因为上面启动的最新版的,所以添加下字段就OK了
ALTER TABLE config_info/config_info_beta/his_config_infoADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥'
使用中BUG记录与处理
Nacos
下线服务时,caused: errCode: 500, errMsg: do metadata operation failed ;caused: com.alibaba.nacos.consistency.exception.ConsistencyException: The Raft Group [naming_instance_metadata] did not find the Leader node;caused: The Raft Group [naming_instance_metadata] did not find the Leader node;
- 解决:Nacos 采用 raft 算法来计算 Leader,并且会记录前一次启动的集群地址,所以当
docker
重启服务时IP
改变了会导致raft
记录的集群地址失效,导致选Leader
出现问题,只要删除Nacos
根目录下data
文件夹下的protocol
文件夹即可。
[root@localhost ~]# docker ps
#ba88aaf79aad nacos/nacos-server:latest "bin/docker-startup.…" 3 days ago Up 4 seconds 0.0.0.0:8848->8848/tcp nacos
[root@localhost ~]# docker exec -it ba88aaf79aad /
OCI runtime exec failed: exec failed: unable to start container process: exec: "/":
permission denied: unknown
# 这个报错是路径不对
[root@localhost ~]# docker exec -it ba88aaf79aad /bin/bash
[root@ba88aaf79aad nacos]# ls
LICENSE NOTICE bin conf data logs target work
[root@ba88aaf79aad nacos]# cd data
[root@ba88aaf79aad data]# ls
loader naming protocol tenant-config-data tps upgrade.state
[root@ba88aaf79aad data]# cd protocol/
[root@ba88aaf79aad protocol]# ls
raft
[root@ba88aaf79aad protocol]# cd ..
[root@ba88aaf79aad data]# rm -rf protocol/
# 因为是docker exec进入容器修改的文件,所以需要自己进行容器的重启
- 这里推荐使用管理工具
partainer
,这个工具本身也可以通过docker
启动(如果服务多的多话)
Redis启动与配置
-p 6379:6379
端口映射:前表示主机部分,:后表示容器部分。--name redis
指定该容器名称,查看和进行操作都比较方便。-v
挂载目录,规则与端口映射相同。(docker本身是沙箱隔离的容器,不能随便访问外部(主机)资源目录。通过挂载目录即将对应的主机上的目录挂载给容器内的目录,以达到容器间共用数据)-d docker.io/redis:latest
表示后台启动最新版本redis
redis-server /etc/redis/redis.conf
以配置文件启动redis
,加载容器内的conf
文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
docker run -p 6379:6379
--name redis
-v /usr/local/docker/redis.conf:/etc/redis/redis.conf
-d docker.io/redis:latest
redis-server /etc/redis/redis.conf --appendonly yes
下载官方配置redis.conf
- 修改
redis.conf
配置文件
#注释掉这部分,这是限制redis只能本地访问
bind 127.0.0.1
#默认yes,开启保护模式,限制为本地访问
protected-mode no
#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
daemonize no
#设置密码(可选)
requirepass 123
#数据库个数(可选)
databases 16
#redis持久化(可选)
appendonly yes
相关文章
暂无评论...