CloudFoundry Service 使用

Mysql服务在V2版本号中github上有独立的releaseproject(cf-mysql-release),该release提供了一个Mysql-broker和一个Mysql-server和(broker-registrar,broker-deregistrar,acceptance-tests)

Broker是基于CF V2 ServiceBroker API开发,用于管理内部或外部Mysql数据库

一、MysqlBroker&Mysql部署

  1. 下载cf-mysql-release
    git clone https://github.com/cloudfoundry/cf-mysql-release
    cd cf-mysql-release
    ./update
  2. 编译并上传cf-mysql-release至blobstore
    bosh create release releases/cf-mysql-8.yml
    bosh upload release releases/cf-mysql-8.tgz
  3. 创建并编写yml部署文件
    ---
    name: CFMYSQL02
    director_uuid: fdd46e30-f2c5-41dc-9662-0976fdac5716
    
    releases:
    - name: cf-mysql
      version: 8
      
    compilation:
      workers: 2
      cloud_properties:
        ram: 2048
        disk: 6144
        cpu: 2
      network: default
      reuse_compilation_vms: true  
    
    update:
      canaries: 1
      #waiting for 60s to get update job status
      canary_watch_time: 30000-180000
      update_watch_time: 30000-180000
      max_in_flight: 4
      max_errors: 4
      
    networks:
    - name: default
      subnets:
      - range: 192.168.2.0/24
        # Reserved IPs are the IPs that BOSH should not use in the declared range.
        reserved:
        # IP addresses which you don't want allocated by BOSH
        - 192.168.2.20 - 192.168.2.55     
        - 192.168.2.140 - 192.168.2.254
        # IP addresses which you don't want allocated by BOSH
        - 192.168.2.2 - 192.168.2.10
        # Static IPs are the IPs that are statically assigned to jobs in this manifest. The BOSH director does not attempt
        # to dynamically assign these to new VMs.
        static:
        - 192.168.2.56 - 192.168.2.100
        gateway: 192.168.2.1
        # If you configured your BOSH/micro-BOSH to enable DNS, leave the DNS section empty. The BOSH director automatically uses the
        # BOSH/micro-BOSH powerDNS IP. If any jobs ever need to resolve DNS entries outside the BOSH powerDNS subdomain
        # (*.microbosh by default), configure the powerDNS recursor in your bosh release.
        dns:
          - 192.168.2.2 
        cloud_properties:
          name: "VM Network"
    meta:
      # override this in your stub to set the environment name,
      # which is used for the deployment name
      #
      # i.e. cf-tabasco
      environment: ~
    
      external_domain: acp.local
      apps_domain: acp.local
      nats:
        user: nats
        password: c1oudc0w
        port: 4222
        machines:
          - 192.168.2.43
        use_gnatsd: true
    
    resource_pools:
      - name: services-small
        network: default
        size: 5
        stemcell:
          name: bosh-vsphere-esxi-ubuntu
          # Stemcell version 2200 is the first to support errands for aws and vsphere
          version: 2366
        cloud_properties:
          ram: 2048
          disk: 20480
          cpu: 1
    
    jobs:
      - name: mysql
        release: cf-mysql
        template: mysql
        instances: 1
        resource_pool: services-small
        persistent_disk: 10000
        networks:
        - name: default
          static_ips: 192.168.2.56
        properties:
          admin_password: c1oudc0w
          max_connections: 1500
          max_user_connections: 40
          cluster_ips: 
            - 192.168.2.56
      - name: cf-mysql-broker
        release: cf-mysql
        template: cf-mysql-broker
        instances: 1
        resource_pool: services-small
        networks:
        - name: default
          static_ips: 192.168.2.57
        properties:
          auth_username: root
          auth_password: c1oudc0w
          cookie_secret: c1oudc0w
          external_host: p-mysql.acp.local
          ssl_enabled: false
          skip_ssl_validation: true
          cc_api_uri: https://api.acp.local
          nats:
            user: nats
            password: c1oudc0w
            port: 4222
            machines:
              - 192.168.2.43
            use_gnatsd: true
          networks:
            broker_network: default
          services:
          - name: p-mysql
            id: 44b26033-1f54-4087-b7bc-da9652c2a539
            description: A MySQL service for application development and testing
            tags:
              - mysql
            max_db_per_node: 250
            metadata:
              displayName: "MySQL for Pivotal CF"
              imageUrl: "data:image/png;base64,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"
              longDescription: "Provisioning a service instance creates a MySQL database. Binding applications to the instance creates unique credentials for each application to access the database."
              providerDisplayName: "Pivotal Software"
              documentationUrl: "http://docs.gopivotal.com/"
              supportUrl: "http://gopivotal.com/support/"
            dashboard_client:
              id: p-mysql
              secret: c1oudc0w
            plans:
              - name: 100mb-dev
                id: ab08f1bc-e6fc-4b56-a767-ee0fea6e3f20
                description: Shared MySQL Server
                max_storage_mb: 100
                metadata:
                  costs:
                  - amount:
                      usd: 0.0
                    unit: MONTH
                  bullets:
                    - Not for production use - server is not replicated
                    - Shared MySQL server
                    - 100 MB storage
                    - 40 concurrent connections
                  displayName: "100 MB Dev"
          mysql_node:
            host: 192.168.2.56   # 也能够设置成外部的mysql节点
            admin_password: c1oudc0w
      - name: broker-registrar
        template: broker-registrar
        release: cf-mysql
        instances: 1
        resource_pool: services-small
        lifecycle: errand
        networks:
        - name: default
        properties:
          cf:
            api_url: https://api.acp.local
            admin_username: admin
            admin_password: admin
          broker:
            name: p-mysql
            host: p-mysql.acp.local
            username: root
            password: c1oudc0w
      - name: broker-deregistrar
        template: broker-deregistrar
        release: cf-mysql
        instances: 1
        resource_pool: services-small
        lifecycle: errand
        networks:
        - name: default
        properties:
          cf:
            api_url: https://api.acp.local
            admin_username: admin
            admin_password: admin
          broker:
            name: p-mysql
            host: p-mysql.acp.local
            username: root
            password: c1oudc0w
      - name: acceptance-tests
        template: acceptance-tests
        release: cf-mysql
        instances: 1
        resource_pool: services-small
        lifecycle: errand
        networks:
        - name: default
        properties:
          cf:
            api_url: https://api.acp.local
            admin_username: admin
            admin_password: admin
            apps_domain: acp.local
            skip_ssl_validation: true
          broker:
            host: p-mysql.acp.local
          service:
            name: p-mysql
            plan_name: 100mb-dev
            max_storage_mb: 100
    properties: {}  # Pivotal CF cannot generate global properties
  4. 部署
    bosh deploy
    CloudFoundry Service 使用_第1张图片
  5. 注冊Mysql-Broker
    cf create-service-broker p-mysql root c1oudc0w http://p-mysql.acp.local

  6. 改动service_plan的訪问权限为public
    cf curl /v2/service_plans

    找到guid后边的值并复制
    改动相应权限为public
    cf curl PUT /v2/service_plans/060cb8c2-3633-493c-acf1-3b60e78aacd4 -b '{"public":'true'}'
  7. 创建service
    cf create-service
    CloudFoundry Service 使用_第2张图片
  8. 绑定应用至service
    cf bind-service java-hello-offline-mysql p-mysql-32d67

  9. 上传绑定好的应用
    cf push java-hello-offline-mysql -b java-buildpack-offline
    CloudFoundry Service 使用_第3张图片
  10. 检查service
    cf services

你可能感兴趣的:(CloudFoundry Service 使用)