Oct 122015
 

上个月去了一趟上海参加云计算大会,和同行和很多朋友交流了一下,关于公有云的话题就比较热门,问我最多的问题就是目前最看好的公有云是谁呢?其实大家的观点不太一致。有朋友是从宏观角度来看,有人从技术角度来评价,我就算整理一下各家的观点,大家分享。

大家普遍都认为:公有云,IaaS是提供资源服务的,这个需要有雄厚的财力支撑,不适合创业公司去做。IaaS应该是BAT来玩,他们不仅仅有资源,还有技术。对于运营商,他们有资源,缺乏技术,这个短板,华为会帮助他们补全。

那么中国的IaaS公有云,真的像理论推导那样,有钱有人就可以搞定了吗?只适合BAT和运营商来玩?如果你看不到BAT和运营商做IaaS的短板,估计你都吓死了,更别提创业。

我过去所在的公司,其实外界看起来都是比较适合做公有云的,无论资源,甚至技术,都不差,结果失败了,已经过去了5年,那么可以好好总结一下,希望旧日同事,不会太介意。

我的经历告诉我创业公司可能更加适合做公有云啊。

作为一个云从业人员,希望都读过 http://www.chenshake.com/eating-ones-own-dog-food/ 吃自己狗食这篇经典圣经

Continue reading »

Oct 052015
 

时间真的很快,1年就过去了。去年大概是这个时候,给车做了一个保养,国庆的时候,把车给弟弟开,当时还把去了一趟天津。

上次保养的时候,公里数大概是1.9w公里,经过1年,由于北京限制外地车,也就导致很少开,这次去保养,也就2.1万公里,就了2k多公里。

其实现在的车辆保养,如果是按照厂商的要求,其实并不贵。不过由于4S店有时候的忽悠,导致你的费用成倍增加,反正就一个原则,按照保养手册。

Continue reading »

Sep 222015
 

OpenStack很早的版本就支持多Region,所谓多Region,就是多个区域,每个区域一套OpenStack,共享Keystone和Horizon。

2

region

用户登录Dashboard以后,可以多个Region切换。

horizon

Horizon项目做的还是很不错的,当检测到Keystone的Endpoint有多个Region存在,UI上就可以支持。

作为用户,如果想测试多个Region,有什么好的办法吗?最简单的就是用devstack,

http://blog.zhaw.ch/icclab/how-to-install-a-multi-region-devstack-part-1/

还有一个办法,就是利用RDO来实现。

目前红帽的RDO,只支持一个Region,默认都是Regionone,不过Region的名字,你是可以修改,假设你搭建两套Openstack,一套是RegionOne,一套是RegionTwo。那么稍微调整一下,就支持多Region。

在RegionTwo的控制节点上,把keystone的数据库里,Endpoint,service,Region的表的数据导出来,再到RegionOne上,把这些数据导入,那么就基本搞定,这个时候,你登录Horizon,就可以看到多个Region。

剩下的你需要搞定RegionTwo的所有组件配置文件,让他们采用RegionOne的Keytone来做身份验证。

有两个问题,可能需要注意的

1:在RegionTwo上,publicurl,adminurl,internal,必须在RegionOne可以访问,因为Horizon。

2:乐视分享过,如果Region数量超过3,那么建议使用UUID,而不是PKI。

同事把过程记录一下,http://blog.csdn.net/linglong0820/article/details/48687547。

Sep 042015
 

纠结了很久,到底是使用Mac还是继续用thinkpad,不过为了方便,还是选择Thinkpad,日后自己再单独搞一台Mac来玩。

现在安装windows操作系统的机会已经比以前减少很多,发现我现在使用的软件数量没啥变化,软件版本,也基本不需要啥变化,这里就记录一下,希望这是我最后一次给自己折腾windows系统。

据说现在年轻人都已经不使用windows,都是在用手机或者Mac。看来真的是老。年纪大了,很多东西都记不住,写这个就仅仅是为了记录一下。没任何技术含量。已经把机器的全部软件都放到网盘里,确保日后重装,非常顺利。

Continue reading »

Aug 102015
 

这是学习 构建可靠的S3服务 的过程。原文提供视频,不过看视频实在太累。不过总算是把实验做完。

Docker的源都在国外,所以我是选择青云的香港节点来做测试,这样简单很多。这真的是我第一次完整完成Docker的实验。并且这个实验还是很值得记录一下。

青云使用基础网络,创建一个虚拟机,Ubuntu 14.04,绑定公网的IP。ssh到虚拟机里。

安装docker

感觉Ubuntu 14.04带的docker比较旧,所以我干脆就直接安装最新的版本的docker。

http://linuxkurser.nu/wp-content/uploads/2015/04/Upgrade-to-Docker-1.6-Ubuntu-14.pdf

curl -sSL https://test.docker.com/ubuntu | sh

查看docker的版本

# docker version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): f45ba9d
OS/Arch (client): linux/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): f45ba9d
OS/Arch (server): linux/amd64

1.7的版本,应该是最新的。

查看网络

# ifconfig
docker0   Link encap:Ethernet  HWaddr 56:84:7a:fe:97:99  
          inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 52:54:38:23:ee:12  
          inet addr:10.70.74.144  Bcast:10.70.74.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:38ff:fe23:ee12/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9828 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6498 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:13266351 (13.2 MB)  TX bytes:589469 (589.4 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)

 

下载docker的镜像,ip地址,需要替换成eth0的IP

docker run -d –net=host -e MON_IP=10.70.74.144 -e CEPH_NETWORK=10.70.74.0/24 ceph/demo

装完后,可以用命令查看

root@i-dczpde51:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
116ae154cae4        ceph/demo           "/entrypoint.sh"    37 seconds ago      Up 36 seconds                           gloomy_jang

 

进入docker ,就是上面的容器的ID

docker exec -i -t 116ae154cae4 /bin/bash

查看ceph

# ps aux | grep "ceph"
root         1  0.1  2.1 563436 22280 ?        Ssl  15:04   0:00 /usr/bin/python /usr/bin/ceph -w
root        34  0.2  2.3 217052 23988 ?        Sl   15:04   0:00 ceph-mon -i i-dczpde51 --public-addr 10.70.74.144:6789
root       203  0.9  2.9 681016 29788 ?        Ssl  15:04   0:00 ceph-osd -i 0 -k /var/lib/ceph/osd/ceph-0/keyring
root       414  0.0  1.1 236640 11428 ?        Ssl  15:04   0:00 ceph-mds --cluster=ceph -i 0
root       472  0.1  2.3 1707856 24360 ?       Ssl  15:04   0:00 radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway -k /var/lib/ceph/radosgw/i-dczpde51/keyring --rgw-socket-path= --rgw-frontends=civetweb port=80
root       473  0.4  3.1 710596 32200 ?        Sl   15:04   0:00 /usr/bin/python /usr/bin/ceph-rest-api -n client.admin
root       689  0.0  0.0   8868   720 ?        S+   15:06   0:00 grep --color=auto ceph

 

# ceph -s
    cluster b700af15-ed1d-44ea-bdc7-aac227c24a8d
     health HEALTH_OK
     monmap e1: 1 mons at {i-dczpde51=10.70.74.144:6789/0}
            election epoch 2, quorum 0 i-dczpde51
     mdsmap e5: 1/1/1 up {0=0=up:active}
     osdmap e16: 1 osds: 1 up, 1 in
      pgmap v19: 120 pgs, 8 pools, 2810 bytes data, 63 objects
            2415 MB used, 16572 MB / 20028 MB avail
                 120 active+clean

创建用户,下面命令,你最好是手工敲入,我折腾了半天,才发现进入docker,我的secureCRT的粘贴好像有点不一样。

radosgw-admin user create --uid="johndoe" --display-name="John Doe" --email=john@example.com

下面是输出

{
    "user_id": "johndoe",
    "display_name": "John Doe",
    "email": "john@example.com",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [],
    "keys": [
        {
            "user": "johndoe",
            "access_key": "XRCME1D7HXDC3JRBBU1Y",
            "secret_key": "2g7H3mscKD0V6Kj1fkkJuIVNOH8OmU8XuovWP8+s"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    },
    "temp_url_keys": []
}

重点是access key和secret key。

apt-get update -y
apt-get install -y python
apt-get install -y python-pip
pip install boto
pip install ipython
pip install s3cmd
apt-get install -y vim

参考这里 https://github.com/tobegit3hub/python_s3/blob/master/list_buckets.py

记得替换成自己的access key和secret_key

# ipython
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
Type "copyright", "credits" or "license" for more information.

IPython 3.2.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import boto

In [2]: import boto.s3.connection                                              

In [3]: access_key =  'XRCME1D7HXDC3JRBBU1Y'                                   

In [4]: secret_key = '2g7H3mscKD0V6Kj1fkkJuIVNOH8OmU8XuovWP8+s'                

In [5]: conn = boto.connect_s3(                                                
   ...:         aws_access_key_id = access_key,                                
   ...:         aws_secret_access_key = secret_key,                            
   ...:         host = 'localhost',                                            
   ...:         is_secure=False,                                               
   ...:         calling_format = boto.s3.connection.OrdinaryCallingFormat(),   
   ...:         )                                                              

In [6]: com                                                                    
compile  complex  

In [6]: conn.get_all_bucketes()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-6-bd413d097011> in <module>()
----> 1 conn.get_all_bucketes()

AttributeError: 'S3Connection' object has no attribute 'get_all_bucketes'

In [7]: conn.get_all_buckets()                                                 
Out[7]: []

In [8]: conn.create_bucket("chenshake")                                        
Out[8]: <Bucket: chenshake>

In [9]: conn.get_all_buckets()                                                 
Out[9]: [<Bucket: chenshake>]

In [10]:                        

成功创建了一个bucket chenshake