最新发布 页面 6 RSS Toggle Comment Threads | 键盘快捷键

  • bixuan 12:20 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: 童童   

    前几天带童童去收惊说在好几个地方吓到了,难怪晚上睡觉都会哭起来~低能量的生物无处不在啊~~

     
  • bixuan 03:26 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: ,   

    puppet 其他用法:

    1、在同1台server里多个用户执行puppet配置:

    如果已经签名了root的ssl证书,那么普通用户则不能用,因为puppet服务端只认一个`hostname -f`的证书,所以我采用了比较BT的做法:(假定普通用户:bixuan)

    hostname=`hostname -f|tr A-Z a-z`
    cp /var/lib/puppet/ssl/private_keys/${hostname}.pem /home/bixuan/.puppet/ssl/private_keys/${hostname}.pem
    cp /var/lib/puppet/ssl/public_keys/${hostname}.pem /home/bixuan/.puppet/ssl/public_keys/${hostname}.pem
    cp /var/lib/puppet/ssl/${hostname}.pem /home/bixuan/.puppet/ssl/${hostname}.pem
    

    注意:hostaname必须转换成小写。

     
  • bixuan 00:50 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: cron, ,   

    puppet crontab用法:

    cron { puppetd:
            command => "/usr/sbin/puppetd --server 192.168.4.185 --test",
            user => root,
            minute => '*/2'
    }
    

    以root用户每分钟执行:/usr/sbin/puppetd –server 192.168.4.185 –test
    上面的puppetd是作为标记的名字。

    相当于:

    # Puppet Name: puppetd
    */2 * * * * /usr/sbin/puppetd --server 192.168.4.185 --test
    

    参数

    除了用户和command两个参数以外,其他的参数都是可选项.

    command
    crontab要执行的命令, 环境变量按照系统本地规则进行管理,推荐使用绝对路径.

    ensure
    指定该资源是否启用,可设置成true或false

    environment
    在 crontab环境里面指定环境变量,例如 PATH=/bin:/usr/bin:/usr/sbin.

    hour
    运行crontab的小时,可设置成0-23

    minute
    运行crontab的分钟,可设置成0-59

    month
    设置crontab运行的月份,1-12

    monthday
    一个月份中的日子,1-31

    name
    该crontab的名字,这个名字用于管理员区分不同的crontab,以及puppet管理各种资源关系.

    provider
    指定provider,可用的provider有

    crontab 默认的crontab程序
    special 特殊的管理程序,只能在freebsd上面用
    user
    把该crontab加到那个用户的crontab列表,默认是运行puppet的用户

    weekday
    运行crontab的星期数,0-7

     
  • bixuan 00:41 on 2010 年 11 月 14 日 链接地址 | 回复
    Tags: exec, ,   

    puppet exec用法:

    1、当条件不满足时则执行某命令:

    exec { "/bin/echo root >> /usr/lib/cron/cron.allow":
        path => "/usr/bin:/usr/sbin:/bin",
        unless => "grep root /usr/lib/cron/cron.allow 2>/dev/null"
    }
    

    上面这段代码先用grep在cron.allow文件(Solaris系统中)中找root,如果没有找到,就写入root。
    要注意的是这个参数里的命令跟主命令遵循同样的规则,也就是说如果path没有被设置的话,需要使用绝对路径。

    2、当条件满足时才执行某命令:

    exec { "logrotate":
        path => "/usr/bin:/usr/sbin:/bin",
        onlyif => "test `du /var/log/messages | cut -f1` -gt 100000"
    }
    

    只有在test返回true的时候logrotate才会被运行。
    需要注意的是onlyif定义的命令跟主命令遵循同样的规则,也就是说如果path没有被设置的话,需要使用绝对路径。

    除此之外,onlyif还可以接受数组做为其值,例如:

    onlyif => ["test -f /tmp/file1", "test -f /tmp/file2"]
    上面的代码限定了只有在所有数组中的条件返回true时exec才会被执行。

    3、当文件有修改时执行某命令:

    ### sysctl.conf
            file { "/etc/sysctl.conf":
                    source => "puppet://$puppetserver/files/etc/sysctl.conf",
                    owner => "root",
                    group => "root",
                    mode => 0644,
            }
            # Rebuild the database, but only when the file changes
            # 当sysctl.conf有更的时候才执行sysctl -p
            exec { "sysctl refresh kernel config":
                    path => ["/usr/bin", "/usr/sbin", "/bin", "/sbin"],
                    command  => "sysctl -p",
                    subscribe => File["/etc/sysctl.conf"],
                    refreshonly => true
            }
    

    当/etc/sysctl.conf有更新时,就执行:sysctl -p

    4、其他
    creates
    指定命令所生成的文件。如果提供了这个参数,那么命令只会在所指定的文件不存在的情况的被执行:

    exec { "tar xf /my/tar/file.tar":
            cwd => "/var/tmp",
            creates => "/var/tmp/myfile",
            path => ["/usr/bin", "/usr/sbin"]
    }
    

    cwd
    指定命令执行的目录。如果目录不存在,则命令执行失败。

    更多参考:http://puppet.chinaec2.com/exec

     
  • bixuan 22:51 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags: ,   

    puppet一些资源:

    核心资源类型

    user
    group
    host
    cron
    exec
    file
    package
    service
    mount
    tidy
    

    更多见:本机:/usr/lib/ruby/site_ruby/1.8/puppet/type 或者官方:http://docs.puppetlabs.com/guides/types/index.html

    其他

    http://puppet.chinaec2.com/

    http://puppet.chinaec2.com/book

    http://puppet.chinaec2.com/file

    http://puppet.chinaec2.com/cron

    http://puppet.chinaec2.com/exec

    http://puppet.chinaec2.com/puppet-test

    http://cnctblog.com/2010/11/490.html

    http://docs.puppetlabs.com/guides/language_tutorial.html

    http://blog.chinaunix.net/u2/84280/showart_2386877.html

    http://www.example42.com

    http://conshell.net/wiki/index.php/Puppet

    http://hi.baidu.com/%C2%ED%B3%A4%D5%F72008/blog/item/744219cfeaf76b37b600c8b9.html

     
  • bixuan 19:40 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags: MongoDB, , Wordnik   

    Wordnik的MongoDB使用经验 

    文/赵劼

      Wordnik是一项在线字典及百科全书服务,在大约一年前,它们逐渐开始从MySQL迁移至文档型数据库MongoDB,后者是著名的NoSQL产品之一。最近Wordnik的技术团队通过官方博客分享了这12个月来使用MongoDB经验及现状。

      据Wordnik技术团队描述,它们起初决定使用MongoDB,是看中了它的弱一致性(最终一致)及文档结构的存储方式。

      在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值。这在某些情况下,例如通过ATM查看账户信息的时候很重要,但对于Wordnik来说,数据是不断更新和增长的,这种“精确”的保证几乎没有任何意义,反而会产生很大的延迟。他们需要的是一个“大约”的数字已经更快的处理速度。

      此外,Worknik的数据结构是“层级”式的,如果要将这样的数据使用扁平式的,表状的结构来保存数据,这无论是在查询还是获取数据时都十分困难:

    就拿一个“字典项”来说,虽然并不十分复杂,但还是会关系到“定义”、“词性”、“发音”或是“引用”等内容。大部分工程师会将这种模型使用关系型数据库中的主键和外键表现出来,但把它看作一个“文档”而不是“一系列有关系的表”岂不更好?使用“dictionary.definition.partOfSpeech=’noun’”来查询也比表之间一系列复杂(往往代价也很高)的连接查询方便且快速。

      经过了一年的使用,Worknik描述了他们从MySQL全面迁移至MongoDB后的感受。

      首先是性能上的提高,这也是使用MongoDB的主要原因。MongoDB解决了Worknik在使用MySQL的时候,在存储和数据查询时都遇到的一些问题。下面是一些统计数据:

    MongoDB承受了平均50万每小时的请求(包括周末和夜间),高峰期大约是4倍的量。
    MongoDB中有超过120亿个文档。
    每个节点大约3TB数据。
    一般情况下文档插入速度为每条8千条,峰值为每秒5万条。
    单个Java客户端在千兆带宽下,对单个MongoDB节点的可持续的传输速度为每秒10MB。同一个客户端的四个读取器可以保持每秒40MB的读取速度。
    各种形式的查询都比MySQL的实现要快许多:
    示例的获取速度,从400ms减少为60ms。
    字典项获取速度,从20ms减少为1ms。
    文档元数据的获取速度,从30ms减少为0.1ms。
    拼写提示的获取速度,从10ms减少为1.2ms。
      Worknik表示,在压力较高的情况下,MongoDB的内置缓存机制,让系统对memcached层的每次调用节省了1-2ms,同时还剩下了许多GB的内存。此外,所有的数据不可能都在内存中,因此获取示例的60ms还包括磁盘访问时间。

      其次,使用MongoDB还带来了许多灵活性,除了之前提到的文档型存储让查询变得十分迅速之外,MongoDB还带来了其他一些好处。例如以前Worknik使用集群文件系统保存音频文件,如今这些文件保存在MongoDB的GridFS中。这给IT维护带来了许多方便,例如可以使用相同的方式来维护数据和文件内容,数据库和文件也是保持同步的。

      Worknik对MongoDB的可靠性也很满意,从四月起,MongoDB只重启了两次,一次是从1.4.2版升级到1.4.4版,还有一次是由于数据中心断电。

      唯一可能的抱怨是对于维护性上的。MongoDB没有如MySQL那样成熟的维护工具,这对于开发和IT运营都是个值得注意的地方。不过幸运的是,MongoDB提供了许多“接入点”,因此Worknit创建了一些辅助工具,并打算开源,他们表示将在十二月份的MongoSV上提供更多信息。

      在运营过程中,数据中心断电造成了很大的问题。由于断电发生在写密集的情况下,因此对主从节点都造成了损害。当时主节点正忙于将数据写回磁盘,而从节点正在通过日志获取数据。在电力回复之后,他们花费了超过24小时了来修复主节点上的数据,在这段时间内,他们将从节点提升为主节点使系统得以正常工作。

      最后,Worknik还分享了一些经验:

    数据尺寸:在四月份的MongoSF会议上,我们曾抱怨MongoDB耗费了4倍的数据空间。之后10gen指出了MongoDB的集合填充机制,以及Worknik某些使用场景上造成的浪费。我们将一些对象作为子文档存储,并去除一些索引之后,则大约使用了MySQL的1.5至2倍的存储空间。

    锁:某些情况下MongoDB会锁住数据库。如果此时正有数百个请求,则它们会堆积起来,造成许多问题。我们使用了下面的优化方式来避免锁定:

    每次更新前,我们会先查询记录。查询操作会将对象放入内存,于是更新则会尽可能的迅速。在主/从部署方案中,从节点可以使用“-pretouch”参数运行,这也可以得到相同的效果。
    使用多个mongod进程。我们根据访问模式将数据库拆分成多个进程。
      MongoDB是一个可扩展、高性能的下一代数据库。最新版本为1.6.3,并由10gen提供商业支持。

    From: http://news.cnblogs.com/n/80856/

     
  • bixuan 19:37 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags:   

    需要在国外建点的朋友,可以参考amazon的节点,目前aws里有以下几个点:
    US – N. Virginia维吉尼亚州
    US – N. California加州
    EU – Ireland爱尔兰
    APAC – Singapore新加坡

    如果做cdn,可以选择“Amazon CloudFront”,不过,目前用的cf还不支持自定义源,不知道啥时候开放,期待~

     
  • bixuan 19:33 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags:   

    前几天在aws里新建实例的时候,发现一起新建的7个实例有1个实例不能ssh连接,过了半个小时候莫名的就正常了,不知道有没有朋友也遇到过类似的问题?

     
  • bixuan 19:22 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags:   

    纯音乐 – 琵琶语

    http://www.google.cn/music/song?id=Scf06587cdea0216e&rview=share

     
  • bixuan 19:20 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags:   

    韩雪 – 想起

    http://www.google.cn/music/song?id=Sd38e3d38fe16cb1b&rview=share

     
  • bixuan 19:12 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags: facebook   

    邮箱未动,域名先行,Facebook 接管 fb.com

    http://www.techcrunchchina.com/6791

     
  • bixuan 19:04 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags: chrome, 扩展   

    截图快手: 截屏, 批注, 分享

    https://chrome.google.com/extensions/detail/alelhddbbhepgpmgidjdcjakblofbmce

     
  • bixuan 18:59 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags: google,   

    http://www.google.cn/music/homepage

     
  • bixuan 17:12 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags: , , 问题   

    puppet 遇到的问题:

    1、证书问题:

    # puppetd –server puppet.test.com –test
    warning: Certificate validation failed; considering using the certname configuration option
    err: Could not retrieve catalog: Certificates were not trusted: hostname not match with the server certificate
    warning: Not using cache on failed catalog

    原因是:服务器端的/etc/puppet/puppet.conf中:
    [puppetmasterd]
    certname=puppet.test.com
    的certname和puppetd –server puppet.test.com –test中的–server跟的字符必须一样(见黑体字体部分),否则就报错。

    重新生成ssl
    (1)、在server:

    /usr/sbin/puppetca -c test-226

    (2)、在client:

    cd /var/lib/puppet/ && rm ssl -rfv  && puppetd --server puppet.test.com --test

    (3)、在server:

    /usr/sbin/puppetca -s test-226

    另外,我的puppet和ruby相关的版本:

    puppet-server-0.24.5-1.el5
    puppet-0.24.5-1.el5
    
    ruby-irb-1.8.5-5.el5_4.8
    ruby-1.8.5-5.el5_4.8
    ruby-rdoc-1.8.5-5.el5_4.8
    rubygems-1.2.0-2.el5
    ruby-libs-1.8.5-5.el5_4.8
    
     
  • bixuan 16:31 on 2010 年 11 月 13 日 链接地址 | 回复
    Tags: hostname   

    # hostname -i # 显示主机IP

    # hostname -f # 显示完整的域名,默认是主机

     
c
写新的
j
下一篇文章/下一个回复
k
前一篇文章/以前的回复
r
回复
e
编辑
o
显示/隐藏 回复
t
回到顶部
l
go to login
h
show/hide help
esc
取消