赞
踩
因业务需求,有多台云服务器包括移动云服务器、阿里云服务器、都是只能公网访问。
服务器1:3x.x.x.x2
服务器2:3x.x.x.xx7
服务器3:4x.x.x.x0
服务器4:4x.x.x.x5
微服务技术选型是zuul-gateway作为网关,nacos作为配置管理中心,redis作为缓存,mysql作为数据,fastdfs作为文件存储系统,nginx作为web服务器
服务器3 搭建nacos服务、redis服务、zuul-gateway服务。
nacos 搭建配置 略
nacos配置中心截图预览
redis 搭建配置 略
zuul-gawate 配置分为三个,bootstrap.yml 和nacos配置的api-gateway配置和其他微服务共用common.yml配置
bootstrap.yml
server: port: 10001 undertow: buffer-size: 1024 direct-buffers: true spring: application: name: api-gateway cloud: nacos: config: server-addr: ip:port #服务器3的ip和nacos启动的端口 file-extension: yml namespace: xxxx #nacos的命名空间 shared-configs: - data-id: common.yml group: DEFAULT_GROUP refresh: false discovery: namespace: xxxx #nacos的命名空间 跟上面的namespace一样 server-addr: ip:port #服务器3的ip和nacos启动的端口 跟上面server-addr一样 ip: ip #服务器3的IP port: 10001 #该服务使用的端口,跟上面的port一样 servlet: multipart: enabled: true max-file-size: 512MB max-request-size: 512MB file-size-threshold: 0 http: multipart: location:xxp #临时目录 # 添加ribbon的超时时间设置 ribbon: ReadTimeout: 600000 ConnectTimeout: 600000 zuul: host: connect-timeout-millis: 600000 socket-timeout-millis: 600000 hystrix: command: default: execution: isolation: thread: timeout-in-milliseconds: 600000
api-gateway配置
zlt: oauth2: token: store: type: redis security: ignore: # 忽略认证的地址 httpUrls: > /api-demo/**, /api-demouser/** auth: urlPermission: #是否开启url级别权限 enable: true #配置只进行登录认证,不进行url权限认证的api ignoreUrls: > /api-testuser/menus/tree #白名单 includeClientIds: - test renew: #是否开启token自动续签(目前只有redis实现) enable: true #白名单 includeClientIds: - test gateway: #网关动态路由 dynamicRoute: enabled: true zuul: ribbon-isolation-strategy: thread ribbon: eager-load: enabled: true threadPool: useSeparateThreadPools: true threadPoolKeyPrefix: api-gateway #关闭重试 retryable: false ignored-headers: Access-Control-Allow-Credentials,Access-Control-Allow-Origin,Access-Control-Allow-Methods add-host-header: true routes: demo: path: /api-demo/** service-id: demo-center strip-prefix: true sensitive-headers: '*' custom-sensitive-headers: true demouser: path: /api-demouser/** service-id: demouser-center strip-prefix: true sensitive-headers: '*' custom-sensitive-headers: true ssl-hostname-validation-enabled: false hystrix: threadpool: default: coreSize: 100 maximumSize: 2000 allowMaximumSizeToDivergeFromCoreSize: true maxQueueSize: -1 command: default: execution: isolation: thread: timeoutInMilliseconds: 60000 swagger: butler: auto-generate-from-zuul-routes: true generate-routes: demo,demouser apiDocsPath: v2/api-docs server: tomcat: max-swallow-size: -1 spring: http: multipart: location: /xx/xxx/xxp #临时目录 max-file-size: 512MB max-request-size: 512MB
common.yml配置
#### nacos(注册中心和配置中心)地址 spring: cloud: nacos: server-addr: ip:port #nacos的ip和端口号 username: nacos账号 password: nacos密码 ##### redis配置 # 连接池最大连接数(使用负值表示没有限制) ##### redis配置 redis: host: redis的ip port: redis的端口 password: redis的密码 timeout: 5000 lettuce: pool: max-active: 20 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1 # 连接池中的最大空闲连接 max-idle: 10 # 连接池中的最小空闲连接 min-idle: 0 ##### druid配置 #连接池配置(通常来说,只需要修改initialSize、minIdle、maxActive datasource: druid: initial-size: 10 max-active: 500 min-idle: 10 # 配置获取连接等待超时的时间 max-wait: 60000 #打开PSCache,并且指定每个连接上PSCache的大小 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 validation-query: SELECT 'x' test-on-borrow: false test-on-return: false test-while-idle: true #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 time-between-eviction-runs-millis: 60000 #配置一个连接在池中最小生存的时间,单位是毫秒 min-evictable-idle-time-millis: 300000 filters: stat,wall # WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter #是否启用StatFilter默认值true web-stat-filter: enabled: true url-pattern: /* exclusions: "*.js , *.gif ,*.jpg ,*.png ,*.css ,*.ico , /druid/*" session-stat-max-count: 1000 profile-enable: true session-stat-enable: false # StatViewServlet配置 #展示Druid的统计信息,StatViewServlet的用途包括:1.提供监控信息展示的html页面2.提供监控信息的JSON API #是否启用StatViewServlet默认值true stat-view-servlet: enabled: true #根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html例如:http://127.0.0.1:9000/druid/index.html url-pattern: /druid/* #允许清空统计数据 reset-enable: true login-username: Druid监控的账号 login-password: Druid监控的密码 ##### 允许bean覆盖 main: allow-bean-definition-overriding: true ##### spring-boot-actuator配置 management: endpoints: web: exposure: include: "*" endpoint: health: show-details: always ########################## application级别通用配置 ########################## ##### ribbon配置 ## 从注册中心刷新servelist的时间 默认30秒,单位ms ribbon: ServerListRefreshInterval: 15000 ## 请求连接的超时时间 默认1秒,单位ms ConnectTimeout: 30000 ## 请求处理的超时时间 默认1秒,单位ms ReadTimeout: 30000 ## 对所有操作请求都进行重试,不配置这个MaxAutoRetries不起作用 默认false #ribbon.OkToRetryOnAllOperations=true ## 对当前实例的重试次数 默认0 #ribbon.MaxAutoRetries=1 ## 切换实例的重试次数 默认1 MaxAutoRetriesNextServer: 0 ##### feign配置 feign: sentinel: enabled: true hystrix: enabled: false okhttp: enabled: true httpclient: enabled: false max-connections: 1000 max-connections-per-route: 100 client: config: feignName: connectTimeout: 30000 readTimeout: 30000 ##### mybatis-plus配置 #字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断" mybatis-plus: global-config: db-config: field-strategy: NOT_NULL #逻辑删除配置 logic-delete-value: 1 logic-not-delete-value: 0 # 原生配置 configuration: map-underscore-to-camel-case: true cache-enabled: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl ##### elasticsearch配置 zlt: elasticsearch: uris: ip:port #elasticsearch的IP和端口 username: elasticsearch的账号 password: elasticsearch的密码 ##### fastDFS配置 fdfs: web-url: ip:port #fdfs的web访问的ip和端口 trackerList: ip:port #fdfs的tracker服务的ip和端口 ##### 日志链路追踪 trace: enable: true ##### 负载均衡隔离(version隔离,只适用于开发环境) ribbon: isolation: enabled: false
服务器配置demo服务,配置包括bootstrap.yml 和nacos配置的demo-center配置和其他微服务共用common.yml配置
bootstrap.yml 配置
server: port: 10002 spring: application: name: demo-center main: allow-bean-definition-overriding: true cloud: nacos: config: server-addr: ip:port #nacos的地址 服务器3的IP和nacos启用的端口 file-extension: yml #配置文件格式 namespace: xxxx #nacos命名空间 代指某个环境 shared-configs: - data-id: common.yml group: DEFAULT_GROUP refresh: false discovery: namespace: xxxxx #nacos命名空间 代指某个环境 跟上面namespace一致,同时跟gateway以及新增的服务一致 server-addr: ip:port #nacos的地址 服务器3的IP和nacos启用的端口 ip: ip #服务器1的IP port: 10002 #该服务使用的端口,跟上面的port一样
demo-center配置
spring: datasource: url: jdbc:mysql://ip:port/demo?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai #mysql 的ip和地址 服务器2(部署mysql服务) username: user #mysql数据的账号 password: password #mysql数据的密码 driver-class-name: com.mysql.cj.jdbc.Driver #不使用common.yml的reids配置的话,可自行配置redis,如使用common.yml配置中的redis,注释即可 redis: host: ip #redis的ip port: port #redis的端口 password: pwd #redis的密码 mybatis-plus: mapper-locations: classpath:/mapper/*Mapper.xml #实体扫描,多个package用逗号或者分号分隔 typeAliasesPackage: com.xx.demo.model global-config: db-config: id-type: auto logic-delete-field: flag logic-delete-value: 1 logic-not-delete-value: 0 zlt: swagger: enabled: true title: demo测试中心 description: demo测试中心接口文档1 version: 1.0 base-package: com.xx.demo.controller cache-manager: configs: - key: menu second: 300 - key: user second: 1800 #多租户配置 tenant: enable: true ignoreTables: - demo_user - demo ignoreSqls: # 用户关联角色时,显示所有角色 - com.xx.demouser.mapper.xxMapper.findxx # 用户列表显示用户所关联的所有角色 - com.xx.demouser.mapper.xxRoleMapper.findRolesxxx #审计日志 audit-log: enabled: true log-type: db datasource: driver-class-name: com.mysql.cj.jdbc.Driver jdbc-url: jdbc:mysql://ip:port/alogs?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai #mysql 的ip和地址 服务器2(部署mysql服务) username: user #mysql数据的账号 password: password #mysql数据的密码
服务器2部署mysql数据库服务
服务器4部署demo-user服务、ngxin服务器、fastdfs服务、demo服务。
启动redis服务、mysql服务、nacos服务、api-gewate服务、demo服务,可在nacos管理后台看到如下截图
demo服务
服务1:ip为服务1的ip公网地址,端口则是配置bootstrap.yml配置文件中的端口
服务2:ip为服务4的ip公网地址,端口则是配置bootstrap.yml配置文件中的端口
api-gateway服务
ip为服务3的ip公网地址,端口则是配置bootstrap.yml配置文件中的端口
先访问demo服务器是否可被访问,例如demo写了一个url为demo/test,则通过浏览器或者postman访问
http(s)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。