微服务部署集群整套方案
来源:互联网 发布:飞客数据恢复怎么样 编辑:程序博客网 时间:2024/05/16 07:04
使用的平台语言JAVA
:1.8
第一步:开发
java 项目
每个系统分为三个模块(gradle项目)
api
用于存放consumer
与provider
共用实体类
consumer
SpringBoot
项目
主要功能
1.RESTFul对外接口访问。
2.包含限流,断路器,幂等请求等。
cat build.gradle 核心配置
buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version") }}apply plugin: 'org.springframework.boot'jar { String buildDir = project.buildDir manifest { attributes ( "Main-Class": "com.dounine.demo.Application",//main主函数加载入口 "Class-Path": new File(buildDir+'/libs/lib').list().collect { "lib/${it}" }.join(" ")//为了打成jar包,不把全部包都打进一个包里面 ) }}task copyJars(type:Copy) { from configurations.runtime into new File('build/libs/lib') // 目标位置}compileJava.dependsOn copyJarsdef env = hasProperty("pro")?"pro":(hasProperty("dev")?"dev":null)//用于打包线上环境sourceSets { main { resources { srcDirs = ["src/main/resources", "src/main/profile/$env"] } }}
开发完成使用gradle打包命令
gradle build -Ppro -xtest #打包两次
provider
与数据库或逻辑操作
cat build.gradle 核心配置
jar { String buildDir = project.buildDir manifest { attributes ( "Main-Class": "com.bjike.goddess.ticket.Application",//main主函数加载入口 "Class-Path": new File(buildDir+'/libs/lib').list().collect { "lib/${it}" }.join(" ") ) }}task copyJars(type:Copy) { from configurations.runtime into new File('build/libs/lib') // 目标位置}compileJava.dependsOn copyJarsdef env = hasProperty("pro")?"pro":(hasProperty("dev")?"dev":null)sourceSets { main { resources { srcDirs = ["src/main/resources", "src/main/profile/$env"] } }}
存储
可将mysql或者其它数据库等做成一个容器运行在Rancher网络中,访问通过容器名称访问即可
第二步:上传
将已经打包好在项目中的build/libs/
里面的所有文件上传
将打包好的项目上传到自己的gitlab搭建的平台,防止配置文件数据外漏。
consumer
项目上传之前先处理掉重复的jar包
7z d ls | grep .jar$ BOOT-INF/lib #使用7z的命令将jar包中的重复jar包删除git add .git commit -m "xxx"git push
第三步:使用Rancher管理docker集群一键部署
在某一个台Docker主机上新增一个容器,境像为java
挂载的目录为/root:/root
容器重启即可部署最新打包项目
cat /root/docker/deploy.sh
#!/bin/bashif [ ! -d $project ];then git clone http://$user:$password@xxx.xxx.com:10080/$user/$project.git #克隆私有部署项目 cd $projectelse cd $project git pullfiif [ "$commit" != "" ];then #部署指定版本 git checkout $commitelse #部署最新版本 git checkout masterfijava -jar `ls | grep *.jar` #运行java项目
服务内部通讯使用Rancher提供的ipsec网络,根据容器的名称做为IP地扯通讯。
如何解决域名统一访问服务consumer或者node
使用nginx
在某台宿主主机上部署一个nginx容器
//泛解析配置如下server { listen 80; //可访问node程序 server_name ~^(?<subdomain>.+)\.xxx\.xxx\.com$; access_log off; location / { set $node "-node"; client_max_body_size 100m; resolver 169.254.169.250;//rancher网络DNS地扯 proxy_pass http://$subdomain$node;//容器名称跟域名相对如:user-node项目对应的域名就是user.xxx.com proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}server { listen 8080;//用来访问consumer server_name ~^(?<subdomain>.+)\.xxx\.xxx\.com$; access_log off; location / { set $consumer "-consumer"; client_max_body_size 20m; resolver 169.254.169.250;//rancher网络DNS地扯 proxy_pass http://$subdomain$consumer:8080;//项目名称跟域名一样如:user项目对应的域名就是user.xxx.com proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}
在宿主主机再装一个nginx服务[可选]
server { listen 80;//前端页面端口 server_name *.xx.xx.com; return 301 https://$server_name$request_uri;}server { listen 443; server_name *.xx.xx.com; ssl on; ssl_certificate /etc/nginx/ssls/xx.xxx.com.crt; ssl_certificate_key /etc/nginx/ssls/xxx.xx.com.key; location / { client_max_body_size 20m; proxy_pass http://10.42.1.1;//nginx容器ip地扯 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }server { listen 8080;//用来测试consumer server_name *.xx.xx.com; location / { client_max_body_size 20m; proxy_pass http://10.42.1.1:8080;//nginx容器ip地扯 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }}
如何往Rancher集群添加一台Docker主机
新增一台主机运行第一次安装脚本
#!/bin/shsource /etc/profileyum install git -ycd /rootgit clone https://github.com/nd-team/docker.gitcd dockerbash docker-install.sh #将docker安装写成脚本systemctl start dockersystemctl enable dockersudo docker run -d --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.1 http://xxxxxx:7777/v1/scripts/79578F2CC50344FB776D:1483142400000:lTyVH6kebwBnAGdGZS2artrVRP8 #执行Rancher主机添加
1 0
- 微服务部署集群整套方案
- GIT+Gitosis+Repo 整套部署方案
- Docker Swarm 集群 微服务部署
- [转载]微服务部署:蓝绿部署、滚动部署、灰度发布等部署方案对比与总结
- 集群部署方案
- mysql分布式集群部署方案
- cocos2d-x整套实现方案
- 分布式-集群模式-微服务
- 微服务和集群搭建
- 微服务和集群搭建
- 微服务和集群搭建
- 微服务架构(三): 部署
- 选择微服务部署策略
- spark上部署微服务
- Hadoop集群Master节点部署方案
- Redis 测试以及集群部署方案
- 基于Twemproxy的Redis集群方案部署
- 典型的企业级集群部署方案
- poj3984-bfs模板详解
- DOM操作要点
- 深度学习教程:从感知器到深层网络
- 写给自己
- AutoCAD.NET API 最新教程下载及在线视频教程DevTV 中文版第1讲 入门
- 微服务部署集群整套方案
- 递归算法之汉诺塔问题
- border-radius的趣味妙谈
- lucene教程--全文检索技术详解
- strlen 和 length 以及 sizeof()区别异同
- Java Web基础——Action+Service +Dao三层的功能划分
- MyCat学习
- 测试人员的SQL语言 系列
- java_集合体系之List体系总结、应用场景——07