转载:Redis 的 KEYS 命令引起 RDS 数据库雪崩

最近的互联网线上事故发生比较频繁,9月19日网上爆料出顺丰近期发生了一起线上删库事件,在这里就不介绍了。

在这里讲述一下最近发生在我公司的事故,以及如何避免,并且如何处理优化。 该宕机的直接原因是使用 Redis 的 keys * 命令引起的,一共造成了某个服务化项目的两次宕机。

间接原因还有很多,技术跟不上业务的发展,由每日百万量到千万级是一个大的跨进,公司对于系统优化的处理优先级不高,技术开发人手的短缺。
第一次宕机

2018年9月13日的某个点,公司某服务化项目的 RDS 实例连接飙升,CPU 升到 100%,拒绝了其他应用的所有请求服务。

整个过程如下:

阅读全文

部署 Keepalived 实现 MySQL 双主高可用架构

1.部署 MySQL 双主(Master – Master)集群

参考我的博文:《MySQL 双主 Master to Master 架构部署方法》

地址:http://www.sunbloger.com/2018/08/16/604.html

假设已经在 IP 为 192.168.0.1 和 192.168.0.2 的两台主机上部署好了 MySQL 双主集群,接下来我们进行 Keepalived 的部署。

阅读全文

在CentOS环境为PHP安装Memcached扩展

首先,安装PHP的Memcached扩展前,要先安装其所依赖的libmemcached,方法如下:

 

libmemcached安装完毕后,就可以开始安装Memcached扩展了,方法如下:

 

解压缩后,我们需要先修改一下php_libmemcached_compat.h文件
将#include 的路径修改成#include </usr/local/include/libmemcached/memcached.h>然后再继续编译安装

 

最后,还要修改php.ini文件,加入extension=memcached.so并重启php-fpm即可。

阳光部落原创,更多内容请访问http://www.sunbloger.com/

为CentOS升级OpenSSL 让Nginx支持TLS 1.2

最近在调试微信小程序时,发现wx.request请求总是无法正确获取服务器端的数据,经过检查发现是因为服务器端https不支持微信要求的TLS 1.2版本。

登录到服务器上,用openssl version -a命令查询,发现版本是0.9.8e,查阅文档得知OpenSSL从1.0.1开始才支持TLS 1.2,那么我们就来对OpenSSL进行个升级。

准备工作:
1.下载新版OpenSSL源码包https://www.openssl.org/source/openssl-1.0.1u.tar.gz
2.开启主机的telnet,以防升级过程中遇到问题,可通过telnet补救。

阅读全文

在CentOS 5.x中部署LVS-DR模式

LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统。

在下面的案例中,我们用了3台主机,IP地址分别为:

192.168.1.100
192.168.1.101
192.168.1.102

其中,192.168.1.100将安装LVS做为负载均衡器来分发请求,另外2台做为真实提供服务的主机,以DR模式进行部署。

首先,我们应先在192.168.1.101和192.168.1.102上部署好Apache或是Nginx,还有PHP,这里就不详细说明了,可以参考本站的《Nginx + PHP(FastCGI)安装配置笔记》(http://www.sunbloger.com/article/242.html)。

为了便于测试,我们在192.168.1.101上放置一个test.php,代码如下:

并在192.168.1.102上也放置一个同名文件test.php,代码如下:

分别通过浏览器访问http://192.168.1.101:80/test.php和http://192.168.1.102:80/test.php,正常的话会分别显示101和102。

接下来,我们分别在192.168.1.101和192.168.1.102上添加用于LVS的脚本,我们可以将脚本添加到/etc/rc.d/init.d下,作为系统服务随Linux一起启动,方法如下:

lvs-dr脚本代码如下:

 

接下来,我们开始为192.168.1.100安装LVS。

在CentOS下推荐采用yum安装,可以避免内核版本对LVS的影响。

ipvsadm安装完毕后,我们为192.168.1.100添加一个名为lvs-ds的服务启停脚本,代码如下:

将lvs-ds添加到系统服务中:

至此,3台主机部署完毕,开始测试

首先在192.168.1.101和192.168.1.102上分别启动lvs-rs

然后在192.168.1.100上启动lvs-ds

通过http://192.168.1.100:80/test.php来测试LVS工作是否正常,反复刷新页面会看到随机显示101或102就代码部署成功了。

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

升级CentOS的OpenSSH 搭建SFTP Server

SFTP是 Secure File Transfer Protocol 的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的一部分,是一种传输档案至 Blogger 伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

OpenSSH 4.8p1以上的版本才支持SFTP所需的chroot等指令,我的CentOS 5.X服务器的OpenSSH版本过低,需要先对OpenSSH升级。

提示:在升级OpenSSH前,为防止意外出现,我临时开启了telnet,通过telnet连接到服务器后再进行操作(升级完记得关闭telnet)。

 

如果上面的过程很顺利的话,下面这行命令应该可以正常启动sshd

 

接下来配置sshd_config,设置SFTP的用户和目录

上面设置中“xxxxxx”替换为你系统中专门用于SFTP的用户名即可,这里我用的是User,也可以用Group来指定一个用户组。

设置好后重启sshd即可。

用SS5在Linux上搭建Socks5 Proxy代理服务器

SOCKS5 是一个代理协议,通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器。

下面我们将用SS5在Linux上搭建一个Socks5 Proxy Server,具体过程如下:

首先,编译安装SS5需要先安装一些依赖组件

接下来,我们从 http://ss5.sourceforge.net/ 下载SS5最新版本的源代码后,开始编译安装:

让SS5随系统一起启动

开启用户名密码验证机制

在ss5.conf中找到auth和permit两行,按照下面的格式进行修改

设置用户名和密码

一行一个账号,用户名和密码之间用空格间隔,例如:

设置端口

在/etc/sysconfig/ss5这个文件中,添加下面这一行命令,-b后面的参数代表监听的ip地址和端口号

启动

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

Linux中编译安装Redis和PHP扩展

Redis

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

 

下面,我们以Redis 3.0.2为例,对编译安装方法进行说明:

Redis安装好后,接下来我们来为PHP安装Redis扩展:

上面的操作完成后,会在/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626目录下生成出一个redis.so文件,下面我们需要把这个so文件加到php.ini中

具体设置如下:

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

通过iptables规则让Linux主机屏蔽Ping

我们以CentOS为例,向iptables中添加如下三条规则:

第1、2行定义了允许192.168.0.100这个ip允许向主机发出Ping请求

第3、4行定义禁止其他所有地址向主机发出Ping请求,接收到的数据包会被丢弃(DROP)

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

在Linux中部署FFmpeg开源视频压缩环境过程简单笔记

下面是在Linux中部署FFmpeg和相关类库全过程的简单记录,如下:

编译安装yasm

编译安装x264

编译安装lame

编译安装libogg

编译安装libvorbis

编译安装faac

编译安装ffmpeg

将libx264写进ldconfig

阳光部落原创,更多内容请访问 http://www.sunbloger.com/