分享

CloudFoundry多节点部署之配置文件全攻略

pig2 发表于 2014-4-2 02:13:01 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 0 15978
本帖最后由 pig2 于 2014-4-2 02:24 编辑
CloudFoundry搭建与openstack搭建有什么相同和不同之处?


搭建目标
我们的目标是搭建一个多节点的CF,这个CF拥有自己的域名,我这里叫做*.yangcf.com。这个CF拥有多个router、dea、mysql_node。但是没有多cc(这部分以后再添加)

搭建背景
我们需要有一个Iaas帮我们管理创建虚拟机(VM),我是使用了CloudStack。
然后利用Iaas先创建一个template VM,在这个VM中利用dev_setup安装一个单机的CF。然后为这个VM创建出一个模板,在之后的多节点搭建中需要使用这个模板来克隆虚拟机。

搭建过程
利用模板创建虚拟机,然后为不同的虚拟机添加配置,然后启动相应的组件。由于资源有限,我总共起了7台VM,他们的职责如下:
  • NATS、HM: IP:172.17.4.216
  • CC、UAA、Stager: IP : 172.17.4.230
  • LB(Nginx): IP: 172.17.4.220
  • Router0 : IP : 172.17.4.221
  • Router1 、mysql_gateway : IP : 172.17.4.228
  • DEA0、mysql_node0 : IP : 172.17.4.225
  • DEA1、mysql_node1 : IP : 172.17.4.239


配置文件修改

1. NATS组件

这里是运行nats的组件,不是配置其他组件的nats连接。nats需要做的配置在nats_server/nats_server.yml文件中(所有的配置文件均在/root/cloudfoundry/.deployments/devbox/config/目录下)。需要修改的是nats的ip,也就是net: 172.17.4.199这一行,把它改成NATS组件所在的VM的ip,这里需要改成net: 172.17.4.216。当然如果你需要修改port、user、password也是可以的,不过我这里没有改。

Screenshot-11.png
2. HM组件

Health Manager组件的配置文件是health_manager.yml。需要配置的是nats和cc db。(由于nats是所有组件都需要配置的内容,因此在下面的章节中将不再提到nats,但是需要知道每个组件必须配置nats)。nats就是mbus: nats://……这一行,我们需要把这行的ip改成nats组件所在VM的ip,也就是
  1. mbus: nats://nats:nats@172.17.4.216:4222
复制代码

当然,如果你在前面把nats的port, user, password都改掉了,这里也需要做相应的修改。对应的域为:
  1. nats://user:password@ip:port
复制代码

然后是cc db的配置,我们需要在HM配置文件中写下cloud controller的database所在地址。主要是在database_environment中,一般只需要修改host: 172.17.4.230这一行即可。
Screenshot-21.png


3. CC组件
cc的配置文件为cloud_controller.yml,cc需要配置两个url,也就是前面提到的*.yangcf.com。一个url为:external_uri,需要改为:external_uri: api.yangcf.com。另外一个为uaa的uri:在uaa key下面的url,需要改为:url: uaa.yangcf.com。
Screenshot-22.png
Screenshot-23.png

4. UAA组件
uaa的配置文件是uaa.yml。我们需要在其中配置一个uaa。这是默认配置文件没有包含的内容,具体可以看下图。在其中的内容主要有host:uaa所在VM的ip,port:uaa服务器的端口号,一般是8080,uaa是个web应用,使用tomcat,所有默认是8080。uris:两个uaa服务的url。可以看下图
Screenshot-24.png
uaa还需要配置一个cc的database,uaa需要访问cloud controller所在的数据库:
Screenshot-25.png
最后我们需要关注下uaa的database,我们可以选择uaa本地起一个数据库,也可以使用cc的数据库,由于我的集群中uaa和cc在一个VM上,所以这里依旧使用了localhost
Screenshot-26.png

5. Mysql Node组件
Mysql node 配置文件为mysql_node.yml。需要配置index和node_id。service node是需要index来编号的,所以不同的service node需要有不同的index,不过不必连续。而node_id只是用来看看的,如果不改,似乎也可以运作。
Screenshot-27.png

6. Nginx组件
nginx组件不是在CF中的,而是架设在router之前的一个组件,它把所有对*.yangcf.com的访问转给router。这个组件不需要从前面创建的模板中创建,只需要一台Linux,然后安装一个Nginx即可。

需要修改/etc/nginx/nginx.conf文件,在http块中加入upstream和server。upstream包含了所有的router ip。我这里是两个。而server是一个分发服务,其中的server_name是对应的url,这里是*.yangcf.com,而listen是端口,location是转发规则,proxy_pass就是指向前面的upstream。然后proxy_set_header Host $host;必须要填。其他一些配置似乎可有可无。

需要注意的是,其中的client_max_body_size可能会造成push 时http 413错误。具体原因是push时上传的应用超过这个size了。

Screenshot-28.png

7. Stager、Router、DEA、Gateway组件
这几个组件比较简单,只需要配置nats,不赘述了

DNS配置
由于我们要使用*.yangcf.com指向我们的nginx,因此需要配置DNS。这个不在文本讨论范围之内。我是在cloudstack中配置了DNS,不同的环境会需要不同的配置,大家自己研究了。
所有配置完成之后,为每个VM启动相应的组件,然后就可以正常工作了,祝大家一切顺利。欢迎留言讨论。


转载柳浪闻莺




没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条