开源的PaaS方案:在OpenStack上部署CloudFoundry (四)使用Micro Bosh部署CloudFoundry

使用bosh部署应用是需要两部分,一个是创建虚拟机使用的模板stemcell,另外一个是应该的Release。所以,部署CloudFoundry之前需要上传stencil和release

4.1 使用bosh上传Stemcell

[python]  view plain copy print ?
  1. # bosh upload stemcell ~/stemcell/bosh-stemcell-2652-openstack-kvm-ubuntu-lucid-go_agent.tgz  
  2. # bosh stemcells  
  3. +------------------------------------------+---------+--------------------------------------+  
  4. | Name                                     | Version | CID                                  |  
  5. +------------------------------------------+---------+--------------------------------------+  
  6. | bosh-openstack-kvm-ubuntu-lucid-go_agent | 2652*   | 5a6ddcc0-29e6-4b65-a769-8dd8a99eb5df |  
  7. +------------------------------------------+---------+--------------------------------------+  
  8.   
  9. (*) Currently in-use  
  10.   
  11. Stemcells total: 1  


4.2 使用bosh上传CloudFoundry

[python]  view plain copy print ?
  1. # cd ~/bosh-workspace/releases/cf-release  
  2. # bosh upload release releases/cf-170.yml  
  3. # bosh releases+------+----------+-------------+  
  4. | Name | Versions | Commit Hash |  
  5. +------+----------+-------------+  
  6. | cf   | 170*     | 0c0c72c3+   |  
  7. +------+----------+-------------+  
  8. (*) Currently deployed  
  9. (+) Uncommitted changes  
  10.   
  11. Releases total: 1  


4.3 创建部署描述文件

[ruby]  view plain copy print ?
  1. <%  
  2. director_uuid = "REPLACE-DIRECTOR_UUID"  
  3. static_ip = "REPLACE-IP-ADDRESS"  
  4. root_domain = "#{static_ip}.xip.io"  
  5. deployment_name = 'cf'  
  6. cf_release = '170'  
  7. protocol = 'http'  
  8. common_password = 'mysecretpassword'  
  9. %>  
  10. ---  
  11. name: <%= deployment_name %>  
  12. director_uuid: <%= director_uuid %>  
  13.   
  14. releases:  
  15.  - name: cf  
  16.    version: <%= cf_release %>  
  17.   
  18. compilation:  
  19.   workers: 3  
  20.   network: default  
  21.   reuse_compilation_vms: true  
  22.   cloud_properties:  
  23.     instance_type: m1.large  
  24.   
  25. update:  
  26.   canaries: 0  
  27.   canary_watch_time: 30000-600000  
  28.   update_watch_time: 30000-600000  
  29.   max_in_flight: 32  
  30.   serial: false  
  31.   
  32. networks:  
  33.   - name: default  
  34.     type: dynamic  
  35.     cloud_properties:  
  36.       security_groups:  
  37.         - default  
  38.         - bosh  
  39.         - cf-private  
  40.   
  41.   - name: external  
  42.     type: dynamic  
  43.     cloud_properties:  
  44.       security_groups:  
  45.         - default  
  46.         - bosh  
  47.         - cf-public  
  48.   
  49.   - name: floating  
  50.     type: vip  
  51.     cloud_properties: {}  
  52.   
  53. resource_pools:  
  54.   - name: common  
  55.     network: default  
  56.     size: 14  
  57.     stemcell:  
  58.       name: bosh-openstack-kvm-ubuntu-lucid  
  59.       version: latest  
  60.     cloud_properties:  
  61.       instance_type: m1.small  
  62.   
  63.   - name: large  
  64.     network: default  
  65.     size: 3  
  66.     stemcell:  
  67.       name: bosh-openstack-kvm-ubuntu-lucid  
  68.       version: latest  
  69.     cloud_properties:  
  70.       instance_type: m1.medium  
  71.   
  72. jobs:  
  73.   - name: nats  
  74.     templates:  
  75.       - name: nats  
  76.       - name: nats_stream_forwarder  
  77.     instances: 1  
  78.     resource_pool: common  
  79.     networks:  
  80.       - name: default  
  81.         default: [dns, gateway]  
  82.   
  83.   - name: syslog_aggregator  
  84.     templates:  
  85.       - name: syslog_aggregator  
  86.     instances: 1  
  87.     resource_pool: common  
  88.     persistent_disk: 65536  
  89.     networks:  
  90.       - name: default  
  91.         default: [dns, gateway]  
  92.   
  93.   - name: nfs_server  
  94.     templates:  
  95.       - name: debian_nfs_server  
  96.     instances: 1  
  97.     resource_pool: common  
  98.     persistent_disk: 65535  
  99.     networks:  
  100.       - name: default  
  101.         default: [dns, gateway]  
  102.   
  103.   - name: postgres  
  104.     templates:  
  105.       - name: postgres  
  106.     instances: 1  
  107.     resource_pool: common  
  108.     persistent_disk: 65536  
  109.     networks:  
  110.       - name: default  
  111.         default: [dns, gateway]  
  112.     properties:  
  113.       db: databases  
  114.   
  115.   - name: uaa  
  116.     templates:  
  117.       - name: uaa  
  118.     instances: 1  
  119.     resource_pool: common  
  120.     networks:  
  121.       - name: default  
  122.         default: [dns, gateway]  
  123.   
  124.   - name: loggregator  
  125.     templates:  
  126.       - name: loggregator  
  127.     instances: 1  
  128.     resource_pool: common  
  129.     networks:  
  130.       - name: default  
  131.         default: [dns, gateway]  
  132.   
  133.   - name: trafficcontroller  
  134.     templates:  
  135.       - name: loggregator_trafficcontroller  
  136.     instances: 1  
  137.     resource_pool: common  
  138.     networks:  
  139.       - name: default  
  140.         default: [dns, gateway]  
  141.   
  142.   - name: cloud_controller  
  143.     templates:  
  144.       - name: cloud_controller_ng  
  145.     instances: 1  
  146.     resource_pool: common  
  147.     networks:  
  148.       - name: default  
  149.         default: [dns, gateway]  
  150.     properties:  
  151.       ccdb: ccdb  
  152.   
  153.   - name: cloud_controller_worker  
  154.     templates:  
  155.       - name: cloud_controller_worker  
  156.     instances: 1  
  157.     resource_pool: common  
  158.     networks:  
  159.       - name: default  
  160.         default: [dns, gateway]  
  161.     properties:  
  162.       ccdb: ccdb  
  163.   
  164.   - name: clock_global  
  165.     templates:  
  166.       - name: cloud_controller_clock  
  167.     instances: 1  
  168.     resource_pool: common  
  169.     networks:  
  170.       - name: default  
  171.         default: [dns, gateway]  
  172.     properties:  
  173.       ccdb: ccdb  
  174.   
  175.   - name: etcd  
  176.     templates:  
  177.       - name: etcd  
  178.     instances: 1  
  179.     resource_pool: common  
  180.     persistent_disk: 10024  
  181.     networks:  
  182.       - name: default  
  183.         default: [dns, gateway]  
  184.   
  185.   - name: health_manager  
  186.     templates:  
  187.       - name: hm9000  
  188.     instances: 1  
  189.     resource_pool: common  
  190.     networks:  
  191.       - name: default  
  192.         default: [dns, gateway]  
  193.   
  194.   - name: dea  
  195.     templates:  
  196.       - name: dea_logging_agent  
  197.       - name: dea_next  
  198.     instances: 3  
  199.     resource_pool: large  
  200.     networks:  
  201.       - name: default  
  202.         default: [dns, gateway]  
  203.   
  204.   - name: router  
  205.     templates:  
  206.       - name: gorouter  
  207.     instances: 1  
  208.     resource_pool: common  
  209.     networks:  
  210.       - name: default  
  211.         default: [dns, gateway]  
  212.   
  213.   - name: haproxy  
  214.     templates:  
  215.       - name: haproxy  
  216.     instances: 1  
  217.     resource_pool: common  
  218.     networks:  
  219.       - name: external  
  220.         default: [dns, gateway]  
  221.       - name: floating  
  222.         static_ips:  
  223.           - <%= static_ip %>  
  224.     properties:  
  225.       networks:  
  226.         apps: external  
  227.   
  228. properties:  
  229.   domain: <%= root_domain %>  
  230.   system_domain: <%= root_domain %>  
  231.   system_domain_organization: 'admin'  
  232.   app_domains:  
  233.     - <%= root_domain %>  
  234.   
  235.   haproxy: {}  
  236.   
  237.   networks:  
  238.     apps: default  
  239.   
  240.   nats:  
  241.     user: nats  
  242.     password: <%= common_password %>  
  243.     address: 0.nats.default.<%= deployment_name %>.microbosh  
  244.     port: 4222  
  245.     machines:  
  246.       - 0.nats.default.<%= deployment_name %>.microbosh  
  247.   
  248.   syslog_aggregator:  
  249.     address: 0.syslog-aggregator.default.<%= deployment_name %>.microbosh  
  250.     port: 54321  
  251.   
  252.   nfs_server:  
  253.     address: 0.nfs-server.default.<%= deployment_name %>.microbosh  
  254.     network: "*.<%= deployment_name %>.microbosh"  
  255.     idmapd_domain: "localdomain"  
  256.   
  257.   debian_nfs_server:  
  258.     no_root_squash: true  
  259.   
  260.   loggregator_endpoint:  
  261.     shared_secret: <%= common_password %>  
  262.     host: 0.trafficcontroller.default.<%= deployment_name %>.microbosh  
  263.   
  264.   loggregator:  
  265.     servers:  
  266.       zone:  
  267.         -  0.loggregator.default.<%= deployment_name %>.microbosh  
  268.   
  269.   traffic_controller:  
  270.     zone: 'zone'  
  271.   
  272.   logger_endpoint:  
  273.     use_ssl: <%= protocol == 'https' %>  
  274.     port: 80  
  275.   
  276.   ssl:  
  277.     skip_cert_verify: true  
  278.   
  279.   router:  
  280.     endpoint_timeout: 60  
  281.     status:  
  282.       port: 8080  
  283.       user: gorouter  
  284.       password: <%= common_password %>  
  285.     servers:  
  286.       z1:  
  287.         - 0.router.default.<%= deployment_name %>.microbosh  
  288.       z2: []  
  289.   
  290.   etcd:  
  291.     machines:  
  292.       - 0.etcd.default.<%= deployment_name %>.microbosh  
  293.   
  294.   dea: &dea  
  295.     disk_mb: 102400  
  296.     disk_overcommit_factor: 2  
  297.     memory_mb: 15000  
  298.     memory_overcommit_factor: 3  
  299.     directory_server_protocol: <%= protocol %>  
  300.     mtu: 1460  
  301.     deny_networks:  
  302.       - 169.254.0.0/16 # Google Metadata endpoint  
  303.   
  304.   dea_next: *dea  
  305.   
  306.   disk_quota_enabled: false  
  307.   
  308.   dea_logging_agent:  
  309.     status:  
  310.       user: admin  
  311.       password: <%= common_password %>  
  312.   
  313.   databases: &databases  
  314.     db_scheme: postgres  
  315.     address: 0.postgres.default.<%= deployment_name %>.microbosh  
  316.     port: 5524  
  317.     roles:  
  318.       - tag: admin  
  319.         name: ccadmin  
  320.         password: <%= common_password %>  
  321.       - tag: admin  
  322.         name: uaaadmin  
  323.         password: <%= common_password %>  
  324.     databases:  
  325.       - tag: cc  
  326.         name: ccdb  
  327.         citext: true  
  328.       - tag: uaa  
  329.         name: uaadb  
  330.         citext: true  
  331.   
  332.   ccdb: &ccdb  
  333.     db_scheme: postgres  
  334.     address: 0.postgres.default.<%= deployment_name %>.microbosh  
  335.     port: 5524  
  336.     roles:  
  337.       - tag: admin  
  338.         name: ccadmin  
  339.         password: <%= common_password %>  
  340.     databases:  
  341.       - tag: cc  
  342.         name: ccdb  
  343.         citext: true  
  344.   
  345.   ccdb_ng: *ccdb  
  346.   
  347.   uaadb:  
  348.     db_scheme: postgresql  
  349.     address: 0.postgres.default.<%= deployment_name %>.microbosh  
  350.     port: 5524  
  351.     roles:  
  352.       - tag: admin  
  353.         name: uaaadmin  
  354.         password: <%= common_password %>  
  355.     databases:  
  356.       - tag: uaa  
  357.         name: uaadb  
  358.         citext: true  
  359.   
  360.   cc: &cc  
  361.     srv_api_uri: <%= protocol %>://api.<%= root_domain %>  
  362.     jobs:  
  363.       local:  
  364.         number_of_workers: 2  
  365.       generic:  
  366.         number_of_workers: 2  
  367.       global:  
  368.         timeout_in_seconds: 14400  
  369.       app_bits_packer:  
  370.         timeout_in_seconds: null  
  371.       app_events_cleanup:  
  372.         timeout_in_seconds: null  
  373.       app_usage_events_cleanup:  
  374.         timeout_in_seconds: null  
  375.       blobstore_delete:  
  376.         timeout_in_seconds: null  
  377.       blobstore_upload:  
  378.         timeout_in_seconds: null  
  379.       droplet_deletion:  
  380.         timeout_in_seconds: null  
  381.       droplet_upload:  
  382.         timeout_in_seconds: null  
  383.       model_deletion:  
  384.         timeout_in_seconds: null  
  385.     bulk_api_password: <%= common_password %>  
  386.     staging_upload_user: upload  
  387.     staging_upload_password: <%= common_password %>  
  388.     quota_definitions:  
  389.       default:  
  390.         memory_limit: 10240  
  391.         total_services: 100  
  392.         non_basic_services_allowed: true  
  393.         total_routes: 1000  
  394.         trial_db_allowed: true  
  395.     resource_pool:  
  396.       resource_directory_key: cloudfoundry-resources  
  397.       fog_connection:  
  398.         provider: Local  
  399.         local_root: /var/vcap/nfs/shared  
  400.     packages:  
  401.       app_package_directory_key: cloudfoundry-packages  
  402.       fog_connection:  
  403.         provider: Local  
  404.         local_root: /var/vcap/nfs/shared  
  405.     droplets:  
  406.       droplet_directory_key: cloudfoundry-droplets  
  407.       fog_connection:  
  408.         provider: Local  
  409.         local_root: /var/vcap/nfs/shared  
  410.     buildpacks:  
  411.       buildpack_directory_key: cloudfoundry-buildpacks  
  412.       fog_connection:  
  413.         provider: Local  
  414.         local_root: /var/vcap/nfs/shared  
  415.     install_buildpacks:  
  416.       - name: java_buildpack  
  417.         package: buildpack_java  
  418.       - name: ruby_buildpack  
  419.         package: buildpack_ruby  
  420.       - name: nodejs_buildpack  
  421.         package: buildpack_nodejs  
  422.       - name: go_buildpack  
  423.         package: buildpack_go  
  424.     db_encryption_key: <%= common_password %>  
  425.     hm9000_noop: false  
  426.     diego: false  
  427.     newrelic:  
  428.       license_key: null  
  429.       environment_name: <%= deployment_name %>  
  430.   
  431.   ccng: *cc  
  432.   
  433.   login:  
  434.     enabled: false  
  435.   
  436.   uaa:  
  437.     url: <%= protocol %>://uaa.<%= root_domain %>  
  438.     no_ssl: <%= protocol == 'http' %>  
  439.     cc:  
  440.       client_secret: <%= common_password %>  
  441.     admin:  
  442.       client_secret: <%= common_password %>  
  443.     batch:  
  444.       username: batch  
  445.       password: <%= common_password %>  
  446.     clients:  
  447.       cf:  
  448.         override: true  
  449.         authorized-grant-types: password,implicit,refresh_token  
  450.         authorities: uaa.none  
  451.         scope: cloud_controller.read,cloud_controller.write,openid,password.write,cloud_controller.admin,scim.read,scim.write  
  452.         access-token-validity: 7200  
  453.         refresh-token-validity: 1209600  
  454.       admin:  
  455.         secret: <%= common_password %>  
  456.         authorized-grant-types: client_credentials  
  457.         authorities: clients.read,clients.write,clients.secret,password.write,scim.read,uaa.admin  
  458.     scim:  
  459.       users:  
  460.       - admin|<%= common_password %>|scim.write,scim.read,openid,cloud_controller.admin,uaa.admin,password.write  
  461.       - services|<%= common_password %>|scim.write,scim.read,openid,cloud_controller.admin  
  462.     jwt:  
  463.       signing_key: |  
  464.         -----BEGIN RSA PRIVATE KEY-----  
  465.         REPLACE+ME+WITH+A+REAL+RSA+PRIVATE+KEY+++++++++++++asdfghj123122  
  466.         123456789+++++REPLACE+ME+WITH+A+REAL+RSA+PRIVATE+KEY++++++++++++  
  467.         asd34++123456789+++++REPLACE+ME+WITH+A+REAL+RSA+PRIVATE+KEY+++++  
  468.         KVy7psa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX  
  469.         sdfvsdfgvKVy7psALKSFOa8xzElSyzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJW  
  470.         VfYphNahvZ/7uMXKVy7psa8xzElSyzqx7oJyfJ1JZyOO:9T5SfTIq396agbHJWVf  
  471.         YphNasvZ/7uMXFzqx7oJyfJ1JZyOzToj9T5SfTIq396agbHJWVfYphNahvZ/7uMX  
  472.         sedfsyzqx7oJyfJ1JZyOzToj9TDASWDASD5SfTIq396agbHJWVfYphNahvZ/7uMX  
  473.         -----END RSA PRIVATE KEY-----  
  474.       verification_key: |  
  475.         -----BEGIN PUBLIC KEY-----  
  476.         REPLACE+ME+WITH+A+VALID+PUBLIC+KEY++++++++++MIGfMA0GCSqGSIb3DQEBAQUA  
  477.         AASAqHxf+ZH9BL1gk9Y6kCnbM5R60gfwjyW1/dQPjOzn9N394zd2FJoFHwdq9Qs0wBug  
  478.         BUGBUGspULZVNRxq7veq/fzwIDAQAB  
  479.         -----END PUBLIC KEY-----  

其中 REPLACE-DIRECTOR_UUID为Bosh Director的UUID,
[python]  view plain copy print ?
  1. # bosh status  
  2. Config  
  3.              /root/.bosh_config  
  4.   
  5. Director  
  6.   Name       microbosh-openstack  
  7.   URL        https://172.24.4.227:25555  
  8.   Version    1.2652.0 (00000000)  
  9.   User       admin  
  10.   UUID       04fd1b77-9522-459e-8f56-bfe83b7c5624  
  11.   CPI        openstack  
  12.   dns        enabled (domain_name: microbosh)  
  13.   compiled_package_cache disabled  
  14.   snapshots  disabled  
  15.   
  16. Deployment  
  17.   Manifest   /root/bosh/bosh-workspace/deployments/cf/demo.yml  
  18.   
  19. REPLACE-IP-ADDRESS是预先分配好的floating ip  
  20. # nova floating-ip-create public  


root_domain是部署CloudFoundry使用的域名,部署CloudFoundry必须有一个通配符域名(Wildcard DNS record),例如, 如果使用的域名为example.com,那么example.com和*.example.com都要解析为同一IP地址,即前面申请的floating ip。 如果没有这样的域名,可以试一下xip.io提供的动态域名,它可以把<ip>.xip.io和*.<ip>.xip.io都解析为<ip>, 例如,login.111.222.111.222.xip.io会被解析为111.222.111.222

在部署CloudFoundry过程中,需要设置很多密码,例如访问各个虚拟机,CloudFoundry默认的管理员账户等,在此例中,同一设置为common_password。在生产环境中,比较合理的做法是设置为不同的密码。

4.4 部署CloudFoundry

[python]  view plain copy print ?
  1. # bosh deployment cf/demo.yml  
  2. # bosh deploy  

4.5 部署完成后,可以使用如下命令查看各个虚拟机运行状况

[python]  view plain copy print ?
  1. # bosh vms  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值