Posts Tagged 网络和安全

开源小站的基础结构

之前有朋友问过开源小站的架构是怎样的,我回答道:“标准的wordpress,稍微做了一些调整。”时隔一段时期,几经搬迁,这次重新整理了一下开源小站的结构,就当分享罢了。

“开源小站”最初是基于drupal构建,基础数据库是postgresql。后来由于drupal的性能问题以及框死了的postgresql,只能整体迁移到了wordpress+mysql。当然迁移好之后,考虑到drupal和wordpress的链接地址的不同,修改了wordpress的部分代码,让之前的外链不至于失效。后来索性就通过apache的mod_rewrite模块添加了301跳转,wordpress的版本也可以随着“持续演进”了。

Read the rest of this entry »

, ,

No Comments

运维的CAP原则

小站上的 文章大多以实际操作为主,这次就介绍点理论吧。

曾经跟几个同行聊起了数据库这边的容错方案,有朋友发过类似的牢骚:“网站(或者数据库)做了负载均衡,可用性提高了,单点故障也不怕了,但数据的同步总是慢半拍,无法适用某些应用。如果要求完全解决一一致性的麻烦,就只能到回去。”

Read the rest of this entry »

,

1 Comment

Ecshop的问题

在看一台服务器的SQL-Slow日志,看到了如下的一纪录,惊出了一身冷汗!

SELECT pg.package_id, pg.goods_id, pg.goods_number,
        pg.admin_id, g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, g.is_real,
        IFNULL(mp.user_price, g.shop_price * '1') AS rank_price
FROM `ecs_`.`ecs_package_goods` AS pg
        LEFT JOIN `ecs_venusveil`.`ecs_goods` AS g ON g.goods_id = pg.goods_id
        LEFT JOIN `ecs_venusveil`.`ecs_member_price` AS mp ON mp.goods_id = g.goods_id AND mp.user_rank = '0'
WHERE pg.package_id = -1
union all
        select 1,2,3,4,5,6,7,8,count(*),concat(
                (Select concat(0x5b,email,0x3a,user_name,0x5d)
                        FROM ecs_users
                        LIMIT 9456,1), floor(rand(0)*2))x
         from information_schema.tables
         group by x
ORDER BY pg.package_id, pg.goods_id;

Read the rest of this entry »

, , ,

2 Comments

高负载的Lamp架构

记得那时是2005年10月,开源小站刚上线不久的一篇文章。那时的我还仅仅将网站的高可用性和大负载,大流量集中在“堆硬件”的层面上。包括之后的一篇文档,似乎也没有逃脱这个范畴。之后由于工作内容的关系,始终没有再继续探讨这个问题。仅仅只在一篇关于GAE的文章中讲述了一下架构的趋势。

时隔了5年多,不妨回头重新从新的高度上说说LAMP结构的网站如何支撑尽可能大的负载。同样说明,本文代表站长Litrin的个人意见,欢迎共同探讨,但喷子慎入。

Read the rest of this entry »

, , , , ,

No Comments

google的下一代web协议spdy

之前听过Stanely发过一个牢骚:说在公司局域网内使用Chrome,很快收到了网管寄出的Email,大致上是通知他换用其他的浏览器,然后说了一堆Chrome种种的不好、不安全之类的言论。更让他郁闷的是邮件的收件人只是几个Chrome的用户,没有针对其他人,为什么能准确的辨别出谁使用了Chrome?

我想,排除了其他因素,诸如网管可能有远程监视硬盘之类的技术,仅仅通过公司企业的前端路由——估计他们这种规模的企业,一定有深包分析之类的高级设备,完全可以清除的知道谁在使用Chrome,原因就是因为Chrome正在测试google下一代的web协议spdy。

Read the rest of this entry »

, ,

2 Comments

Ubuntu的AppArmor引发的Mysql问题

这些天一台ubuntu server的mysql数据目录/var/lib/mysql所在分区快用光了,于是想把Mysql的数据目录移到一个相对空闲的分区下,直接修改了my.cnf中的配置,系统提示无法启动Mysql。又自做聪明的使用了链接文件访问,仍然无效。完全排除了所有linux文件系统权限的可能之后,我回忆起了之前在Redhat系操作系统上发生过的SeLinux导致的类似问题。看了一下官档,果然!Ubuntu在710之后,增加了一个类似于Selinux的权限控制服务叫做AppArmor,名字就很有意思:应用铠甲,让我想起了Diablo2中的暗金⋯⋯

Read the rest of this entry »

, , ,

No Comments

SYN-ACK-ACK攻击和SYN COOKIE

没事在看Juniper Netscreen的警报日志,看到有一条SYN-ACK-ACK记录。

正常情况下TCP/IP协议中SYN握手大致上如此:

  1. A(发起者)发送一个SYN给B(接收者)
  2. B回复SYN-ACK给A
  3. A回复ACK给B
  4. 连接成功!

这个过程的缺陷是,如果A是有恶意的来源,始终不停的发送SYN给B,那么B就会不停的建立起空连接(未完成的连接)等待A的ACK响应,只要A不回应,B的空连接就会不断的消耗资源,直至无法响应。

Read the rest of this entry »

,

No Comments

从GAE看网站架构趋势

在Google App Engine做了几个东西。从当初觉得这个平台的迥然不同,直到现在逐步了解了这个平台的逻辑架构。作为Google的一款成功的作品,相信GAE的很多东西将会陆陆续续被模仿和抄袭,直到真正影响到我们。本文就以我个人的理解,谈谈GAE将会给今后的网站架构带来哪些革命性的东西。

首当其冲的应该算是云技术,但这个技术总体上属于物理层的技术,况且云已经成为公认的技术趋势。这里主要是谈下网站的架构,云技术相对关系较为偏离,我也就不再探讨了。

Read the rest of this entry »

, , , , ,

1 Comment

FreeBSD ZFS版本升级的问题

之前的文章,介绍FreeBSD下的ZFS。

FreeBSD 8.1比较吸引我的一个重要更新就是将ZFS从测试模块升级到了正式模块。这意味着Zfs已经足够的成熟和稳定了。

闲话不说,我这台主机是用zfs来做nfs服务器。刚升级到了FreeBSD 8.1 stable的版本。

Read the rest of this entry »

, , ,

No Comments

用SSH Tunnel穿越防火墙

这次接上篇

很多企业对互联网的访问进行了限制,如何突破防火墙的限制成了一个问题。本文就是利用了SSH tunnel搭建了socket5代理。

首先,申请一个外网的ssh帐户,个人建议使用http://www.unix-center.net/提供的免费资源,该网站还提供多种平台主机可供测试之用,非常不错!当然,如果可以使用密钥方式登录那就完美了。

Read the rest of this entry »

, , ,

4 Comments