centos7 部署 memcache

Man_In_The_Night發表於2020-10-08

環境: centos7.6, mongodb-server v2.6.12
安裝 memcached

yum install memcached

啟動 memcached

systemctl start memcached

檢查已經啟動 memcached

yum install -y libmemcached
memstat --servers="127.0.0.1:11211"

python 使用 memcache

pip install python-memcached
import memcache
mc = memcache.Client(['127.0.0.1:11211'],debug=False)
mc.set("foo","bar")
mc.get("foo")
  • 設定賬號、密碼 sasl

修改 memcache 配置檔案 /etc/sysconfig/memcached, 在 OPTIONS 變數中新增 -S 引數,新增 -vv 引數有助於除錯, -U 0 禁用 udp 偵聽

[root@ansible002 ~]# cat /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1 -U 0 -S -vv"

重啟 memcached

systemctl restart memcached

檢查

[root@ansible002 ~]# memstat --servers="127.0.0.1"
[root@ansible002 ~]# echo $?
1

下載軟體 cyrus-sasl-devel cyrus-sasl-plain,允許我們建立和驗證我們的使用者

 yum install cyrus-sasl-devel cyrus-sasl-plain

指定日誌級別,設定 mech_list 為 plain,告訴 memcached 它應該使用自己的密碼檔案並驗證明文密碼,指定使用者資料庫檔案

[root@ansible002 ~]# mkdir -p /etc/sasl2/
[root@ansible002 ~]# cat /etc/sasl2/memcached.conf 
mech_list: plain
log_level: 5
sasldb_path: /etc/sasl2/memcached-sasldb2

使用使用者憑據建立 sasl 資料庫。-c 選項在我們的資料庫中建立一個新的條目。我們這裡使用使用者名稱 kolla

[root@ansible002 ~]# saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 kolla
Password: 
Again (for verification): 

授予 memcached 使用者 sasl 資料庫所有權

[root@ansible002 ~]# chown memcached:memcached /etc/sasl2/memcached-sasldb2

重啟 memcached

[root@ansible002 ~]# systemctl restart memcached

檢查,我們上面設定 kolla 使用者密碼為 321321

[root@ansible002 ~]# memstat --servers="127.0.0.1" --username=kolla --password=321321
Server: 127.0.0.1 (11211)
	 pid: 1905345
	 uptime: 40
	 time: 1602138612
	 version: 1.5.6
...
  • 允許遠端訪問 memcache

修改 /etc/sysconfig/memcached 中 OPTIONS 127.0.0.1 為伺服器 ip

[root@ansible002 ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 192.168.1.107 -U 0 -S -vv"

重啟服務 memcached

[root@ansible002 ~]# systemctl restart memcached

防火牆開放埠,略

在 k8s01 上使用 python python-binary-memcached 驗證

[root@k8s01 ~]# pip install python-binary-memcached
[root@k8s01 ~]# python
Python 2.7.5 (default, Jun 20 2019, 20:27:34) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import bmemcached
>>> client = bmemcached.Client(('192.168.1.107:11211',),'kolla','321321')
>>> client.set("foo","boor")
True
>>> client.get("foo")
'boor'

參考文章:

https://cloud.tencent.com/developer/article/1162013

https://www.cnpython.com/pypi/python-binary-memcached

相關文章