CoreOS部署及应用

来源:互联网 发布:大数据知识框架 编辑:程序博客网 时间:2024/06/05 07:42

简介

  CoreOS是基于Chrome OS修改的极简化Linux发行版本(CoreOS只需要114MB的内存就能运行,启动时占用的内存比普通的Linux服务器要少40%。),顶层提供分布式数据存储和系统管理工具,能够扩展并管理庞大的云计算服务器设施,用其官网概括理念为“A new way to think about servers”、“CoreOS is Linux for massive server deployments”,表示一个新思维方式思考未来服务器大规模部署的Linux服务器操作系统。CoreOS中的所有应用都完全在Docker容器中运行,操作系统本身会定期自动更新。
CoreOS具有以下几点特性:
1. Linux内核,Linux运行所需存在两个ROOT分区,一个被用作启动分区,一个被用作更新分区更新分区在更新完成后,自动重新启动系统,当前机器不需要从负载集群中移除,为了保证其它应用程序不被打断,会通过Linux cgroup限制更新过程中的磁盘、网络等IO使用。
2. systemd,作为默认系统和服务管理器
3. root分区被设计成只读,用以保证数据的一致性和更新可用
4. CoreOS很明智使用Docker作为容器管理器用以构建、发布应用,从这个层面来看,一个应用其实就是一个容器。
5. etcd组件负责服务发现和配置共享,采用Raft分布式一致性协议算法,承担起,组件之间服务通信使用。很自然的,容器(Container)之间应用、服务的伸缩,就显得很简单了。其基因层面支持集群特性,当然,你也可以解读为云环境的支持。

部署

测试主机环境为CentOS release 6.5 (Final),内核为2.6.32-431.el6.x86_64。我们
1.安装依赖软件
1. Virtualbox-5.0,为vagrant提供虚拟化支持
2. vagrant_1.8.1,ruby开发,使用Virtualbox等提供虚拟化支持,可跨平台部署
3. coreos-vagrant,为vagrant提供的coreos镜像

2.安装Virtualbox-5.0

cd /etc/yum.repos.dwget http://download.virtualbox.org/virtualbox/rpm/el/virtualbox.reporpm -Uvh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpmyum install gcc make patch  dkms qt libgomp kernel-headers kernel-devel fontforge binutils glibc-headers glibc-devel -ycd cd /usr/src/kernels/#若不添加软连接,安装会报错ln -s 3.10.0-327.10.1.el7.x86_64 3.10.0-327.el7.x86_64export KERN_DIR=/usr/src/kernels/3.10.0-327.el7.x86_64yum install VirtualBox-5.0

3.安装vagrant

wget https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.rpmrpm -ivh vagrant_1.8.1_x86_64.rpm 

4.快速搭建CoreOS集群

git clone https://github.com/coreos/coreos-vagrant/cd coreos-vagrantcp user-data.sample user-data#获取新tokencurl https://discovery.etcd.io/new#把获取的token放到user-data文件中vim user-data#cloud-config---coreos:  etcd2:    discovery: https://discovery.etcd.io/2fd5c65dea14ae8b9417bde39c794af4$update_channel='stable'#修改集群启动虚拟机个数,默认为1cp config.rb.sample config.rbvim config.rb$num_instances=1

5.启动集群

[root@test]# vagrant upBringing machine 'core-01' up with 'virtualbox' provider...==> core-01: Box 'coreos-stable' could not be found. Attempting to find and install...    core-01: Box Provider: virtualbox    core-01: Box Version: >= 0==> core-01: Loading metadata for box 'https://storage.googleapis.com/stable.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json'    core-01: URL: https://storage.googleapis.com/stable.release.core-os.net/amd64-usr/current/coreos_production_vagrant.json==> core-01: Adding box 'coreos-stable' (v835.13.0) for provider: virtualbox    core-01: Downloading: http://stable.release.core-os.net/amd64-usr/835.13.0/coreos_production_vagrant.box    core-01: Calculating and comparing box checksum...==> core-01: Successfully added box 'coreos-stable' (v835.13.0) for 'virtualbox'!==> core-01: Importing base box 'coreos-stable'...==> core-01: Matching MAC address for NAT networking...==> core-01: Checking if box 'coreos-stable' is up to date...==> core-01: Setting the name of the VM: coreos-vagrant_core-01_1456463236858_46275==> core-01: Clearing any previously set network interfaces...==> core-01: Preparing network interfaces based on configuration...    core-01: Adapter 1: nat    core-01: Adapter 2: hostonly==> core-01: Forwarding ports...    core-01: 22 (guest) => 2222 (host) (adapter 1)==> core-01: Running 'pre-boot' VM customizations...==> core-01: Booting VM...==> core-01: Waiting for machine to boot. This may take a few minutes...    core-01: SSH address: 127.0.0.1:2222    core-01: SSH username: core    core-01: SSH auth method: private key==> core-01: Machine booted and ready!==> core-01: Setting hostname...==> core-01: Configuring and enabling network interfaces...==> core-01: Running provisioner: file...==> core-01: Running provisioner: shell...    core-01: Running: inline script

6.进入coreos

[root@test]# vagrant sshCoreOS stable (835.13.0)

注意:我曾在虚拟机为centos系统上搭建,启动vagrant后登陆vagrant ssh报错connecttimeout。后来使用物理机为centos系统且cpu支持虚拟化,vagrant ssh登陆成功。

应用

模拟在CoreOS中通过docker一个容器,容器的环境为centos,在centos上运行应用。
1.docker查找centos镜像

core@core-01 ~ $ docker search centosNAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDcentos                          The official build of CentOS.                   1960      [OK]       jdeathe/centos-ssh              CentOS-6 6.7 x86_64 / SCL/EPEL/IUS Repos /...   15                   [OK]jdeathe/centos-ssh-apache-php   CentOS-6 6.7 x86_64 / Apache / PHP / PHP M...   13                   [OK]million12/centos-supervisor     Base CentOS-7 with supervisord launcher, h...   9                    [OK]blalor/centos                   Bare-bones base CentOS 6.5 image                8                    [OK]nimmis/java-centos              This is docker images of CentOS 7 with dif...   7                    [OK]torusware/speedus-centos        Always updated official CentOS docker imag...   7                    [OK]centos/mariadb55-centos7                                                        3                    [OK]nathonfowlie/centos-jre         Latest CentOS image with the JRE pre-insta...   3                    [OK]nickistre/centos-lamp           LAMP on centos setup                            3                    [OK]consol/sakuli-centos-xfce       Sakuli end-2-end testing and monitoring co...   2                    [OK]darksheer/centos                Base Centos Image -- Updated hourly             1                    [OK]softvisio/centos                Centos                                          1                    [OK]lighthopper/orientdb-centos     A Dockerfile for creating an OrientDB imag...   1                    [OK]yajo/centos-epel                CentOS with EPEL and fully updated              1                    [OK]layerworx/centos                CentOS container with etcd, etcdctl, confd...   1                    [OK]feduxorg/centos-postgresql      Centos Image with postgres                      1                    [OK]timhughes/centos                Centos with systemd installed and running       0                    [OK]lighthopper/openjdk-centos      A Dockerfile for creating an OpenJDK image...   0                    [OK]blacklabelops/centos            CentOS Base Image! Built and Updates Daily!     0                    [OK]grayzone/centos                 auto build for centos.                          0                    [OK]jsmigel/centos-epel             Docker base image of CentOS w/ EPEL installed   0                    [OK]ustclug/centos                   USTC centos                                    0                    [OK]januswel/centos                 yum update-ed CentOS image                      0                    [OK]ericuni/centos                  centos dev                                      0                    [OK]

2.docker拉取centos镜像

core@core-01 ~ $ docker pull centos  Using default tag: latestlatest: Pulling from library/centosfa5be2806d4c: Pull complete b4af4261cb15: Pull complete 5d358abc5d9c: Pull complete 2933d50b9f77: Pull complete Digest: sha256:1272ae53bac7bf054dd209a0b4a8629bcc39526c2a767427c7639b630a224a9eStatus: Downloaded newer image for centos:latest

3.运行应用,如打印hello,CoreOS

core@core-01 ~ $ docker run -i -t centos echo "hello,CoreOS"hello,CoreOScore@core-01 ~ $ docker ps -aCONTAINER ID        IMAGE               COMMAND               CREATED             STATUS                     PORTS               NAMES93de17ef4729        centos              "echo hello,CoreOS"   5 seconds ago       Exited (0) 5 seconds ago                       boring_lumierec2e5c93b92a2        centos              "/bin/bash"           2 days ago          Exited (0) 2 days ago                          high_sammet

总结

  通过以上只是对CoreOS有了一个简单的了解,但是要管理CoreOS集群及docker容器,我们还需要详细了解Etcd、Fleet等其他工具。另外本文中讲到利用vagrant搭建虚拟化环境,也可以应用到日常工作中搭建测试环境及其他方面。

1 0
原创粉丝点击