BOSH部署CloudFoundry的问题记录及解决方案

在部署、使用开源云平台CloudFoundry(版本为v1)的过程中,遇到了一些问题,通过分析CloudFoundry的实现机制和BOSH的结构,在google的帮助下,最终将问题解决,同时对linux也有了进一步的了解。
现在将一些问题和解决方案总结出来,与大家一起分享。


一、vCenter故障排除
问题:
新虚拟机IP与已有虚拟机IP(如NFS Server的IP)冲突后,造成已有虚拟机、BOSH、Cloudfoundry不能正常工作。

解决方案:
1, 使用ESXi主机上的“Restart Management Agent”;可以恢复虚拟机状态
2, 重启vCenter服务
3, 使用“主机—>配置存储适配器、存储器”上的“全部重新扫描”功能刷新存储。(可选)
4, 重启Micro BOSH虚拟机(Micro BOSH的模板虚拟机虽然未启动,但需要在第一步的操作使他恢复正常状态,否则即使重启了Micro BOSH虚拟机,也无法访问。)。
通过以下一组命令确认micro bosh已恢复正常。
$ bosh target  <micro  bosh 的ip>
$ bosh login
$ bosh deployments
$ bosh releases
$ bosh vms
如果以上命令能正常运行并返回预期的信息,则micro bosh恢复正常。
5, 在micro bosh恢复正常后,运行“bosh cck”检查多节点的bosh的运行状态。根据“bosh cck”的提示操作,先选择“reboot vm”进行恢复。如果无法恢复,则选择“bosh cck”命令提示中的“recreate vm 。。。”进行恢复。
6, 在多节点的bosh恢复正常后,运行“bosh cck”检查多节点的cloudfoundry的运行状态。根据“bosh cck”的提示操作,先选择“reboot vm”进行恢复。如果无法恢复,则选择“bosh cck”命令提示中的“recreate vm 。。。”进行恢复。
cloudfoundry恢复后,各节点中的原有数据和设置会随着节点的重建而恢复。


二、主机增加
往vCenter中增加一个新的vSphere主机后,需要在vCenter中为新的vSphere主机增加NFS 存储(NFS datastore)、网络(CF Network、Services Network),使得BOSH部署CloudFoundry时能够识别出网络中新增加的vSphere主机。


三、powerDNS节点
第一次部署多节点BOSH时,如果powerDNS在Job列表中最后一个时,最后一个执行该dns job,则DNS这个节点上的数据库会没有表。因为powerDNS节点上的表有director job来创建。因此最好将powerDNS这个节点放在director之前。或者多节点BOSH部署完后,再重新部署一下director这个job。


四、修改‘最大打开文件数’
1、 修改DEA节点上的agent.rb
agent.rb: /var/vcap/packages/dea/lib/dea/agent.rb
搜索 ‘fds’,在def process_dea_start方法中修改num_fds值为9000.
2、 使用root权限修改以下文件内容
/etc/security/limits.conf,增加以下内容,
* soft nproc 10240
* hard nproc 10240
vcap soft nofile 9000
vcap hard nofile 65000
root soft nofile 9000
root soft nofile 65000
* soft nofile 10240 # 控制进程的打开最大文件数
* hard nofile 10240 # 控制进程的打开最大文件数
/etc/pam.d/common-session,增加以下内容,
session required pam_limits.so
/etc/profile,增加以下内容,(该操作可选)
ulimit -HSn 10240

需要重启电脑,否则更改不会立即生效。 
检查:
   ulimit -a 这个是列出当前系统的所有内容限制
   ulimit -n 这个是列出当前系统能够打开最大的文件句柄数。

重启电脑之后,就可以使用root方式进行修改/etc/profile中的ulimit -HSn 后的数字,再执行source /etc/profile,就可以马上看到效果了。(该操作可选)

查看进程的limits
1、 ps -ea
查看进程信息。
2、 cat   /proc/进程id号/limits
查看指定进程下的操作限制内容。


五、修改cloud controller的nginx上传文件大小限制
当上传大文件到cloudfoundry时,文件大小超过256M,此时cloudfounry会返回413 的http 响应代码(上传文件大小超过nginx最大值)。
为了能够上传大文件,修改两个节点上的nginx.conf文件。
1、cloud controller节点上的nginx的“client_max_body_size 556M;”参数值。
文件:/var/vcap/data/jobs/cloud_controller/56.8-dev/config/nginx.conf,在http上下文中修改client_max_body_size。
http {
    ...
    client_max_body_size 556M;
}
2、router节点上的nginx的“client_max_body_size 556M;”参数值。
文件:/var/vcap/data/jobs/router/18.5-dev/config/nginx.conf,在http上下文中修改client_max_body_size。
http {
    ...
    client_max_body_size 556M;
}


六、修改DEA节点的系统时间
因为MemcacheD要求各个客户端的时间要保持一致,所以统一DEA节点上的时间。bios和系统时间都使用本地时间。
使用ROOT用户登录进行操作。
1, 设置时区为UTC:dpkg-reconfigure tzdata,第一步中选择‘Etc’,第二步中选择‘UTC’
2, 查看系统时间和bios时间:
date; hwclock --show
3, 设置硬件时间
sudo hwclock --set --date ‘07/10/13 12:12:00’
4, 将系统时间设成硬件时间
sudo hwclock --hctosys
5, 再次用 date; hwclock --show 查看当前系统时间和硬件时间
6, 修改 .profile;加入如下内容
hwclock --hctosys
TZ='Asia/Shanghai'
export TZ
7, 重启后,再用date查看系统日期,达到修改日期和时区的目的。
备注:
1, 修改 ROOT用户的.profile,增加如下内容
TZ=’Asia/Shanghai’
export TZ
2, 修改时间: sudo date -s ‘20130710 10:15:00’
以上的步骤可以重复使用,最终达到效果。


七、使用部署文件更新多节点BOSH
如果在执行‘bosh deploy’命令时,出现各种错误提示,可以使用重启Micro BOSH节点上的虚拟机,或者在vCenter中选择Micro BOSH、多节点BOSH所在的vSphere主机 并选择右键菜单中的‘重新引导’功能进行重启,使用这两种方法可以修复错误提示。


八、修改CloudFoundry用户的内存分配量
根据cloud controller的部署文件模板(文件路径如下),
tempest\cf-release\jobs\cloud_controller\templates\cloud_controller.yml.erb
修改cloud foundry部署文件中关于cc(cloudcontroller)中的default_account_capacity值。内容如下:
cc:
    srv_api_uri: http://api.cf.offline
    password: zbTuuLaap44jadlas2l312lk
    token: 267f4eaa8c1758f66d5cb7adcb24adb9d7
    use_nginx: true
    new_stager_percent: 100
    new_stager_email_regexp: '.*@vmware.com'
    staging_upload_user: zxsfhgjg
    staging_upload_password: ZNVfdase9
    allow_registration: true
    default_account_capacity:
      memory: 8048
    uaa:

参考:
tempest\cf-release\src\cloud_controller\cloud_controller\config\appconfig.rb
tempest\cf-release\src\cloud_controller\cloud_controller\config\cloud_controller.yml


九、修复hbase_master
问题:hbase_master节点处于‘failing’状态。
查看该节点上的日志文件 /var/vcap/sys/log/hbase_master/hbase_master_start.stdout.log,发现错误信息。

解决办法:修改hbase_master节点上配置文件中的hbase.rootdir。
被修改的文件位置:
/var/vcap/data/jobs/hbase_master/1.1-dev/config/hbase/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.2.98:9000/hbase</value>
</property>
说明:192.168.2.98是hbase_master节点上的主机IP地址 。


十、修改cloudcontroller中stage操作时间
查看tempest\cf-release\jobs\cloud_controller\templates\cloud_controller.yml.erb,可以看到staging下的  max_staging_runtime参数控制cloud controller的stage时间,这个时间可以在cloudfoundry的部署文件中进行配置;或者修改cloud controller节点上的/var/vcap/data/jobs/cloud_controller/56.8-dev/config/cloud_controller.yml文件中的该参数值。

猜你喜欢

转载自7wolfs.iteye.com/blog/1910056
今日推荐