免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4012 | 回复: 4
打印 上一主题 下一主题

[IaaS与数据中心] 在 UOS 上体验 CoreOS [复制链接]

论坛徽章:
6
CU大牛徽章
日期:2013-03-14 14:14:08CU大牛徽章
日期:2013-03-14 14:14:26CU大牛徽章
日期:2013-03-14 14:14:29处女座
日期:2014-04-21 11:51:59辰龙
日期:2014-05-12 09:15:10NBA常规赛纪念章
日期:2015-05-04 22:32:03
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-07 15:12 |只看该作者 |倒序浏览
              近期 UnitedStack 公有云在国内率先提供了对 CoreOS 的支持,广大玩家可以很轻松地在 UOS 上体验、研究 CoreOS 了。以下是一点经验分享,抛砖引玉,希望能给大家带来些许帮助。
      CoreOS 和 docker 简介  
  关注云计算的同学一定注意到了 docker ,而关注 docker 的朋友,也一定听说过 CoreOS 。它们都是近期很火热的焦点,网上铺天盖地有各式各样的介绍,不再引述,这里仅说一点个人看法。
  可以说,CoreOS 是Linux发行版中的一朵奇葩,而 docker 是虚拟化领域的一朵奇葩,二者合在一起,于是我们得到了。。。两朵奇葩。。。哈哈,玩笑。严肃讲,CoreOS 不是以传统模式做的 OS:
  1,传统的 Linux 发行版(除了Gentoo这样的奇葩),都有包管理体系、软件包repo,系统安装的过程就是从repo(可以是http/ftp、nfs、iso等)中获取软件包解包安装。而 CoreOS 压根就没有包管理机制,官方直接发布二进制的系统映像,安装方式就是dd。不过映像格式倒是很丰富,ISO、PXE、各大虚拟机、多种云平台一应俱全。
                         
  2,分区模式也比较独特,号称有两个root分区,一个用于常规启动,另一个作为更新分区,系统更新将会被安装到更新分区。两个分区可以切换,系统更新后,更新分区会自动变为常规启动分区,重启就会加载新系统。在支持的平台上,使用kexec方式重启,避免漫长的硬件自检过程,仅需数秒即可完成。从实际的分区列表看,具体实现细节要更复杂,精力所限笔者尚未深究,有了解的同学还请不吝赐教,谢谢!
                         
  3,CoreOS 设计之初,就没打算让用户以传统的裸进程的方式跑服务,而是全部通过docker来运行应用,CoreOS 就是一个极简的、只跑docker的 Linux 系统。另一方面,docker 也不是要做传统意义的虚拟机(尽管 docker 容器很像虚拟机),其设计理念是“一种新的应用打包/部署/运行/管理方式”。 CoreOS 与 docker 的配合,相当于把传统的混杂在一起的操作系统和应用做了解耦,分成两层,CoreOS 更偏底层,甚至有点像硬件固件,而 docker 负责偏上的应用层。
  CoreOS官网主页有一句话,“A new way to think about servers”,个人认为是恰如其分的。如果把CoreOS整体当做一个“内核”,跑在其中的docker容器就有点像一个个的“进程”;如果把 CoreOS 看做一个 hypervisor,那docker容器就像是宿主机中的虚机。而事实上,docker容器既不是进程,也不是虚机。CoreOS+docker,确实可以认为是一种新形态的OS 和服务运行方式。
  4,CoreOS 内置了两个服务:etcd 和 fleet。它们都是CoreOS的子项目。etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现,类似于 ZooKeeper 和 Doozer。 fleet是一个分布式的container发布工具,用于进行集群中任务的提交和管理。个人理解,etcd用来自动化构建CoreOS集群,而fleet则是运行于CoreOS集群之上的任务(docker)管理平台。也就是说,CoreOS设计之初,就将运行环境定位于集群&平台。
      在UOS上创建CoreOS 云主机  
  言归正传,以下是在OUS上创建 CoreOS 云主机的操作步骤:
  1. 打开UOS控制台,点击“创建云主机”,输入主机名,镜像选择 CoreOS,点击“下一步”。
        
      2. 虚机配置,内存建议2G或更多,因为某些docker任务比较耗内存;
    子网,选“基础网络”;
    登陆信息,目前只支持秘钥方式,如果没有秘钥,需要先在“密钥对”页面中创建一个。
  
  都选好后,点击“创建”即可。
        
      3. 绑定一个公网IP。    如果没有可用公网IP,需要在“公网IP”页面申请一个公网IP地址:  
        
  然后绑定到CoreOS主机
        
  4. SSH登陆
      主机:就是刚才绑定的公网IP
    方法:Public Key
    用户名:core
    用户秘钥:选择对应的秘钥
  
  如果是 Mac / Linux,则通过以下命令登陆:
  
ssh -i online4.pem core@42.62.73.66
    如果是Windows,这里以Xshell为例:
        
        
  点击“确定”保存,双击相应条目即可登录!
      体验CoreOS  
  试验一:跑个docker 试试
      1,从docker hub(docker官方提供的映像存储服务)拉取一个基础Linux系统映像:
      docker pull base      
        
      2,启动一个docker容器,运行交互式shell,分配一个伪终端,附带stdin和stdout:
      docker run -i -t base /bin/bash      
  此时就attach到了刚启动的docker 容器的终端。运行一些命令试试:
        
  我们可以从该容器detach:先按 Ctrl+p,再按Ctrl+q 。此时执行 docker ps 可以看到该容器仍在后台运行:
        
  用docker kill 命令可以停止容器。停掉的容器并没有完全删除,还可以重新起来,而且前面做的改动会被保留:
        
  试验二:运行WordPress
      WordPress需要 mysql 数据库,所以先 pull mysql:
      docker pull mysql      
      然后 pull wordpress 映像:
      docker pull wordpress      
      运行 mysql:
      docker run --name mysql_1 -e MYSQL_ROOT_PASSWORD=test_test  -d  mysql      
      运行 wordpress:
      docker run --name wordpress_1 --link mysql_1:mysql -p 80:80 -d wordpress      
      参数解释:
          --name mysql_1      给docker容器起个名字。   
          -e MYSQL_ROOT_PASSWORD=test_test      指定mysql的root密码。   
          -p 80:80      把主机(CoreOS)的80端口映射到docker容器内部的80端口,这样就可以通过“主机ip:80”访问到容器里80端口的服务。   
          --link mysql_1:mysql      这个参数比较神奇,看起来很简单,但要解释清楚还是有点复杂的。简言之,这个参数把两个docker容器打通了,使它们内部的应用可以很容易地互访。   
  
        
  OK,现在可以访问WordPress了,直接在浏览器地址栏输入前面绑定的公网ip:
        
      稍微深入一点  
  额,wordpress就这么起来了,大家是不是感觉有点太。。。轻巧了。。。
  的确,经过docker封装的应用,用起来很方便,但也把大量细节隐藏了。作为一个惯于寻根究底、不肯放过任何细节的资深&优秀OPer,难以容忍真相被层层包裹在深幕之后。
  好吧,我们再往深处探寻一下。
      Q1:这两个服务这么不声不响就起来了,也没输出啥信息么?    A1:可以通过docker logs 命令查看每个容器的运行日志:  
        
              
      Q2:平时用惯了ssh,假如想登录到某个docker容器内部,该怎么做呢?    A2:用nsenter 可以“渗透”进入到运行中的docker容器。  
      首先,找到容器的第一个进程的PID
      PID=`docker  inspect  --format "{{ .State.Pid }}"  mysql_1 `      
      然后渗入(需要root权限)
      sudo nsenter --target $PID --mount --uts --ipc --net --pid      
              
  如上所示,我们进入了 mysql_1 这个容器。确实太纯净了,只有mysql,连 top、ps 都没有。。。那只好连上mysql看看:
              
  OK,再进入wordpress看看:
        
  其实,这种方式并不是ssh登录,不需要容器内部运行sshd服务。而是用主机的bash进入容器的name space,“附着”到容器上。所以才叫做 ns(name space) enter。
  之所以能这么做,是因为每个docker容器中的进程,实际上都是主机(CoreOS)的本地进程,可以通过ps 看到:
              
  有点神奇哈!到这里大家应该能感觉到,上面反复提到的name space,就是神奇的docker魔法的真正谜底。当然还需要aufs、cgroups等技术的支撑,以及开发者们的不懈努力,才最终呈现给大家完整的docker平台。
  玩的开心!
      参考资料:
          CoreOS官网:       https://coreos.com/   
          Docker中文社区:       https://www.dockboard.org/   
          Docker 官网:       https://www.docker.com/   
          https://registry.hub.docker.com/_/mysql/   
          https://registry.hub.docker.com/_/wordpress/   
          http://www.oschina.net/translate/enter-docker-container?cmp   
    http://www.blogjava.net/yongboy/archive/2013/08/26/403325.html  

        

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2015-01-08 12:26 |只看该作者
UnitedStack 云服务不错啊。

论坛徽章:
6
CU大牛徽章
日期:2013-03-14 14:14:08CU大牛徽章
日期:2013-03-14 14:14:26CU大牛徽章
日期:2013-03-14 14:14:29处女座
日期:2014-04-21 11:51:59辰龙
日期:2014-05-12 09:15:10NBA常规赛纪念章
日期:2015-05-04 22:32:03
3 [报告]
发表于 2015-01-09 10:46 |只看该作者
rdcwayx 发表于 2015-01-08 12:26
UnitedStack 云服务不错啊。


是国内的一个创业团队做的,还不错,虽然有一些挫折。最早的国内折腾openstack的一群人做的

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
4 [报告]
发表于 2015-01-09 18:04 |只看该作者
回复 3# wang290

你有认识里面的人吗?能给走个后门送些credit给CU的用户吗?

我大概用了一下,很多地方学AWS的,上手还是比较快的。现有的服务比较基础。 送的$2 的启动资金只够一天多的时间,如果要同时试多个,或者不同的服务,用不来几个小时。但是注册要方便很多, 比阿里云要方便。
   

论坛徽章:
6
CU大牛徽章
日期:2013-03-14 14:14:08CU大牛徽章
日期:2013-03-14 14:14:26CU大牛徽章
日期:2013-03-14 14:14:29处女座
日期:2014-04-21 11:51:59辰龙
日期:2014-05-12 09:15:10NBA常规赛纪念章
日期:2015-05-04 22:32:03
5 [报告]
发表于 2015-01-09 18:49 |只看该作者
rdcwayx 发表于 2015-01-09 18:04
回复 3# wang290

你有认识里面的人吗?能给走个后门送些credit给CU的用户吗?


你这个可以让CU出面和他们去谈,让CU去合作,以前程辉还在CU的沙龙上宣传过openstack呢,不过那个时候程辉还在sina
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP