# anan-cloud **Repository Path**: gitKing/anan-cloud ## Basic Information - **Project Name**: anan-cloud - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 设计定位 anan基于spring boot和spring cloud生态体系技术,采用微服务前后端分离架构,为个人及企业微 服务架构提供一种解决方案,供开发人员学习和交流。其中包括服务注册与发现、服务监控、服务管理、 服务治理、服务网关、服务熔断、配置管理、认证授权中心等常见微服务组件。其中服务注册与发现支持 nacos、eureka。支持swarm集群部署、Kubernetes集群部署、jar包集群部署、war包集群部署 对应前端项目地址: https://github.com/fosin/anan-vue # 技术选型 技术 | 简介 ------ | ------ Spring Boot | 基础构建框架,用于快速整合各资源 SpringMVC | MVC分层框架 Spring Cloud Alibaba Nacos(备选Spring Cloud Config) | 配置管理中心 Spring Cloud Alibaba Nacos(备选Spring Cloud Eureka) | 服务注册中心 Spring Cloud Zuul | 服务网关 Spring Cloud Hystrix | 服务熔断框架 Spring Cloud Feign | 微服务声明式调用框架 Spring Cloud Sleuth Zipkin| 分布式链路追踪 Spring Boot Admin | 服务管理中心 Spring Data Jpa | 持久化框架 Spring Data Redis | 缓存框架 Spring Security| 安全框架 Spring Cloud OAuth2.0 | 单点登录、鉴权、认证框架 Slf4j Log4j2 | 日志框架 Spring Validator | 后端验证框架 Hibernate Validator | Hibernate验证框架 lombok | 一个通过注解自动生成get/set方法的类库 Swagger | API文档 Thymeleaf | HTML5模板引擎 Maven | 项目构建管理 Redis | 缓存内存数据库 Elasticsearch | 搜索内存数据库 Mysql | 对象关系数据库 RabbitMQ | 消息中间件 EFK | 日志收集、分析组合框架 Vuejs、Nodejs、Webpack、ElementUI | 前段开发框架 # 架构设计 # 原理介绍 # 框架版本对照 anan-cloud | anan-boot | anan-vue ------------------------------------------------------- 1.0.0-SNAPSHOT 1.0.0-SNAPSHOT 1.0.0-SNAPSHOT 2.0.0-SNAPSHOT 2.0.0-SNAPSHOT 2.0.0-SNAPSHOT 2.1.0-SNAPSHOT 2.0.0-SNAPSHOT 2.0.0-SNAPSHOT # 搭建环境 ## 1、本地开发环境local设置 基于docker的运行环境都是在CentOS7上部署得,如果是其他操作系统需要自行研究,理论上也是没有问题得。 ### 1.1、安装docker、docker-compose并配置镜像加速 #### 1.1.1、安装docker # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo systemctl start docker # Step 5: 开启开机Docker服务自动启动 sudo systemctl enable docker # 注意: # 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,你可以通过以下方式开启。同理可以开启各种测试版本等。 # vim /etc/yum.repos.d/docker-ce.repo # 将 [docker-ce-test] 下方的 enabled=0 修改为 enabled=1 # # 安装指定版本的Docker-CE: # Step 1: 安装指定版本的docker-ce-selinux # yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm # Step 2: 查找Docker-CE的版本: # yum list docker-ce.x86_64 --showduplicates | sort -r # Loading mirror speeds from cached hostfile # Loaded plugins: branch, fastestmirror, langpacks # docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable # docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable # docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable # Available Packages # Step 3: 安装指定版本的Docker-CE: (VERSION 例如上面的 17.03.0.ce.1-1.el7.centos) # sudo yum -y install docker-ce-[VERSION] #### 1.1.2、安装docker-compose(按需安装注意版本更新和匹配) sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose #### 1.1.3、配置参数(阿里云镜像加速、开启实验性功能) sudo mkdir -p /etc/docker cat > /etc/docker/daemon.json <Edit Configurations,在VM options中添加 -Dlog4j.skipJansi=false MYECLIPSE中,Run Configurations->Arguments-> VM arguments 中添加 -Dlog4j.skipJansi=false MYECLIPSE 需要ansi 插件的支持 ### 1.6、按顺序启动服务 1.6.1、启动anan-authserver授权认证中心 1.6.2、启动anan-platformserver平台服务中心、anan-zuulgateway服务路由网关 1.6.3、启动anan-adminserver服务监控 ### 1.7、打开前端项目anan-vue,移步 https://github.com/fosin/anan-vue 下面的README.md查看前端项目的开发环境搭建过程 ### 1.8、如果使用Spring Cloud Eureka作为服务注册和发现组件、Config作为配置中心() 1.8.1、修改在以下模块的源码目录下的启动配置文件src/main/resources/bootstrap.yml anan-authserver anan-platformserver anan-zuulgateway anan-adminserver anan-cloudgateway 1.8.1、关闭Nacos的作为服务发现和配置中心的设置 spring.cloud.nacos.config.enabled=false spring.cloud.nacos.discovery.enabled=false 1.8.2、启用Eureka和Config作为服务发现和配置中心的设置 euerka.client.enabled=true spring.cloud.config.discovery.enabled=true spring.cloud.config.enabled=true 1.8.3、设置启动配置 修改anan-cloud的pom.xml中的相关配置,local环境可以不用修改,一般需要修改生产环境 http://${anan-placeholder1}spring.security.user.name${anan-placeholder2}:${anan-placeholder1}spring.security.user.password${anan-placeholder2}@anan-eurekaserver:51000/eureka/ native file:deploy/anan-config https://github.com/fosin/anan-cloud/deploy anan-config 192.168.137. rabbitmq:5672 '{cipher}AQAGy3LYSBkcOJA32VA/mT3jNtxscWGe0Eto3isApxPrUgv00Pw0629LROM3zCh9KC3/HqP4aoUexyBw3QhdLCkXr6zpXGFrj0x7EPcu+A9B9kbzZejfcdG3l+Wln+chjS50cLe0txPDt4ioZxbLb0BjgwfPS4THrIfozhJgyRKNwkrw4prTXSnE2o/tbo/rHKJutXF53ywkAqRK7sZNFUMiHZTKiQkKzzCTUQmFRoBYkYtoc2SjVMerEfySCyx8oEm0+FnLpUuFpexO/cVl/YbWxmeU4qvrpeDgj1OEJ9JAuKZGfSHF/1LdvaOP7HVlx1EiyqLoQys/pa1vFjkRu8YHSmSS7jOfiGty2sT3g4+fFG7G0K+8g5cmRGAUbhUppDI=' '{cipher}AQAf9K0s8zLVaIk44+wqpHGuHsHEK5G4KKu1vk0HwxlojaYQHRkNsFhdQwmcrnkayWpGmNZezJCVb56JJTYL0wOus7L+zUIRWG0YIBzZBzG0iAX/6fQ0l7EVc6JyYmksGi6czSWhhAYvaJ2zupxU5pMou+k48ILP1MSZ+2n/mmM2OA/msXzum7hhSbuHKHkazorFlYLem2efeU0M61xWGRgzHAJ6pOxWGJx2NepgFDGLSTpDiqRTXD98AabHa28X8TpBbFynDONrU3mueuW/TSrXOlzp2LOO/cDbYGpZXAc/jypbH8SWfkSQlQrWaKBg2FJ8DYg/hUnxfSy+QbzyeGkPfJAcrDZ+9lhluKJ2RplT9bAedAWmvzPu2cJCQuf/RmM=' '{cipher}AQAGy3LYSBkcOJA32VA/mT3jNtxscWGe0Eto3isApxPrUgv00Pw0629LROM3zCh9KC3/HqP4aoUexyBw3QhdLCkXr6zpXGFrj0x7EPcu+A9B9kbzZejfcdG3l+Wln+chjS50cLe0txPDt4ioZxbLb0BjgwfPS4THrIfozhJgyRKNwkrw4prTXSnE2o/tbo/rHKJutXF53ywkAqRK7sZNFUMiHZTKiQkKzzCTUQmFRoBYkYtoc2SjVMerEfySCyx8oEm0+FnLpUuFpexO/cVl/YbWxmeU4qvrpeDgj1OEJ9JAuKZGfSHF/1LdvaOP7HVlx1EiyqLoQys/pa1vFjkRu8YHSmSS7jOfiGty2sT3g4+fFG7G0K+8g5cmRGAUbhUppDI=' '{cipher}AQAf9K0s8zLVaIk44+wqpHGuHsHEK5G4KKu1vk0HwxlojaYQHRkNsFhdQwmcrnkayWpGmNZezJCVb56JJTYL0wOus7L+zUIRWG0YIBzZBzG0iAX/6fQ0l7EVc6JyYmksGi6czSWhhAYvaJ2zupxU5pMou+k48ILP1MSZ+2n/mmM2OA/msXzum7hhSbuHKHkazorFlYLem2efeU0M61xWGRgzHAJ6pOxWGJx2NepgFDGLSTpDiqRTXD98AabHa28X8TpBbFynDONrU3mueuW/TSrXOlzp2LOO/cDbYGpZXAc/jypbH8SWfkSQlQrWaKBg2FJ8DYg/hUnxfSy+QbzyeGkPfJAcrDZ+9lhluKJ2RplT9bAedAWmvzPu2cJCQuf/RmM='--> anan local classpath:/cdp.jks 123456 cdp 123456 1.8.4、启动服务 1.8.4.1、启动anan-eurekaserver服务注册与发现中心 1.8.4.2、启动anan-configserver配置中心 1.8.4.3、启动anan-authserver授权认证中心 1.8.4.4、启动anan-platformserver平台服务中心、anan-zuulgateway服务路由网关 1.8.4.5、启动anan-adminserver服务监控 ## 2、部署生产环境 ### 2.1、Docker Swarm集群环境部署 移步看 deploy/swarm/readme-swarm.md ### 2.2、Kubernetes部署 移步看 deploy/k8s/readme-k8s.md ### 2.3、jar包部署 移步看 deploy/jar/readme-jar.md ### 2.4、war包部署 ### 3、实用小技巧 #### 3.1、停止删除当前容器和镜像 ##### 一条命令实现停用并删除容器 docker stop $(docker ps -q) && docker rm $(docker ps -aq) ##### 修剪容器 #默认情况下,所有停止状态的容器会被删除。可以使用 --filter 标志来限制范围。 docker container prune -f docker rm $(docker ps -a| grep Exited | awk '{print $1}') #### 3.2、删除指定的镜像 #删除所有包含关键字fosin的镜像 docker rmi $(docker images | grep fosin | awk '{print $3}') #删除所有未被tag标记(none)和未被容器使用的镜像(虚悬镜像) #清理无容器使用的镜像 docker image prune -af ### 3.3、修剪容器、数据卷、网络、镜像 # 命令是修剪镜像、容器和网络的快捷方式,指定--volumes标志才会修剪卷 # 在 Docker 17.06.0 及以前版本中,还好修剪卷。在 Docker 17.06.1 及更高版本中必须为 docker system prune 命令明确指定 --volumes 标志才会修剪卷。 docker system prune --volumes -f ### 3.4、修剪volumn # 卷可以被一个或多个容器使用,并占用 Docker 主机上的空间。卷永远不会被自动删除,因为这么做会破坏数据。 docker volume prune -f ### 3.5、修剪网络 # Docker 网络不会占用太多磁盘空间,但是它们会创建 iptables 规则,桥接网络设备和路由表条目。 # 要清理这些东西,可以使用 docker network prune 来清理没有被容器未使用的网络。 docker network prune -f