-
Notifications
You must be signed in to change notification settings - Fork 4
memcache相关
参考文章:
1.http://lguan.iteye.com/blog/1279537
2.http://blog.csdn.net/qwssd/article/details/77198839?utm_source=5ibc.net&utm_medium=referral
阿里云也是使用SASL作为memcache认证(memcache本身不支持支认证)。
rpm -qa | grep sasl
最全的是:
1.cyrus-sasl-plain-2.1.23-8.el6.i686
2.cyrus-sasl-devel-2.1.23-8.el6.i686
3.cyrus-sasl-2.1.23-8.el6.i686
4.cyrus-sasl-lib-2.1.23-8.el6.i686
5.cyrus-sasl-gssapi-2.1.23-8.el6.i686
6.cyrus-sasl-md5-2.1.23-8.el6.i686
查看密码验证机制,输入:saslauthd -v
saslauthd 2.1.23
authentication mechanisms: getpwent kerberos5 pam rimap shadow ldap
为简单起见,这里准备采用shadow验证方法,也就是直接用/etc/shadow文件中的用户账户及密码进行验证。因此,在配置文件/etc/sysconfig/saslauthd中,应修改当前系统所采用的密码验证机制为shadow,即: MECH=shadow
重启saslauthd进程: /etc/init.d/saslauthd restart
/etc/init.d/saslauthd status 或者 ps aux | grep saslauthd 查看是否启动。
为memcache-sasl添加专有用户:saslpasswd2 -a memcached -c testmemuser 要求输入密码,简单起见:123456。添加的用户必须是系统中的用户,上面命令的意思就是,给memcached服务添加可访问的用户,没有添加的系统用户仍然是不可以访问该服务的。
用户是否work: testsaslauthd –u testmemuser –p pwd(特别注意,这个pwd不是上边的那个123456密码,而是testmemuser这个用户登录Linux的密码!这里坑死我了!)
若提示失败:0: NO "authentication failed",需要开启allow_saslauthd_read_shadow: setsebool -P allow_saslauthd_read_shadow 1
**有可能提示:setsebool: SELinux is disabled. 说明selinux被关闭了,需要打开:vi /etc/selinux/config更改为:SELINUX=1,必须重启linux,不重启是没办法立刻开启selinux的。这个慎重搞,不到万不得以别玩重启机器。
再次testsaslauthd –u testmemuser –p pwd提示:0: OK "Success."。
要能够使用SASL服务应要确保有cyrus-sasl-devel和cyrus-sasl-lib两个包,如果缺少这两个包,在安装带—enable-sasl参数的Memcached时会有错误提示: configure: error: Failed to locate the library containing sasl_server_init
最终生成的DB文件在/etc/下:-rw-r—– 1 root root 12288 Mar 6 11:52 /etc/sasldb2,如果sasl启动有问题,注意这个文件的权限。
可以查看当前的SASL用户:sasldblistusers2
qa1:启动memcached,/var/log/messages日志报错:ldapdb_canonuser_plug_init() failed in sasl_canonuser_add_plugin(): invalid parameter supplied
rpm -e cyrus-sasl-ldap
解决办法是:查找资料后发现,该错误应该有由于安装了cyrus-sasl-sql套件导致的:
rpm -qa|grep cyrus-sasl-sql cyrus-sasl-sql-2.1.19-5.EL4.1AX 当安装该套件的时候,启动cyrus-sasl就会调用该库文件。但由于我并没有配置使用它,所以就报一个ERROR等级的信息咯。 解决办法好简单,卸载即可: rpm -e cyrus-sasl-sql
则应该是cyrus-sasl-ldap的问题,若并没有使用ldap,而安装了该包的话,就会报类似的信息。卸载它吧。
http://www.blog.chinaunix.net/uid-447479-id-3812253.html
用python,java太重,php太坑。调试类,辅助类,建议最好用python,省事&快。参考:https://redislabs.com/lp/python-memcached/
使用python的bmemcached插件,安装:pip install python-binary-memcached。如果提示pip版本低,用pip install --upgrade pip先升级。
然后如下步骤验证:
[root@ops-dt03 python-memcached-1.58]# python
Python 2.7.5 (default, Aug 4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import bmemcached
mc = bmemcached.Client('127.0.0.1:11211', 'zl', '111111') //注意这里的111111是用saslauthd配置时的密码
print mc.set('k1', 'v1')
True
print mc.get('k1')
v1
mc2 = bmemcached.Client('127.0.0.1:11211', 'zl', '111')
print mc2.get('k1')
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.7/site-packages/bmemcached/client.py", line 110, in get
value, cas = server.get(key)
File "/usr/lib/python2.7/site-packages/bmemcached/protocol.py", line 406, in get
self._send(data)
File "/usr/lib/python2.7/site-packages/bmemcached/protocol.py", line 219, in _send
self._open_connection()
File "/usr/lib/python2.7/site-packages/bmemcached/protocol.py", line 131, in _open_connection
self._send_authentication()
File "/usr/lib/python2.7/site-packages/bmemcached/protocol.py", line 294, in _send_authentication
raise MemcachedException('Code: %d Message: %s' % (status, extra_content))
bmemcached.exceptions.MemcachedException: Code: 32 Message: Auth failure.
为memcache-sasl添加专有认证用户:saslpasswd2 -a memcached -c testmemuser 要求输入密码,比如:pwd-mem-sasl,这个密码是给memcache-client用的,比如python-client, java-client, 用户名是testmuser(这个用户必须是服务器存在的)
检查认证用户的sasl机制是否增加成功:testsaslauthd –u testmemuser –p pwd-sys,这个pwd-sys是服务器系统用户testmemuser在这台机器的密码,是操作服务器用的。两回事。
authenticated() in cmd 0x01 is false
38 Writing an error: Auth failure.
这个是正常的,他是telnet-client,或者python-client等非认证访问时报的。那个 "cmd 0x01" 就是client传递过来的命令。这个很容易误认为memcached-sasl环境问题。
/opt/blueix/memcached/bin/memcached -d -m 1000 -u zl -S -p 11211 -c 1500 -P /opt/blueix/run/memcached1.pid