最近部署cloudfoundry(以下简称cf),部署过程一波三折,在v1、v2两个版本间切换了数次,目前把v2的部署成功了,v1版本遇到的问题还没解决,先将v2的安装过程整理如下:
准备工作:
服务器环境,Ubuntu 10.04.4 LTS,2c4g,在vSphere上虚拟出的主机,需要能链接网络。
安装过程:参考https://github.com/yudai/cf_nise_installer
通常cf是安装在root用户下的,
1、安装curl
curl是利用URL语法在命令行方式下工作的开源文件传输工具,cf的安装需要用的,方法很简单
sudo apt-get install curl
2、使用nise bosh 部署cf
root用户下执行
bash < <(curl -s -k -B https://raw.githubusercontent.com/yudai/cf_nise_installer/${INSTALLER_BRANCH:-master}/scripts/bootstrap.sh)
命令意思:
“<<(” 参考here document
-s slient模式,不显示进度和error信息
-k 允许非安全的ssl链接
-B 采用ASCII方式传输
就这一条命令,已经开始安装了,噩梦也开始了,由于安装过程中需要访问s3.amazonaws.com获取文件,而国内无法访问该网站,安装过程走走停停,最后还是没成功,期间 尝试了设置代理的方式,依然不行。。。。
另外感觉这么装也不靠谱,因为这样无法修改配置文件,建议的安装方式为git clone cf_nise_bosh,然后cd 至cf_nise_installer/manifests,修改template.yml文件,需要做的是 将其中的192.168.10.10.xip.io改为自己想使用的域名,如经典的vcap.me,并将其他的ip改为本机 ip,然后切换至cf_nise_installer/,执行./scripts/install.sh(不能直接./install.sh, 因为install.sh里要调用别的脚本,用的是相对路径),几个脚本的内容不算复杂,有时间总结一下脚本的执行过程。依然避不开 的GFW安装还是没成功。。。最后是找老大要了个之前的安装包,里面包括了需要到s3.amazonaws.com下载的那些文件,修改配置文件,执行./scripts/install.sh完成安装
对于Ubuntu 10.04.4 LTS系统,安装完成后需要reboot重启系统,重启后./scripts/start.sh,待启动完成后,执行/var/vcap/bosh/bin/monit summary 查看启动状态,如下:
Process 'nats' running
Process 'nats_stream_forwarder' running
Process 'cloud_controller_ng' running
Process 'cloud_controller_worker_local_1' running
Process 'cloud_controller_worker_local_2' running
Process 'nginx_ccng' running
Process 'cloud_controller_worker_1' running
Process 'cloud_controller_clock' running
Process 'uaa' running
Process 'uaa_cf-registrar' running
Process 'haproxy' running
Process 'gorouter' running
Process 'warden' running
Process 'dea_next' running
Process 'dir_server' running
Process 'dea_logging_agent' running
Process 'loggregator' running
Process 'loggregator_trafficcontroller' running
Process 'etcd' running
Process 'hm9000_listener' running
Process 'hm9000_fetcher' running
Process 'hm9000_analyzer' running
Process 'hm9000_sender' running
Process 'hm9000_metrics_server' running
Process 'hm9000_api_server' running
Process 'hm9000_evacuator' running
Process 'hm9000_shredder' running
Process 'postgres' running
System 'system_cftest5' running
各个组件都显示running则表示启动成功。
3、安装cf客户端,参考https://github.com/cloudfoundry-attic/cf
v2的cf废弃的vmc,统一改为cf,安装过成也很简单
gem install cf
我的环境上装好之后不知道什么原因没有办法直接使用cf命令,后来在.profile中加入环境变量才能直接使用
root@cftest5:~# cf -v
cf 5.4.7
执行cf -help命令可以查看具体使用方法
4、创建org和space
cf中使用org和space实现用户和应用的隔离,安装完成后默认有DevBox的org,需要创建space
cf cretate-space space-name
5、部署简单应用
参考http://helpdocs.sturgeon.mopaas.com/helpdocs/_java_web.html
项目创建完成后打成war包
设置应用的上传目的地
cf target http://api.vcap.me
cf target -o DevBox
cf target -s space-name //space-name为上一步创建的空间名
上传应用
cf push app-name --path app-path // app-name是上传的应用名,也是访问应用时的三级域名 xxx.vap.me,app-path是应用所在路径
cf的push是交互式的,按照提示输入即可,基本上一路回车就可以了,如果提示push successful,则可以使用 cf apps 查看应用状态
name status usage url
hello running 1 x 256M hello.vcap.me
如果失败,可以使用cf crashlogs app-name查看日志,根据日志信息定位问题
6、访问应用
由于虚拟机只有命令行模式,没有桌面系统,所以需要从本机访问,修改本机/etc/hosts文件,在文件中添加如下信息即可:
10.0.0.104 api.vcap.me
10.0.0.104 uaa.vcap.me
10.0.0.104 hello.vcap.me
10.0.0.104 *.vcap.me
在本机浏览器中输入hello.vcap.me/HelloWorld即可访问应用
2014.8.13更新:
gem默认安装的是v5版本的cf客户端,应该是可以通过gem install cf -v 版本号 来安装指定版本的cf客户端的(我没试过,直接从同事机器上拷贝的v6),
v6的操作和v5的有点区别,
cf login --skip-ssl-validation -a http://api.vcap.me -u admin -p c1oudc0w--skip-ssl-validation 不进行ssl校验
-a 指定api_url
-u 用户名
-p 密码
org、space的操作和v5基本一致