热门IT资讯网

CloudFoundry in 1 Box之Lattice使用介绍

发表于:2024-11-28 作者:热门IT资讯网编辑
编辑最后更新 2024年11月28日,本文在介绍关于CloudFoundry in 1 Box的基础上,重点探讨了Lattice的使用具体步骤,步骤简单易上手操作,文章内容步步紧凑,希望大家根据这篇文章可以有所收获。1. Lattice简

本文在介绍关于CloudFoundry in 1 Box的基础上,重点探讨了Lattice的使用具体步骤,步骤简单易上手操作,文章内容步步紧凑,希望大家根据这篇文章可以有所收获。

1. Lattice简介


Lattice是一个很有意思的项目,设计目标是为Cloud Foundry的开发人员提供一个最小的App运行时环境,所以它只选择了Cloud Foundry中与App运行相关的组件,从而组成了一个最简化的开发测试Cloud Foundry App的环境。


如上图所示,Lattice仅包含如下组件


  • Router:负责访问App请求的routing

  • Diego:Cloud Foundry App的运行时环境

  • Blob store: App staging的存储空间

  • loggregator:log服务器,供app开发者查看app运行时日志


下面我们就来一步一步搭建一个Lattice环境


2. 环境准备


笔者采用的事Cent OS 7.2作为宿主机的操作系统,VirtualBox为虚拟机平台


2.1 安装以来的软件包


# rpm -Uvh http://mirror.pnl.gov/epel/7/x86_64/e/epel-release-7-5.noarch.rpm# yum install -y vim git screen kernel* libX11 qt SDL SDL-devel libxml2-devel \               libvpx libpng libXt libXmu libxslt libxslt-devel openssl \                openssl-devel libXcursor libXinerama qt qt-devel wget gcc unzip ntpdate net-tools


2.2 安装Ruby环境


笔者使用rbenv来安装和管理ruby

# git clone git://github.com/sstephenson/rbenv.git $HOME/.rbenv# git clone https://github.com/sstephenson/ruby-build.git $HOME/.rbenv/plugins/ruby-build # echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile # echo 'eval "$(rbenv init -)"' >> ~/.bash_profile # source ~/.bash_profile # rbenv install 2.3.0 # rbenv global 2.1.3# gem install bundle# gem install nokogiri - --use-system-libraries


2.3安装Vagrant


# wget https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.rpm# rpm -Uvh vagrant_1.8.1_x86_64.rpm


验证vagrant


# vagrant --versionVagrant 1.8.1


2.4 安装VirtualBox


# wget http://download.virtualbox.org/virtualbox/5.0.16/VirtualBox-5.0-5.0.16_105871_el7-1.x86_64.rpm# #安装virtualbox时需要linux kernel的源代码,设置KERN_DIR环境变量指示kernel源代码路径# export KERN_DIR=/usr/src/kernels/# rpm -Uvh VirtualBox-5.0-5.0.16_105871_el7-1.x86_64.rpm


验证virtualbox是否安装成功


# VBoxManage --version5.0.16r105871


3. 部署Lattice


3.1 从github上下载最新的lattice release


# wget https://github.com/cloudfoundry-incubator/lattice-release/releases/latest


3.2 解压Lattice


#  gunzip lattice-bundle-.zip


3.3 启动Lattice


# cd /vagrant# vagrant up --provider=virtualbox


3.4 查看PCF-dev component


# cd /vagrant# vagrant ssh ##登陆pcf-dev虚拟机# 登陆之后的pcf-dev虚拟机$ sudo -i# monit summaryroot@agent-id-pcfdev-0:~# monit summaryThe Monit daemon 5.2.4 uptime: 17mProcess 'auctioneer'                runningProcess 'receptor'                  runningProcess 'bbs'                       runningProcess 'converger'                 runningProcess 'file_server'               runningProcess 'route_emitter'             runningProcess 'ssh_proxy'                 runningProcess 'rep'                       runningProcess 'rootfses'                  runningProcess 'garden'                    runningFile 'haproxy_config'               accessibleProcess 'haproxy'                   runningProcess 'router_configurer'         runningProcess 'tcp_emitter'               runningProcess 'routing-api'               runningProcess 'consul_agent'              runningProcess 'doppler'                   runningProcess 'gorouter'                  runningProcess 'loggregator_trafficcontroller' runningProcess 'metron_agent'              runningProcess 'nats'                      runningProcess 'route_registrar'           runningProcess 'etcd'                      runningSystem 'system_lattice-colocated-0' running


启动后的Lattice虚拟机配置了两块网卡,一块用来连接CloudFoundry网络,使用10.0.2.15/24;一块用来和宿主机通信,使用IP 192.168.11.11. Lattice默认的域名为local.lattice.cf

如果设有http/https proxy,需要执行如下步骤


export no_proxy=192.168.11.11,local.lattice.cf


至此,Lattice环境准备完毕。


4. 部署app到Lattice


4.1 安装Lattice CLI


# curl -O http://receptor.local.lattice.cf/v1/sync/linux/ltc# chmod +x ltc


4.2 Lattice target


Lattice默认的域名为local.lattice.cf, *.local.lattice.cf会被解析到192.168.11.11


# ping xyz.local.lattice.cfPING xyz.local.pcfdev.io (192.168.11.11) 56(84) bytes of data.64 bytes from 192.168.11.11: icmp_seq=1 ttl=64 time=0.818 ms64 bytes from 192.168.11.11: icmp_seq=2 ttl=64 time=1.45 ms64 bytes from 192.168.11.11: icmp_seq=3 ttl=64 time=1.33 ms64 bytes from 192.168.11.11: icmp_seq=4 ttl=64 time=1.69 ms64 bytes from 192.168.11.11: icmp_seq=5 ttl=64 time=1.25 ms^C--- xyz.local.pcfdev.io ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 4006msrtt min/avg/max/mdev = 0.818/1.311/1.696/0.292 ms
# lattice target local.pcfdev.ioAPI location set.


4.3 部署App


因为lattice环境仅包含运行Cloud Foundry App的最小环境,不包含任何buildpack,所以使用Lattice运行Cloud Foundry App需要两个步骤


  1. build Cloud Foundry droplet,在这个步骤中,需要显示指定buildpack,以ruby app为例


# ltc build-droplet helloruby https://github.com/cloudfoundry/ruby-buildpackUploading application bits...Uploaded.Submitted build of helloruby04/20 22:30:00.57 [BUILD|0] Successfully created container04/20 22:30:06.20 [DROPLET|0] Deleted http://local.lattice.cf:8444/blobs/helloruby-bits.zip.04/20 22:30:06.22 [DROPLET|0] Exit status 004/20 22:30:06.39 [BUILD|0] Exit status 004/20 22:30:27.50 [BUILD|0] -------> Buildpack version 1.6.1604/20 22:30:27.68 [BUILD|0]        Downloaded [https://pivotal-buildpacks.s3.amazonaws.com/ruby/binaries/shared/bundler-1.11.2.tgz]04/20 22:30:31.68 [BUILD|0] -----> Compiling Ruby/Rack04/20 22:30:32.38 [BUILD|0]        Downloaded [https://pivotal-buildpacks.s3.amazonaws.com/concourse-binaries/ruby/ruby-2.3.0-linux-x64.tgz]04/20 22:31:07.03 [BUILD|0] -----> Using Ruby version: ruby-2.3.004/20 22:31:07.48 [BUILD|0] ###### WARNING:04/20 22:31:07.48 [BUILD|0]        remove the `.bundle/` folder from your repo and add it to your `.gitignore` file.04/20 22:31:07.48 [BUILD|0]        You have the `.bundle/config` file checked into your repository04/20 22:31:07.48 [BUILD|0]        https://devcenter.heroku.com/articles/bundler-configuration04/20 22:31:07.48 [BUILD|0]        It contains local state like the location of the installed bundle04/20 22:31:07.48 [BUILD|0]        as well as configured git local gems, and other settings that should04/20 22:31:07.48 [BUILD|0] -----> Installing dependencies using bundler 1.11.204/20 22:31:07.48 [BUILD|0]        not be shared between multiple checkouts of a single repo. Please04/20 22:31:08.27 [BUILD|0]        Downloaded [https://pivotal-buildpacks.s3.amazonaws.com/ruby/binaries/cflinuxfs2/libyaml-0.1.6.tgz]04/20 22:31:11.03 [BUILD|0]        Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment04/20 22:31:14.33 [BUILD|0]        Fetching gem metadata from https://ruby.taobao.org/....04/20 22:31:14.63 [BUILD|0]        Fetching version metadata from https://ruby.taobao.org/..04/20 22:31:15.49 [BUILD|0]        Installing kgio 2.9.2 with native extensions04/20 22:31:15.63 [BUILD|0]        Installing rake 10.4.204/20 22:31:15.82 [BUILD|0]        Installing rack 1.6.004/20 22:31:17.23 [BUILD|0]        Installing raindrops 0.13.0 with native extensions04/20 22:31:17.40 [BUILD|0]        Installing rdiscount 2.1.7.1 with native extensions04/20 22:31:54.47 [BUILD|0]        Installing tilt 1.4.104/20 22:31:54.77 [BUILD|0]        Using bundler 1.11.204/20 22:31:55.19 [BUILD|0]        Installing rack-protection 1.5.304/20 22:31:56.16 [BUILD|0]        Installing sinatra 1.4.504/20 22:32:38.00 [BUILD|0]        Bundle complete! 7 Gemfile dependencies, 10 gems now installed.04/20 22:32:38.00 [BUILD|0]        Gems in the groups development and test were not installed.04/20 22:32:38.00 [BUILD|0]        Bundled gems are installed into ./vendor/bundle.04/20 22:32:38.04 [BUILD|0]        Bundle completed (87.00s)04/20 22:32:38.06 [BUILD|0]        Cleaning up the bundler cache.04/20 22:32:40.00 [BUILD|0] -----> Writing config/database.yml to read from DATABASE_URL04/20 22:32:41.31 [BUILD|0] ###### WARNING:04/20 22:32:41.31 [BUILD|0]        You have the `.bundle/config` file checked into your repository04/20 22:32:41.31 [BUILD|0]        It contains local state like the location of the installed bundle04/20 22:32:41.31 [BUILD|0]        as well as configured git local gems, and other settings that should04/20 22:32:41.31 [BUILD|0]        not be shared between multiple checkouts of a single repo. Please04/20 22:32:41.31 [BUILD|0]        remove the `.bundle/` folder from your repo and add it to your `.gitignore` file.04/20 22:32:41.31 [BUILD|0]        https://devcenter.heroku.com/articles/bundler-configuration04/20 22:32:58.50 [BUILD|0] Exit status 004/20 22:32:59.45 [DROPLET|0] Uploaded /tmp/droplet to http://local.lattice.cf:8444/blobs/helloruby-droplet.tgz.04/20 22:32:59.49 [DROPLET|0] Exit status 0# tc list-dropletsDroplet        Created At        Sizehelloruby    04/20 14:32:59.00    20.3M


2. 启动droplet


# ltc launch-droplet helloruby hellorubyNo port specified. Defaulting to 8080.Creating App: helloruby.04/20 22:37:00.15 [APP|0] Creating container.04/20 22:37:01.77 [APP|0] Successfully created container..............04/20 22:37:16.10 [HEALTH|0] healthcheck failed04/20 22:37:16.14 [HEALTH|0] Exit status 104/20 22:37:16.56 [SSH|0] {"timestamp":"1461163036.562246799","source":"sshd","message":"sshd.started","log_level":1,"data":{}}04/20 22:37:16.81 [HEALTH|0] healthcheck failed04/20 22:37:16.83 [HEALTH|0] Exit status 1.04/20 22:37:17.54 [HEALTH|0] healthcheck failed04/20 22:37:17.57 [HEALTH|0] Exit status 1.04/20 22:37:18.04 [APP|0] I, [2016-04-20T14:37:18.041860 #10]  INFO -- : Refreshing Gem list04/20 22:37:18.26 [APP|0] I, [2016-04-20T14:37:18.253960 #10]  INFO -- : listening on addr=0.0.0.0:8080 fd=904/20 22:37:18.27 [APP|0] I, [2016-04-20T14:37:18.266758 #10]  INFO -- : master process ready04/20 22:37:18.27 [HEALTH|0] healthcheck passed04/20 22:37:18.31 [APP|0] I, [2016-04-20T14:37:18.280764 #43]  INFO -- : worker=0 ready04/20 22:37:18.32 [APP|0] I, [2016-04-20T14:37:18.284959 #49]  INFO -- : worker=2 ready04/20 22:37:18.33 [APP|0] I, [2016-04-20T14:37:18.305195 #46]  INFO -- : worker=1 ready04/20 22:37:18.35 [HEALTH|0] Exit status 0helloruby is now running.App is reachable at:http://helloruby.local.lattice.cfhttp://helloruby-8080.local.lattice.cf


上文描述的就是Lattice使用和部署的详细内容,具体使用情况还需要大家自己动手实验使用过才能领会。如果想了解更多相关内容,欢迎关注行业资讯频道!

0