- 浏览: 339267 次
- 性别:
- 来自: 成都
最新评论
-
wodediqizhang:
PHP中的 $key="ABCDEFGHIJ0123 ...
java和php对等的3DES加密算法 -
xuxiaoyinliu:
chen_bing8 写道你好,为什么我用你的demo运行后报 ...
用jXLS和poi导出Excel -
zi_wu_xian:
java用poi和jxl对excel的读取还好,如果修改文件的 ...
用jXLS和poi导出Excel -
仰望摩天轮:
大神 用webloginc或者websphere容器的时候 j ...
用BTrace排查性能问题 -
sqq920556218:
很有用,也没有报错,正在研究应用于项目
用jXLS和poi导出Excel
文章列表
mysql service broker 是mysql接入CF的代理服务实现,它是一个ROR(Ruby On Rails)工程。
目录结构
app - web应用的前端代码
\- asserts - 静态资源
\- controllers - MVC中的C,控制器代码
\- models - MVC中的M,业务数据集
\- queries - 查询
\- views - MVC中的V,视图,即html的模板文件(erb)
bin - 安装,启动服务,任务管理等脚本
config - 配置文件
db - 数据库schema脚本,rails的方式
lib - 业务代码
l ...
前提
BOSH(microbosh)部署成功
cf部署成功
准备
BOSH部署需要的三个文件:stemcell,release包,deploy-manifest
生成release包
a. 从源码生成
https://github.com/cloudfoundry/cf-mysql-release
生成,但是由于网络问题,会比较慢。
b. 下载release包
下载地址:https://github.com/cloudfoundry-community/community-shared-boshreleases
上传stemcell
文档里有提到用到的stemcell ...
uaa采用OAuth的认证方式
uaa支持多种OAuth认证方式
认证码授权(Authorization Code Grant)
浏览器请求码(Browser Requests Code)
这里的用户是已经登陆的情况,如果没登陆,在第3步会要求用户在页面填写用户名和密码
非浏览器请求码(Non-Browser Requests Code)
和上面的流程一样,不同的是客户端要求返回JSON格式(在header里指定:Accept:application/json),只是返回的是JSON格式
用户名密码隐式授权(Implicit Grant with Credentia ...
1.admin buildpack定义:
admin buildpack是指将多种语言的buildpack打包后,上传到本地的CF的仓储之中,这类buildpack zip包的集合就是buildpack。
2.admin buildpack的作用:
admin buildpack的目的是为了能够让用户在push app的时候,不指定app对应的buildpack的url,直接上传至CF部署。通常admin buildpack中的buildpacks都是离线的模式。
这样做有利于独立的部署app而不依赖互联网。
3. admin buildpack的原理:
用户push app之后, ...
uaa的配置文件是uaa.yml。war包中的uaa.yml不需要改动,一般通过指定环境变量:$CLOUDFOUNDRY_CONFIG_PATH,指定运行时外部uaa.yml路径。
具体配置项如下:
基于角色的权限控制
CF的权限管理是基于角色(role-based access control:RBAC)的,权限是设置在组织(Org)或空间(Space)上的。
组织(Orgs)
CF为方便管理,将用户按组织分开,组织内的用户共享一个组织配额(Quota),可用的服务,和域名。
空间(Spaces)
CF的所有应用和服务都被分配在空间里,一个组织至少包含一个空间,
角色和权限
一个用户可以有多个角色,这些角色权限的集合即是用户拥有的对组织或空间内应用服务的操作权限。
组织角色和权限
组织管理员(Org Manager)- 管理用户账号和组织、空间的权限,还可以查看组织中的 ...
接口访问控制
默认的接口访问
create(POST),update(PUT)和delete操作需要cloud_controller.admin的权限范围(scope)
read(GET)操作,需要cloud_controller.admin的权限范围或用户已经登录
权限验证流程
默认的权限验证
这里讨论的都是基本的权限验证,在基类中定义的。
每一个API接口调用时,在业务方法调用前先从header的auth_token中解析了用户信息,放在当前线程的context中。
参考:front_controller.rb
dea启动应用实例后,会异步探测应用访问端口(宿主机上的端口,如:61003),如果多次探测都无法连接,dea会认为应用启动失败,随即会销毁容器,导致现场不能保留。
解决办法:
注释代码中的destroy代码/var/vcap/packages/dea_next/lib/dea/task.rb,在方法:promise_destroy和destroy直接返回return
常用路径
warden.yml中
部署路径:container_depot_path:/var/vcap/data/warden/depot
例如:
java tomcat的路径:/var/vcap/data/ ...
离线包制作
从github上获取源码
$ git clone https://github.com/pivotal-cf/weblogic-buildpack
weblogic的包制作比较特别,需要自己下载oracle的jdk,和weblogic。到官方网站下载后,放到一个目录:fileserver,目录结构:
fileserver/
├── jdk
│ ├── index.yml
│ ├── jdk-8u40-ea-bin-b05-linux-x64-10_sep_2014.tar.gz
└── wls
├── index.yml
└── wls ...
相同点:
都是依赖宿主操作系统内核的轻量级容器;
都采用了linux内核技术实现容器隔离(namespace)和资源限制(cgroup);
都使用了aufs文件系统;
不同点:
用途
warden是CF内部的一个轻量级的容器,只包含容器部分
docker更全面,docker除了容器部分还包含镜像管理,镜像仓库,服务发现,selinux等,提供了一个独立运行Linux进程的轻量级虚拟化解决方案。
交互方式
docker提供了http的REST接口
warden提供了交互的协议,通过unix socket域 ...
用户登录时,uaa会颁发一个token给客户端,该token是一个JSON Web Token(JWT)
关于JWT的详细信息参考:http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-25
类似:
token管理
tokens.write:token除权,包括用户和客户端token
tokens.read:token读取,包括用户和客户端token
UAA用户组管理
scim.read:读用户和组
scim.write:添加/更新/删除用户和组
password.write:修改自己的密码
scim.userids:访问用户 ids/user的endpoint
scim.me:读/添加/更新/删除自己的用户和组
uaa.admin:设置用户密码
UAA客户端管理
clients.read:读取客户端注册信息
clients.write:添加,更新,删除客户端
...
uaa的配置文件是uaa.yml。war包中的uaa.yml不需要改动,一般通过指定环境变量:$CLOUDFOUNDRY_CONFIG_PATH,指定运行时外部uaa.yml路径。
具体配置项如下:
name: uaa # 组件名称
database: # 数据库配置
url: jdbc:postgresql://192.168.1.63:5524/uaadb # !数据库连接URL
username: uaaadmin # !数据库用户名
password: "c1oudc0w" # !数据库密码
spring_profiles: postgresq ...
Cloud Foundry Eclipse Plugin是方便开发人员部署、管理运行在CloudFoundry的Java和Spring应用的eclipse插件。
安装
从eclipse的市场可以搜索到该插件。
依次点击:Help->Eclipse Marketplace...
搜索cloudfoundry
点击:install安装
使用
release的入口是bin/release,同样需要一个构建目录实例化buildpack对象,并调用其release接口
buildpack#release方法
代码的基本结构和compile很相似,探测各个组件是否支持,然后调用各个组件的release方法
def release
container = component_detection('container', @containers, true).first
fail 'No container can run this application' unless container
compo ...