IP/os | PORT | 角色 | 软件 |
192.168.1.151/rhel7.2 | 11211 / 12000 | 主节点 / 代理 | memcached / magent |
192.168.1.152/rhel7.2 | 11211 | 从节点 | memcached |
1、初始化系统
关闭防火墙、selinux
2、主从 memcached 安装
# yum -y install libevent libevent-devel gcc
# wget http://memcached.org/files/memcached-1.5.0.tar.gz
# tar -zxvf memcached-1.5.0.tar.gz
# cd memcached-1.5.0/
# ./configure --with-libevent=/usr/
# make && make install
# 分别启动memcached
# /usr/local/bin/memcached -d -m 128 -l 192.168.1.151 -p 11211 -u root
(# /usr/local/bin/memcached -d -m 128 -l 192.168.1.152 -p 11211 -u root)
-d 表示启动一个守护进程 -m 是分配给memcached使用的内存 -u 运行memcached的用户 -l 是memcached监听的ip -p 是memcached监听的端口 -c memcache运行的最大并发连接数 -P 是设置memcache的pid文件 |
3、magent 安装
# mkdir/usr/local/magent
# tar -zxf magent-0.5.tar.gz -C /usr/local/magent/
# cd /usr/local/magent
# vi ketama.h
#ifndef SSIZE_MAX #define SSIZE_MAX 32767
struct dot { unsigned int point; int srvid; };
struct ketama { unsigned int numpoints; struct dot *dot;
int count; char **name; int *weight; int totalweight; };
int create_ketama(struct ketama *, int); void free_ketama(struct ketama *); int get_server(struct ketama *, const char *); #endif |
# /sbin/ldconfig
# sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile
# make
gcc -Wall -O2 -g -c -o magent.o magent.c gcc -Wall -O2 -g -c -o ketama.o ketama.c gcc -Wall -O2 -g -o magent magent.o ketama.o -levent -lm |
# cp magent /usr/bin/
# magent
please provide -s "ip:port" argument
memcached agent v0.4 Build-Date: Oct 30 2017 13:48:41 Usage: -h this message -u uid -g gid -p port, default is 11211. (0 to disable tcp support) -s ip:port, set memcached server ip and port -b ip:port, set backup memcached server ip and port -l ip, local bind ip address, default is 0.0.0.0 -n number, set max connections, default is 4096 -D don't go to background -k use ketama key allocation algorithm -f file, unix socket path to listen on. default is off -i number, set max keep alive connections for one memcached server, default is 20 -v verbose |
# magent -u root -l 192.168.1.151 -p 12000 -s 192.168.1.151:11211 -b192.168.1.152:11211
4、测试
# netstat -tunlp | egrep '12000|11211'
# telnet 192.168.1.151 12000
Trying 192.168.1.151... Connected to 192.168.1.151. Escape character is '^]'. set key 0 0 3 qqq STORED quit |
# telnet 192.168.1.151 11211
Trying 192.168.1.151... Connected to 192.168.1.151. Escape character is '^]'. get key VALUE key 0 3 qqq END quit |
# telnet 192.168.1.152 11211
Trying 192.168.1.152... Connected to 192.168.1.152. Escape character is '^]'. get key VALUE key 0 3 qqq END quit Connection closed by foreign host. |