docker安装nacos集群

7 篇文章 0 订阅
1 篇文章 0 订阅

服务器说明:

1、单台服务器做nacos集群

2、nacos版本:2.0.0-bugfix

3、nacos外连其他服务器的mysql, 所以这里没写mysql安装配置

4、使用nginx转发

5、Docker version 19.03.13

6、mysql version 5.7

7、记得把下面用到的端口都放开

 

步骤:

  • 新建操作目录
# 创建新目录

mkdir -p /usr/local/work/docker_compose/nacos-cluster

# 创建环境配置

mkdir env

# 写入配置

vim nacos.env

  • 在nacos.env中写入下列内容:
# 加入其他配置,参考后面列出的可用环境变量配置
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=数据库地址
MYSQL_SERVICE_DB_NAME=数据库名称
MYSQL_SERVICE_PORT=数据库端口
MYSQL_SERVICE_USER=数据库用户名
MYSQL_SERVICE_PASSWORD=数据库密码
  • 创建docker-compose文件
cd  /usr/local/work/docker_compose/nacos-cluster

# 创建docker-compose.yml文件

vim docker-compose.yml
  • docker-compose.yml文件配置
version: "3"
services:
  nacos1:
    hostname: nacos1
    container_name: nacos1
    image: nacos/nacos-server:2.0.0-bugfix
    volumes:
      - ./cluster-logs/nacos1:/home/nacos/logs
      - ./nacos1/init.d:/home/nacos/init.d
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    env_file:
      - ./env/nacos.env

  nacos2:
    hostname: nacos2
    image: nacos/nacos-server:2.0.0-bugfix
    container_name: nacos2
    volumes:
      - ./cluster-logs/nacos2:/home/nacos/logs
      - ./nacos2/init.d:/home/nacos/init.d
    ports:
      - "8849:8848"
      - "9849:9848"
    env_file:
      - ./env/nacos.env

  nacos3:
    hostname: nacos3
    image: nacos/nacos-server:2.0.0-bugfix
    container_name: nacos3
    volumes:
      - ./cluster-logs/nacos3:/home/nacos/logs
      - ./nacos3/init.d:/home/nacos/init.d
    ports:
      - "8850:8848"
      - "9850:9848"
    env_file:
      - ./env/nacos.env
  • 启动集群:
# 在nacos-cluster 目录下执行命令
docker-compose up -d

# -d 代表后台运行
  • 验证启动:

http://服务器地址:8848/nacos

http://服务器地址:8849/nacos

http://服务器地址:8850/nacos

正常登陆就Ok

 

  • 关闭集群:
docker-compose down
  • 配置nginx
    upstream cluster{
        server 服务器地址:8848;
        server 服务器地址:8849;
        server 服务器地址:8850;
    }

    server {
        listen 8080;
        server_name localhost;

        location /nacos {
            proxy_pass http://cluster;
        }
    }

访问:http://服务器地址:8080/nacos

 

nacos可用环境变量:

属性名称描述选项
MODE系统启动方式: 集群/单机cluster/standalone默认 cluster
NACOS_SERVERS集群地址p1:port1空格ip2:port2 空格ip3:port3
PREFER_HOST_MODE支持IP还是域名模式hostname/ip 默认 ip
NACOS_SERVER_PORTNacos 运行端口默认 8848
NACOS_SERVER_IP多网卡模式下可以指定IP 
SPRING_DATASOURCE_PLATFORM单机模式下支持MYSQL数据库mysql / 空 默认:空
MYSQL_SERVICE_HOST数据库 连接地址 
MYSQL_SERVICE_PORT数据库端口默认 : 3306
MYSQL_SERVICE_DB_NAME数据库库名 
MYSQL_SERVICE_USER数据库用户名 
MYSQL_SERVICE_PASSWORD数据库用户密码 
MYSQL_SERVICE_DB_PARAM数据库连接参数default : characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
MYSQL_DATABASE_NUMIt indicates the number of database默认 :1
JVM_XMS-Xms默认 :1g
JVM_XMX-Xmx默认 :1g
JVM_XMN-Xmn默认 :512m
JVM_MS-XX:MetaspaceSize默认 :128m
JVM_MMS-XX:MaxMetaspaceSize默认 :320m
NACOS_DEBUG是否开启远程DEBUGy/n 默认 :n
TOMCAT_ACCESSLOG_ENABLEDserver.tomcat.accesslog.enabled默认 :false
NACOS_AUTH_SYSTEM_TYPE权限系统类型选择,目前只支持nacos类型默认 :nacos
NACOS_AUTH_ENABLE是否开启权限系统默认 :false
NACOS_AUTH_TOKEN_EXPIRE_SECONDStoken 失效时间默认 :18000
NACOS_AUTH_TOKENtoken默认 :SecretKey012345678901234567890123456789012345678901234567890123456789
NACOS_AUTH_CACHE_ENABLE权限缓存开关 ,开启后权限缓存的更新默认有15秒的延迟默认 : false
MEMBER_LIST通过环境变量的方式设置集群地址例子:192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
EMBEDDED_STORAGE是否开启集群嵌入式存储模式embedded 默认 : none
NACOS_AUTH_CACHE_ENABLEnacos.core.auth.caching.enableddefault : false
NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLEnacos.core.auth.enable.userAgentAuthWhitedefault : false
NACOS_AUTH_IDENTITY_KEYnacos.core.auth.server.identity.keydefault : serverIdentity
NACOS_AUTH_IDENTITY_VALUEnacos.core.auth.server.identity.valuedefault : security
NACOS_SECURITY_IGNORE_URLSnacos.security.ignore.urlsdefault : /,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

 

遇到的坑:

宿主机安装了mysql 服务, 内网 所以其他人都可以连接, 然后上面nacos配置mysql地址的时候, 就直接用的宿主机地址,但是始终报错,如下

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'configOpsController' defined in URL [jar:file:/home/nacos/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-1.4.0.jar!/com/alibaba/nacos/config/server/controller/ConfigOpsController.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:866)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204)
	at com.alibaba.nacos.Nacos.main(Nacos.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
	at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:413)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1761)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
	... 27 common frames omitted
Caused by: com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
No DataSource set
	at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:203)
	at com.alibaba.nacos.config.server.service.dump.ExternalDumpService.init(ExternalDumpService.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307)
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
	... 40 common frames omitted
Caused by: java.lang.IllegalStateException: No DataSource set
	at org.springframework.util.Assert.state(Assert.java:73)
	at org.springframework.jdbc.support.JdbcAccessor.obtainDataSource(JdbcAccessor.java:77)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452)
	at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462)
	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:473)
	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:480)
	at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalStoragePersistServiceImpl.findConfigMaxId(ExternalStoragePersistServiceImpl.java:553)
	at com.alibaba.nacos.config.server.service.dump.processor.DumpAllProcessor.process(DumpAllProcessor.java:51)
	at com.alibaba.nacos.config.server.service.dump.DumpService.dumpConfigInfo(DumpService.java:260)
	at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:172)
	... 48 common frames omitted

原因:记得把宿主机3306端口放开  放开   放开 ,docker容器访问宿主机的Mysql 相当于外网访问,

这个问题搞了一下午。。。。

 

参考地址:https://github.com/nacos-group/nacos-docker/blob/master/README_ZH.md

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值