centos下安装memcached并启用SASL功能

本文介绍如何在Memcached中启用SASL验证机制,并详细解释了安装与配置过程,包括使用shadow验证方法、安装与配置Cyrus-SASL等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启用SASL验证机制
SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。
简单来说SASL是一个胶合(glue)库,通过这个库把应用层与形式多样的认证系统整合在一起。这有点类似于 PAM,但是后者是认证方式,决定什么人可以访问什么服务,而SASL是认证过程,侧重于信任建立过程,这个过程可以调用PAM来建立信任关系。在这里Memcached就是上面提到的应用层,具体的认证交给SASL库,SASL会根据相应的认证机制来完成验证功能。

默认情况下,Red Hat Enterprise Linux安装程序会自动安装Cyrus-SASL认证包。可使用下面的命令检查系统是否已经安装了Cyrus-SASL认证包或查看已经安装了何种版本。

查看sasl库有没有被安装

rpm -qa | grep sasl

查看密码验证机制,输入

saslauthd -v

为简单起见,这里准备采用shadow验证方法,也就是直接用/etc/shadow文件中的用户账户及密码进行验证。因此,在配置文件/etc/sysconfig/saslauthd中,应修改当前系统所采用的密码验证机制为shadow

MECH=shadow 

退出保存,启动saslauthd服务

service saslauthd restart

测试验证是否成功

/usr/sbin/testsaslauthd –u test–p123456

其中,test为Linux系统中的用户账户名,123456为用户test的密码。该命令执行后,如果出现如下所示的结果,则表示saslauthd的认证功能已起作用,

亦可以自己添加用户给指定的程序,使用如下命令

saslpasswd2 -a memcached -c test

安装memcache,这个地方最好不要用yum直接安装,因为有可能没有编译进SASL模块,下载源码自己编译memcache。

下载libevent编译,或者使用操作系统自带的libevent,安装memcache

./configure --prefix=/opt/memcached --enable-sasl


checking sasl/sasl.h usability... no
checking sasl/sasl.h presence... no
checking for sasl/sasl.h... no


安装sasl

yum install cyrus-sasl*

检查通过 依次命令

make & make install

安装后解决执行路径问题

创建软链接

sudo ln -s /opt/memcached/bin/memcached /usr/bin/memcached



<think>好的,用户的问题是关于Memcached在使用netstat命令时找不到连接信息,需要排查原因或找到替代方法。首先,我得回想一下Memcached的基本配置和常见问题。 首先,用户可能没有正确启动Memcached服务。比如,启动时可能没有指定正确的端口或IP地址。根据引用[1],启动命令中使用了-p 11211参数,所以默认端口是11211。如果用户启动时没有指定端口,或者指定了其他端口,netstat查不到对应的端口就会有问题。另外,检查是否以守护进程模式启动(-d参数),但如果没有正确运行,服务可能没起来。 其次,防火墙或安全组设置可能阻止了端口的访问。即使Memcached在运行,如果防火墙屏蔽了11211端口,外部无法连接,netstat可能显示不了相关连接。需要检查iptables或者firewalld的设置。 然后,Memcached可能绑定到了本地回环地址(127.0.0.1),这样只有本机可以连接,外部无法访问。这时候netstat会显示0.0.0.0:11211还是127.0.0.1:11211呢?如果启动时没有指定-l参数绑定到所有接口,可能默认是监听所有接口,但有时候配置问题可能导致绑定到本地,需要确认启动参数是否有-l选项或者配置文件中是否设置。 另外,用户可能在使用netstat命令时没有正确的参数。比如,是否使用了正确的协议(TCP/UDP),因为Memcached默认同时监听TCP和UDP端口。引用[1]中的netstat输出显示了tcp、tcp6、udp、udp6,所以用户需要使用-atu参数来查看所有连接。如果用户只用了-t或-u,可能会遗漏部分信息。 如果服务确实在运行但netstat无法显示,可能需要检查进程是否存活。使用ps或pgrep命令查看Memcached进程是否存在,如引用[3]中的ps -ef | grep 11211。如果进程不存在,说明服务没启动成功,需要重新启动检查日志。 还有可能Memcached配置了SASL认证,导致未认证的连接无法建立,但这种情况可能比较少见,需要检查是否启用了认证机制。 如果上述方法都无效,可能需要替代方案,比如使用telnet或nc命令测试端口连通性。引用[2]中提到使用telnet连接11211端口,如果连接后出现error,说明服务正常运行。或者使用nc命令发送stats命令查看状态,如引用[1]中的mon_mc.sh脚本可能使用了nc来检查服务状态。 总结下来,可能的排查步骤包括:确认服务是否运行、检查端口绑定和监听情况、查看防火墙设置、验证netstat命令参数是否正确,以及使用替代工具进行测试。需要一步步引导用户检查每个环节,找出具体原因。</think>针对Memcached服务无法通过$netstat$命令查找到网络连接信息的问题,以下是逐步排查方案: --- ### **一、确认服务运行状态** 1. **检查Memcached进程** ```bash ps -ef | grep memcached ``` 观察输出是否包含类似`memcached -m 16m -p 11211 -d -u root`的进程信息[^3]。若无,说明服务未启动,需重新启动: ```bash memcached -m 16m -p 11211 -d -u root -c 8192 ``` 2. **验证服务端口监听** 使用更精准的命令过滤: ```bash lsof -i :11211 ``` 若输出为空,表明服务未正确绑定端口,需检查启动参数(如`-p 11211`是否遗漏)。 --- ### **二、排查网络配置问题** 1. **检查绑定地址** - 若Memcached启动参数包含`-l 127.0.0.1`,则仅允许本地连接,此时远程客户端无法建立连接。应改为`-l 0.0.0.0`以监听所有接口。 - 确认启动命令示例: ```bash memcached -m 16m -p 11211 -d -u root -l 0.0.0.0 ``` 2. **防火墙与安全组规则** - 检查防火墙是否开放11211端口: ```bash iptables -L -n | grep 11211 ``` - 临时关闭防火墙测试: ```bash systemctl stop firewalld # CentOS ufw disable # Ubuntu ``` --- ### **三、优化netstat命令使用** 1. **指定协议类型** Memcached默认同时监听TCP和UDP端口,需添加`-u`参数查看UDP连接: ```bash netstat -antup | grep 11211 ``` 2. **使用ss命令替代** ```bash ss -tuln | grep 11211 ``` `ss`命令比`netstat`更高效,支持显示更详细的套接字信息。 --- ### **四、替代验证方法** 1. **telnet/nc工具测试** ```bash telnet 127.0.0.1 11211 # 输入stats查看状态[^2] ``` 或使用`nc`发送命令: ```bash echo "stats" | nc 127.0.0.1 11211 ``` 2. **监控脚本验证** 参考引用[1]中的脚本,通过返回内容判断服务状态: ```bash sh mon_mc.sh 127.0.0.1 11211 ``` --- ### **五、日志与调试信息** 1. **启用详细日志** 启动时添加`-vv`参数输出调试信息: ```bash memcached -m 16m -p 11211 -d -u root -vv ``` 观察日志是否提示端口占用或权限错误。 2. **检查系统日志** ```bash journalctl -u memcached | tail -n 50 ``` --- ### **典型原因总结** | 原因 | 现象 | 解决方案 | |---------------------|-------------------------------|------------------------------| | 服务未启动 | 无进程信息 | 重启服务检查参数 | | 绑定本地地址 | 仅`127.0.0.1:11211`监听 | 修改为`-l 0.0.0.0` | | 防火墙拦截 | 外部无法连接 | 开放端口或关闭防火墙 | | UDP协议未检测 | netstat遗漏UDP连接 | 使用`netstat -anu`或`ss -u` |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值