RHEL/CentOS 6 Linux安装Memcached高性能分布式内存对象缓存服务器

时间:2020-01-09 10:40:20  来源:igfitidea点击:

如何在IBM硬件上运行的Red Hat Enterprise Linux或CentOS Linux version6.x服务器下安装memcached服务器,以缓存基于php/perl/python的应用程序的查询?

memcached是一种高性能的分布式内存对象缓存服务器,本质上是通用的,但旨在通过减轻数据库负载来加速动态Web应用程序。
您需要安装以下软件包:

  • memcached:高性能,分布式内存对象缓存服务器软件包。
  • perl-Cache-Memcached:与memcached服务器一起使用的Perl客户端(库)。
  • python-memcached:Python客户端(库),用于memcached服务器。
  • php-pecl-memcache:与Memcached服务器一起使用的PHP扩展。

Memcached已被YouTube,Reddit,Facebook,Twitter等许多高流量站点所使用。
GoogleApp Engine,AppScale和Amazon Web Services还通过API提供了Memcached服务。
流行的开源项目和CMS(如Drupal,Joomla,WordPress等)也支持Memcached。

警告!这些示例仅适用于RHEL/CentOS Linux 6.x或更高版本。
对于RHEL 5.x和更早版本,请使用memcached源代码安装方法。

在CentOS/RHEL上安装memcached

使用ssh客户端打开终端或登录到远程服务器。
执行以下yum命令进行安装:

# yum install memcached.x86_64 php-pecl-memcache.x86_64

或者

# yum install memcached php-pecl-memcache

输出示例:

Loaded plugins: product-id, rhnplugin, subscription-manager
Updating certificate-based repositories.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package memcached.x86_64 0:1.4.4-3.el6 will be installed
--> Processing Dependency: libevent-1.4.so.2()(64bit) for package: memcached-1.4.4-3.el6.x86_64
---> Package php-pecl-memcache.x86_64 0:3.0.5-3.el6 will be installed
--> Processing Dependency: /usr/bin/pecl for package: php-pecl-memcache-3.0.5-3.el6.x86_64
--> Processing Dependency: /usr/bin/pecl for package: php-pecl-memcache-3.0.5-3.el6.x86_64
--> Running transaction check
---> Package libevent.x86_64 0:1.4.13-1.el6 will be installed
---> Package php-pear.noarch 1:1.9.4-4.el6 will be installed
--> Finished Dependency Resolution
 
Dependencies Resolved
 
================================================================================
Package              Arch      Version           Repository               Size
================================================================================
Installing:
memcached            x86_64    1.4.4-3.el6       rhel-x86_64-server-6     68 k
php-pecl-memcache    x86_64    3.0.5-3.el6       rhel-x86_64-server-6     60 k
Installing for dependencies:
libevent             x86_64    1.4.13-1.el6      rhel-x86_64-server-6     66 k
php-pear             noarch    1:1.9.4-4.el6     rhel-x86_64-server-6    393 k
 
Transaction Summary
================================================================================
Install       4 Package(s)
 
Total download size: 587 k
Installed size: 0  
Is this ok [y/N]: y
Downloading Packages:
(1/4): libevent-1.4.13-1.el6.x86_64.rpm                  |  66 kB     00:00     
(2/4): memcached-1.4.4-3.el6.x86_64.rpm                  |  68 kB     00:00     
(3/4): php-pear-1.9.4-4.el6.noarch.rpm                   | 393 kB     00:00     
(4/4): php-pecl-memcache-3.0.5-3.el6.x86_64.rpm          |  60 kB     00:00     
-------------------------------------------------------------------------------
Total                                           2.4 MB/s | 587 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : 1:php-pear-1.9.4-4.el6.noarch                                1/4 
  Installing : libevent-1.4.13-1.el6.x86_64                                 2/4 
  Installing : memcached-1.4.4-3.el6.x86_64                                 3/4 
  Installing : php-pecl-memcache-3.0.5-3.el6.x86_64                         4/4 
Installed products updated.
 
Installed:
  memcached.x86_64 0:1.4.4-3.el6     php-pecl-memcache.x86_64 0:3.0.5-3.el6    
 
Dependency Installed:
  libevent.x86_64 0:1.4.13-1.el6          php-pear.noarch 1:1.9.4-4.el6         
 
Complete!

如何配置Memcached服务器?

编辑/etc/sysconfig/memcached文件,执行:

# vi /etc/sysconfig/memcached

输出示例:

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="

对于繁忙的服务器,您需要按如下所示增加值:

  • MAXCONN:最多使用1024个并发连接;默认值为1024。对于繁忙的服务器,请根据要求或设置增加此数字。
  • CACHESIZE:最多使用64 MB内存来存储对象;默认值为64 MB。对于繁忙的服务器,您可以将其设置为512MB或1GB(1024)。
  • OPTIONS:您可以在此处设置服务器IP地址(在地址上监听),以便基于apache/php/nginx的服务器可以连接到服务器。默认情况下,它设置为INADDR_ANY。这是要考虑的重要选项,因为没有其他方法可以确保安装安全。建议绑定到内部或防火墙网络接口。

这是我更新的示例配置文件:

PORT="11211"
USER="memcached"
MAXCONN="4096"
CACHESIZE="512"
OPTIONS="-l 192.168.1.15"

保存并关闭文件。

如何启动/停止/重启Memcached服务器?

执行以下命令:

# /etc/init.d/memcached start
# /etc/init.d/memcached stop
# /etc/init.d/memcached restart
# /etc/init.d/memcached status

或使用service命令运行System V初始化脚本

# /sbin/service memcached start
# /sbin/service memcached stop
# /sbin/service memcached restart
# /sbin/service memcached status

如何验证Memcached在Linux上运行并正常工作?

执行以下命令以查看其是否正在运行:

# pgrep memcached
# netstat -tulpn | grep :11211

输出示例:

tcp        0      0 192.168.1.15:11211           0.0.0.0:*                   LISTEN      24964/memcached     
udp        0      0 192.168.1.15:11211           0.0.0.0:*                               24964/memcached

使用memcached-tool获取有关服务器的常规统计信息:

# memcached-tool 192.168.1.15:11211 stats

输出示例:

#192.168.1.15:11211 Field       Value
         accepting_conns           1
               auth_cmds           0
             auth_errors           0
                   bytes     5481902
              bytes_read     8242409
           bytes_written    26023492
              cas_badval           0
                cas_hits           0
              cas_misses           0
               cmd_flush           0
                 cmd_get        9042
                 cmd_set        4469
             conn_yields           0
   connection_structures          48
        curr_connections          47
              curr_items        3197
               decr_hits           0
             decr_misses           0
             delete_hits           6
           delete_misses         112
               evictions           0
                get_hits        7490
              get_misses        1552
               incr_hits           0
             incr_misses           0
          limit_maxbytes   536870912
     listen_disabled_num           0
                     pid       24964
            pointer_size          64
           rusage_system    0.149977
             rusage_user    0.043993
                 threads           4
                    time  1327395688
       total_connections         171
             total_items        3226
                  uptime         198
                 version       1.4.4

如何配置防火墙以保护Memcached服务器?

确保iptables仅允许访问您自己的服务器。
编辑/etc/sysconfig/iptables并追加以下规则或将其添加到您的Shell脚本中,如下所示:

## add to your shell script ##
## assumption default INPUT policy is set to DROP ##
## only accept connection to tcp/udp port 11211 if ip is between 192.168.1.10 and 192.168.1.15 ##
iptables -A INPUT -p tcp --destination-port 11211 -m state --state NEW  -m iprange --src-range 192.168.1.10-192.168.1.15 -j ACCEPT
iptables -A INPUT -p udp --destination-port 11211 -m state --state NEW  -m iprange --src-range 192.168.1.10-192.168.1.15 -j ACCEPT