centos yum puppet 2.7 puppetabs.repo

以前的源更新了。
以前的文章:http://bubbyroom.com/2010/12/howto-install-puppet-on-centos5/

源站地址:http://yum.puppetlabs.com/
安装RPM包:

wget http://yum.puppetlabs.com/el/5/products/x86_64/puppetlabs-release-5-1.noarch.rpm 

或使用以下通用配置文件 puppetlabs.repo

[puppetlabs-products]
name=Puppet Labs Products $releasever - $basearch
baseurl=http://yum.puppetlabs.com/el/$releasever/products/$basearch
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs
enabled=1
gpgcheck=1

[puppetlabs-deps]
name=Puppet Labs Dependencies $releasever - $basearch
baseurl=http://yum.puppetlabs.com/el/$releasever/dependencies/$basearch
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puppetlabs
enabled=1
gpgcheck=1

[puppetlabs-products-source]
name=Puppet Labs Products $releasever - $basearch - Source
baseurl=http://yum.puppetlabs.com/el/$releasever/products/SRPMS
gpgkey=file:///yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
failovermethod=priority
enabled=0
gpgcheck=1

[puppetlabs-deps-source]
name=Puppet Labs Source Dependencies $releasever - $basearch - Source
baseurl=http://yum.puppetlabs.com/el/$releasever/dependencies/SRPMS
gpgkey=file:///yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs
enabled=0
gpgcheck=1

清cache
yum makecache

yum -y install puppet 安装

Testing SyntaxHighlighter

这里写你的代码

 

这里写你的代码

 

这里写你的代码

 

这里写你的代码

 

 testing toolbar

 

 testing autolinks

 

testing

#!/bin/bash echo "bubbyroom"

zabbix_agent.spec

%define zabbix_agent_etc /etc/zabbix
%define zabbix_agent_bin /usr/local/zabbix_agent/bin
%define zabbix_agent_sbin /usr/local/zabbix_agent/sbin

Summary: zabbix agent
Name: zabbix_agent
Version: 1.8.6
Release: 0
#Source0: %{name}-%{version}.tar.gz
License: MIT
Group: Applications/Internet
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

#for install
#BuildRequires:
# for /sbin/service
Requires(preun):    chkconfig, initscripts
Requires(postun):   initscripts

Source0:    %{name}d.conf
Source1:    zabbix_get
Source2:    zabbix_sender
Source3:    zabbix_agent
Source4:    zabbix_agentd
Source5:    zabbix_agentd.init

%description
zabbix_agent

%prep
%build
mkdir -p %{buildroot}%{zabbix_agent_etc}
mkdir -p %{buildroot}%{zabbix_agent_bin}
mkdir -p %{buildroot}%{zabbix_agent_sbin}

%install
%{__install} -p -m 0644 %{SOURCE0} %{buildroot}%{zabbix_agent_etc}
%{__install} -p -m 0644 %{SOURCE1} %{buildroot}%{zabbix_agent_bin}
%{__install} -p -m 0644 %{SOURCE2} %{buildroot}%{zabbix_agent_bin}
%{__install} -p -m 0644 %{SOURCE3} %{buildroot}%{zabbix_agent_sbin}
%{__install} -p -m 0755 %{SOURCE4} %{buildroot}%{zabbix_agent_sbin}
%{__install} -p -D -m 0755 %{SOURCE5} %{buildroot}%{_initrddir}/%{name}d

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
%{zabbix_agent_bin}/zabbix_get
%{zabbix_agent_bin}/zabbix_sender
%{zabbix_agent_sbin}/zabbix_agent
%{zabbix_agent_sbin}/zabbix_agentd
%dir %{zabbix_agent_etc}
%{zabbix_agent_etc}/%{name}d.conf
%{_initrddir}/%{name}d

puppet 配置邮件报警

more tagmail.conf
err: bubbyroom@xxx.com
puppet.conf
[master]
reports=log, foreman, tagmail, store

[转]linux内核软中断引起大量丢包

最近用linux做nat多出口时,遇到的几个问题,经过一个星期的资料查找跟具体实践终于给解决了,由于的问题复杂性,加之个人水平十分有限,解决的过程十分的痛苦,为了使更多的人,不痛苦或者少痛苦一点,介绍一下问题解决的过程。

先说说环境

1.硬件:DELL R410

2.网卡:板载1000M BCM5709

2.OS: RHEL 5.5 x86_64

3.KERNEL: 2.6.18-194.el5

所出现的问题

1.网卡毫无征兆的down掉,而且没有任何log信息

2.当流量增大时,不到理论上限的1/3时机器出现网络延迟严重,伴随大量的丢包

3.机器的cpu软中断不均衡,只有1个cpu处理软中断,并且该cpu的软中断周期性的达到100%

4.内外网网卡做nat丢包数据量不一致,差别很大,不在同一个数量级

想必第一个问题,大部分使用bcm网卡,rhel 5.3以后得机器都会遇到这种情况,网上的资料比较的多,我也不多啰嗦了,直接升级网卡驱动就可以解决了。第二,三,四其实是同一个问题都是由于网卡中断过多,cpu处理不过来(准确的说,cpu分配不均衡,导致只有一个cpu处理,处理不过来),引起丢包,那么为什么两个网卡丢包的数量级不一样呢,下面从原理上进行解释,既然是做nat多出口,那么就有大量的路由信息,是一个网络应用,当一个数据包请求nat时,数据包先被网卡驱动的数据接收,网卡收到数据时,触发中断。在中断执行例程中,把skb挂入输入队列,并触发软中断。稍后的某个时刻,当软中断执行时,再从该队列中把skb取下来,投递给上层协议。

如果在这个过程当中cpu没有及时处理完这个队列导致网卡的buffer满了,网卡将直接丢弃该数据包。这里牵涉到2个队列,一个是tx,一个是rx,它的队列的大小默认都是255,可以通过ethtool -g eth0(你指定的网卡),为了防止丢包,当时我通过ethtool -G eth0 rx xxx 把它调大了,但是调大以后,还是杯水车薪啊,通过ethtool -S eth0 |grep rx_fw_discards,发现数值还是不停的在增长,也就是说还在不停的丢包,cpu处理不过来,这时候找到网上有人在利用lvs时也遇到这个问题,cpu软中断分配不均衡,只有一个cpu处理软中断的问题,网上的资料五花八门,有建议使用修改设备中断方式。即通过修改设置中断/proc/irq/${网卡中断号}/smp_affinit这时候,我也修改过,没有什么实质的效果,

从官方的bug报告,https://bugzilla.redhat.com/show_bug.cgi?id=520888,其中提到rhel5.6已经修复了这个bug,这其中也提到目前我们的版本可以升级内核到kernel-2.6.18-194.3.1.el5可以解决这个问题。

红帽子官方修复报告中的说明如下:http://rhn.redhat.com/errata/RHSA-2010-0398.html,我们升级了这个内核算是解决单核处理软中断的问题,升级后各个cpu已经能够平均的分配这个软中断,也不丢包了,那么为什么cpu处理不过来这个软中断呢,数据量并不是特别的大啊,上层应用接到这个数据包后,通过路由协议,找到某个出口给nat出去,找nat出口是需要查找路由表,查询路由表是一件很耗时的工作,而每一个不同源地址,不同目的地址的数据包都得重新查找一次路由表,导致cpu处理不过来,为了提高路由查询的效率。Linux内核引用了路由缓存,用于减少对路由表的查询。Linux的路由缓存是被设计来与协议无关的独立子系统,查看路由缓存可以通过命令route -Cn,由于路由缓存当中是采用hash算法进行才找,它的查找速度非常之快,既然是cache就有超时这一概念。系统默认为10分钟,可以通过这个文件进行查看和修改/proc/sys/net/ipv4/route/secret_interval。而当路由缓存当中未找到或者已经超时的路由信息才开始查找路由表,查询到的结果保存在路由缓存中。如果路由表越大,那么查询的时间就越长,一个新的连接进来后或者是老连接cache超时后,占用大量的cpu查询时间,导致cpu周期性的软中断出现100%,而两个网卡丢包的情况来看不均衡也是因为用户的数据包是经过其中一个网卡进来后查询路由表耗时过长,cpu处理不过来,导致那块网卡的队列满了,丢包严重。当然在路由表变动不大的情况下可以加大cache的时间,修改上述内容后,从我监测的情况来看,扛流量能力得到了大大的提升。

转正哥们周灵杰BLOG http://blog.netzhou.net/?p=152

[转]服务器返回状态码图解

以前只是看的枯燥的文字版的服务器返回状态码。现在,看一张比较形象的图解,希望能增强记忆。

HTTP 400 – 请求无效
HTTP 401.1 – 未授权:登录失败
HTTP 401.2 – 未授权:服务器配置问题导致登录失败
HTTP 401.3 – ACL 禁止访问资源
HTTP 401.4 – 未授权:授权被筛选器拒绝
HTTP 401.5 – 未授权:ISAPI 或 CGI 授权失败
HTTP 403 – 禁止访问
HTTP 403 – 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost
HTTP 403.1 禁止访问:禁止可执行访问
HTTP 403.2 – 禁止访问:禁止读访问
HTTP 403.3 – 禁止访问:禁止写访问
HTTP 403.4 – 禁止访问:要求 SSL
HTTP 403.5 – 禁止访问:要求 SSL 128
HTTP 403.6 – 禁止访问:IP 地址被拒绝
HTTP 403.7 – 禁止访问:要求客户证书
HTTP 403.8 – 禁止访问:禁止站点访问
HTTP 403.9 – 禁止访问:连接的用户过多
HTTP 403.10 – 禁止访问:配置无效
HTTP 403.11 – 禁止访问:密码更改
HTTP 403.12 – 禁止访问:映射器拒绝访问
HTTP 403.13 – 禁止访问:客户证书已被吊销
HTTP 403.15 – 禁止访问:客户访问许可过多
HTTP 403.16 – 禁止访问:客户证书不可信或者无效
HTTP 403.17 – 禁止访问:客户证书已经到期或者尚未生效
HTTP 404.1 – 无法找到 Web 站点
HTTP 404 – 无法找到文件
HTTP 405 – 资源被禁止
HTTP 406 – 无法接受
HTTP 407 – 要求代理身份验证
HTTP 410 – 永远不可用
HTTP 412 – 先决条件失败
HTTP 414 – 请求 – URI 太长

HTTP 500 – 内部服务器错误
HTTP 500.100 – 内部服务器错误 – ASP 错误
HTTP 500-11 服务器关闭
HTTP 500-12 应用程序重新启动
HTTP 500-13 – 服务器太忙
HTTP 500-14 – 应用程序无效
HTTP 500-15 – 不允许请求 global.asa
Error 501 – 未实现
HTTP 502 – 网关错误

用iptables的raw表解决ip_conntrack: table full, dropping packet的问题

1) 什么是raw表?做什么用的?

iptables有5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING,4个表:filter,nat,mangle,raw.

4个表的优先级由高到低的顺序为:raw–>mangle–>nat–>filter

举例来说:如果PRROUTING链上,即有mangle表,也有nat表,那么先由mangle处理,然后由nat表处理

RAW表只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在某个链上,RAW表处理完后,将跳过NAT表和 ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.

RAW表可以应用在那些不需要做nat的情况下,以提高性能。如大量访问的web服务器,可以让80端口不再让iptables做数据包的链接跟踪处理,以提高用户的访问速度。

2) iptables的数据包的流程是怎样的?

(流程介绍来源:http://selboo.com.cn/post/721/)

一个数据包到达时,是怎么依次穿过各个链和表的(图)。

基本步骤如下:

1. 数据包到达网络接口,比如 eth0。

2. 进入 raw 表的 PREROUTING 链,这个链的作用是赶在连接跟踪之前处理数据包。

3. 如果进行了连接跟踪,在此处理。

4. 进入 mangle 表的 PREROUTING 链,在此可以修改数据包,比如 TOS 等。

5. 进入 nat 表的 PREROUTING 链,可以在此做DNAT,但不要做过滤。

6. 决定路由,看是交给本地主机还是转发给其它主机。

到了这里我们就得分两种不同的情况进行讨论了,一种情况就是数据包要转发给其它主机,这时候它会依次经过:

7. 进入 mangle 表的 FORWARD 链,这里也比较特殊,这是在第一次路由决定之后,在进行最后的路由决定之前,我们仍然可以对数据包进行某些修改。

8. 进入 filter 表的 FORWARD 链,在这里我们可以对所有转发的数据包进行过滤。需要注意的是:经过这里的数据包是转发的,方向是双向的。

9. 进入 mangle 表的 POSTROUTING 链,到这里已经做完了所有的路由决定,但数据包仍然在本地主机,我们还可以进行某些修改。

10. 进入 nat 表的 POSTROUTING 链,在这里一般都是用来做 SNAT ,不要在这里进行过滤。

11. 进入出去的网络接口。完毕。

另一种情况是,数据包就是发给本地主机的,那么它会依次穿过:

7. 进入 mangle 表的 INPUT 链,这里是在路由之后,交由本地主机之前,我们也可以进行一些相应的修改。

8. 进入 filter 表的 INPUT 链,在这里我们可以对流入的所有数据包进行过滤,无论它来自哪个网络接口。

9. 交给本地主机的应用程序进行处理。

10. 处理完毕后进行路由决定,看该往那里发出。

11. 进入 raw 表的 OUTPUT 链,这里是在连接跟踪处理本地的数据包之前。

12. 连接跟踪对本地的数据包进行处理。

13. 进入 mangle 表的 OUTPUT 链,在这里我们可以修改数据包,但不要做过滤。

14. 进入 nat 表的 OUTPUT 链,可以对防火墙自己发出的数据做 NAT 。

15. 再次进行路由决定。

16. 进入 filter 表的 OUTPUT 链,可以对本地出去的数据包进行过滤。

17. 进入 mangle 表的 POSTROUTING 链,同上一种情况的第9步。注意,这里不光对经过防火墙的数据包进行处理,还对防火墙自己产生的数据包进行处理。

18. 进入 nat 表的 POSTROUTING 链,同上一种情况的第10步。

19. 进入出去的网络接口。完毕。

3) iptables raw表的使用

增加raw表,在其他表处理之前,-j NOTRACK跳过其它表处理

状态除了以前的四个还增加了一个UNTRACKED

例如:

可以使用 “NOTRACK” target 允许规则指定80端口的包不进入链接跟踪/NAT子系统

iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp –dport 80 -j NOTRACK

iptables -t raw -A PREROUTING -s 1.2.3.4 -p tcp –sport 80 -j NOTRACK

iptables -A FORWARD -m state –state UNTRACKED -j ACCEPT

4) 解决ip_conntrack: table full, dropping packet的问题

在启用了iptables web服务器上,流量高的时候经常会出现下面的错误:

ip_conntrack: table full, dropping packet

这个问题的原因是由于web服务器收到了大量的连接,在启用了iptables的情况下,iptables会把所有的连接都做链接跟踪处理,这样iptables就会有一个链接跟踪表,当这个表满的时候,就会出现上面的错误。

iptables的链接跟踪表最大容量为/proc/sys/net/ipv4/ip_conntrack_max,链接碰到各种状态的超时后就会从表中删除。

所以解決方法一般有两个:

(1) 加大 ip_conntrack_max 值

vi /etc/sysctl.conf

net.ipv4.ip_conntrack_max = 393216

net.ipv4.netfilter.ip_conntrack_max = 393216

(2): 降低 ip_conntrack timeout时间

vi /etc/sysctl.conf

net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300

net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60

net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

上面两种方法打个比喻就是烧水水开的时候,换一个大锅。一般情况下都可以解决问题,但是在极端情况下,还是不够用,怎么办?

这样就得反其道而行,用釜底抽薪的办法。iptables的raw表是不做数据包的链接跟踪处理的,我们就把那些连接量非常大的链接加入到iptables raw表。

如一台web服务器可以这样:

iptables -t raw -A PREROUTING -d 1.2.3.4 -p tcp –dport 80 -j NOTRACK

iptables -A FORWARD -m state –state UNTRACKED -j ACCEPT

5) iptables raw表的效果测试

我们在一台web server上做测试,先不使用raw表,观察链接跟踪表(/proc/net/ip_conntrack)的大小:

先看下iptables配置:

cat /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Wed Aug 18 10:10:52 2010

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [104076:12500201]

:RH-Firewall-1-INPUT – [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp –icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p esp -j ACCEPT

-A RH-Firewall-1-INPUT -p ah -j ACCEPT

-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp –dport 5353 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited

COMMIT

# Completed on Wed Aug 18 10:10:52 2010

在另一台机器上用ab测试:

ab -c 1000 -n 5000 http://192.168.20.26/index.html

在web server上查看链接跟踪表(/proc/net/ip_conntrack)的大小:

[root@mongo html]# wc -l /proc/net/ip_conntrack

5153 /proc/net/ip_conntrack

可以看到跟踪表内有5153个链接,再大一些的压力可能就要报ip_conntrack: table full, dropping packet的错误了。

下面我们启用raw表:

先更新iptables:

[root@mongo html]# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Wed Aug 18 10:10:52 2010

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [104076:12500201]

:RH-Firewall-1-INPUT – [0:0]

-A INPUT -j RH-Firewall-1-INPUT

-A FORWARD -j RH-Firewall-1-INPUT

-A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp –icmp-type any -j ACCEPT

-A RH-Firewall-1-INPUT -p esp -j ACCEPT

-A RH-Firewall-1-INPUT -p ah -j ACCEPT

-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp –dport 5353 -j ACCEPT

-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT

-A RH-Firewall-1-INPUT -m state –state RELATED,ESTABLISHED,UNTRACKED -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited

COMMIT

# Completed on Wed Aug 18 10:10:52 2010

# Generated by iptables-save v1.3.5 on Wed Aug 18 10:10:52 2010

*raw

:P REROUTING ACCEPT [116163:9327716]

:OUTPUT ACCEPT [104076:12500201]

-A PREROUTING -p tcp -m tcp –dport 80 -j NOTRACK

-A OUTPUT -p tcp -m tcp –sport 80 -j NOTRACK

COMMIT

# Completed on Wed Aug 18 10:10:52 2010

红色部分是新增的。

重启iptables:

service iptables restart

可以用iptables命令查看是否启用成功了:

[root@mongo html]# iptables -t raw -L -n

Chain PREROUTING (policy ACCEPT)

target prot opt source destination

NOTRACK tcp — 0.0.0.0/0 0.0.0.0/0 tcp dpt:80

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

NOTRACK tcp — 0.0.0.0/0 0.0.0.0/0 tcp spt:80

然后再用ab测试:

ab -c 1000 -n 5000 http://192.168.20.26/index.html

查看链接跟踪表(/proc/net/ip_conntrack)的大小:

[root@mongo html]# wc -l /proc/net/ip_conntrack

1 /proc/net/ip_conntrack

跟踪表内只跟踪了一个链接了。

[root@mongo html]# cat /proc/net/ip_conntrack

tcp 6 431999 ESTABLISHED src=192.168.20.26 dst=192.168.20.10 sport=22 dport=50088 packets=85 bytes=10200 src=192.168.20.10 dst=192.168.20.26 sport=50088 dport=22 packets=92 bytes=6832 [ASSURED] mark=0 secmark=0 use=1

可以看到iptables已经不跟踪进出端口为80的链接了。测试结果表明用iptables的raw表可以完美解决ip_conntrack: table full, dropping packet的问题。

What are the programming languages and frameworks the top NYC startups are using?

In a conversation with the NYCEDC and ITAC, I learned that no one has a sense of what are the predominant languages and frameworks that people are using.

If you are with a startup or company that has more than 1M pageviews a month and is based in NYC (or the boroughs), can you give a sense of the skills/experience you are looking for? This will help people understand what skills we need to grow…

Companies like:

Tumblr

OMGPOP

Kickstarter

Makerbot

AppNexus

Aviary

the Fridge

ideeli

Daylife

HowAboutWe

Thrillist

Gawker

Artsy

Sailthru

20×200

fanfeedr

SolveMedia

Social Flow

HuffingtonPost

AppFund

betaworks

Work Market

Chartbeat

Producteev

Voxy

Food52
一、

foursquare:

Language – Scala
Web Framework – Lift
Database – MongoDB
App Server – Jetty
Proxy Layer – nginx + HAProxy
Hosting – Amazon EC2
Search – Solr
Email – SendGrid
Queuing – Kestrel
JS Library – jQuery
Etc – FogBugz, Git, CIJoe, ReviewBoard

PS: If you’d like to work with these tools (or think we should be using something else and want to show us why), we’re hiring! http://foursquare.com/jobs/

二、

At SecondMarket we use :

Language – Java
Web Framework – SpringMVC
Databases – MongoDB & Postgres
App Server – Jetty
Proxy Layer – ELB & HAProxy
Hosting – Amazon EC2
Email – SendGrid
Queuing – ActiveMQ
JS Library – jQuery
API interface – Rest/JSON
Etc – Bamboo, Puppet, SVN, JIRA
QE tools – (ruby, watir, webdriver, selenium)

Interested – check out our open jobs - http://www.secondmarket.com/abou…

三、

Here at OMGPOP:

Language – Ruby, AS3, Erlang, C/C++/Objective C, Javascript
XMPP – ejabberd, openfire
Web Frameworks: Rack, Merb, Sinatra, Express
Database – MySQL, Redis, Memcache, Vertica
App Server – Thin, node.js
Proxy Layer – Nginx + HAProxy
Hosting – Amazon EC2 / Softlayer / Managed Colo
Queuing – Redis/Resque
JS Library – jQuery / underscore
Monitoring – New Relic, Nagios, Munin, Flume, Custom
Testing – rspec, selenium
Etc – jira, git, svn, puppet, capistrano

四、

Languages: Python, some C, and a little bit of TCL (yes, really)
Web Framework: Tornado
Reverse Proxy: nginx
Redirect App Server: AOLserver
Databases: MySQL, Tokyo Cabinet, and MongoDB
Volatile Data Stores: Memcache, MemoryFly (internal)
Hosting: NTT and EC2
Queueing – simplequeue (https://github.com/bitly/simpleh…)
JS Library: jQuery
五、Gilt Groupe/City:

Frontend: Java/JSP
Middle Tier: Java/Jetty
Internal app: lots of Rails
Javascript: jQuery
Database: Postgres, Voldemort, used to use a bit of Mongo

etc: JIRA, Hudson, puppet, git
六、GroupMe uses the following:

Languages: Ruby, Javascript
Web Frameworks: Rails, Sinatra, node.js
Database: Postgres, Redis
Frontend: Sass, Haml, jQuery
Services: Twilio, Heroku
Tools: RSpec, Git, Github, Pivotal Tracker
七、Stack: Ruby on Rails, MongoDB, Backbone.js, JQuery

Tools: Git, Pivotal Tracker, GitHub, CI Joe, RSpec, Steak (BDD), Jasmine (BDD for JS)
八、Frameworks: Django 1.2, jQuery
Web Servers: Cherokee, Nginx
Data: Postgres 8.4
Hosting: Amazon EC2, Linode
Caching: memcached
Queuing: Celery/RabbitMQ
Web Services: Sailthru, KISSmetrics, Twillio, Recurly, Discus, Google Analytics, Facebook
Tools: SVN, Unfuddle, Pivotal Tracker, Basecamp, Google Docs/Apps
Mobile: Objective-C, HTML5/CSS3

Unlike most NYC startups, we keep our HR in the cloud. Developers work remotely and collaborate through IRC from Madrid, Buenos Aires, Novosibirsk, Chicago and Minneapolis. This greatly reduces start-up costs and also increases our multi-language exposure which is an asset to a language-learning startup.

We’re hiring… Looking for a talented cross-platform mobile developer.
http://voxy.com/about/jobs/en/
九、Chartbeat (http://chartbeat.com)
Languages: Python, C++, Javascript

Frameworks: Tornado (Python), django, Google Closure Tools
Webserver: nginx
Infrastructure/deployment: puppet, fabric
Database: MongoDB, MySQL
Email: Sailthru
Monitoring: nagios, ganglia, chartbeat :) , munin
Hosting: AWS
Queueing: RabbitMQ, Gearman
Versioning: GitHub, https://github.com/chartbeat/labs
Etc: fogbugz, reviewboard
Interested in joining? - http://chartbeat.com/jobs/
十、Language: PHP, Java, Javascript; Also Python, Ruby, C# for API clients
Web Framework: Custom
Databases: MongoDB
Web Server: Apache with Pound Load Balancer
Queuing – ActiveMQ
JS Library – jQuery
API interface – Rest/JSON (XML also available but not recommended)
Hosting – Amazon EC2 with few colocated servers
Etc – Github, Lighthouse
十一、Languages: Python, Java, Erlang, Objective-C, Javascript
Frameworks: Pylons
Tools: JIRA,SVN
Database: Postgres
Search: SOLR
Servers: apache, rabbitmq

Evolving to:

Languages: Python, Java, Erlang, Objective-C, Javascript
Frameworks: Pylons, JQuery/Backbone
Tools: JIRA, Puppet, mercurial, Bamboo, Thrift
Database: Postgres, Hadoop/HBase, CouchDB
Search: ElasticSearch
Servers: nginx, rabbitmq,
十二、anguages: Python, PHP, Javascript
Frameworks: Tornado (Python), custom MVC (PHP)
Webserver: Apache and nginx
Database: MySQL
Email: Sailthru
Monitoring: nagios, graphite, statsD, splunk, chartbeat, pingdom
Hosting: AWS and Slicehost
Etc: git, vagrant, chef, capistrano, RabbitMQ, jQuery

Hiring software engineers - http://www.lot18.com/careers

mysql 1主2从同步错误:Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND解决方案

架构说明:

1主。2从。2从的配置都一样。

版本也一样。

实然发现其中一台从不同步了。报错如下。

# show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.20

Master_User: slave

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.002552

Read_Master_Log_Pos: 233406800

Relay_Log_File: mysql-relay-bin.000007

Relay_Log_Pos: 204127317

Relay_Master_Log_File: mysql-bin.002552

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1032

Last_Error: Could not execute Delete_rows event on table redmine.reports; Can’t find record in ‘reports’, Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event’s master log mysql-bin.002552, end_log_pos 204464875

搜索找了不少文档。也有很暴力的解决方案:

slave-skip-errors=1032  但不建议采用这种方案。会导致以后数据不致的情况出现。

其正确的解决方案如下:

主数据库同步模式是binlog_format = MIXED

第一台从库服务器同步模式也是binlog_format = MIXED,则第一台从库同步没问题

第二台从库的同步模式需要修改下,否则出现1032错误,该服务器同步模式设置binlog_format = STATEMENT

经过观察mysql的错误日志,发现问题解决。没有出现1032的错误。

提醒 :在重启的时候一定要先slave stop

否则会有如下错误 :

Got fatal error 1236 from master when reading data from binary log: ‘Client requested master to start replication from impossible position’

它的解决方案网上挺多的。我就记录下吧:

mysqlbinlog mysql-bin.0000xx > a.txt

tail -n 20 a.txt

找到最后正确的同步pos

然后再

CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.002552′, MASTER_LOG_POS=233406800;

问题就能得到解决。如果你解决不了。那就只能重做主从了。:)

ubuntu install moinmoin WIKI系统

官方网站:http://moinmo.in

下载1.9的包后,在docs里有INSTALL.html文档,可以看下依赖包。

本文是最新ubuntu python2.6+ nginx fcgi

安装:

 python2.6 setup.py install --force --record=install.log --prefix='/usr/local' --install-data=/data/moin  

COPY WIKI相关的目录


cp -R /usr/local/share/moin/data /data/moin
cp -R /usr/local/share/moin/underlay /data/moin
cp /usr/local/share/moin/config/wikiconfig.py /data/moin
cp /usr/local/share/moin/server/moin.fcgi  /data/moin

启动moin

 spawn-fcgi -a 127.0.0.1 -p 9001 -u daemon -g daemon -F 1 -f /data/moin/moin.fcgi 

新建WIKI的虚拟主机
wiki.bubbyroom.com.conf


server
{
listen	80;
server_name wiki.bubbyroom.com;
index index.php index.html index.htm;
root   /data/wwwroot/moin;
#access_log /data/logs/access_test.com.log  combined;
#error_log  /data/logs/error_test.com.log;
location / {
include        fastcgi_params;
fastcgi_pass   127.0.0.1:9001;
fastcgi_param  SCRIPT_FILENAME  $fastcgi_script_name;
fastcgi_param   SCRIPT_NAME /;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
} 

访问wiki.bubbyroom.com 就好了

Go to Top