项目搭建
项目部署目录结构。
/usr/server/chapter7
nginx_chapter7.conf
nutcracker.yml
nutcracker.init
item.html
header.html
footer.html
item.lua
desc.lua
lualib
item.lua
item
common.lua
webapp
WEB-INF
lib
classes
web.xml
相关命令:
数据存储实现
分布式缓存层
可选技术:Twemproxy , redis Cluster , codis
实践技术:Twemproxy
安排:B:edu-mysql_192.168.1.121 、edu-mysql2_192.168.1.122、edu-mysql3_192.168.1.123、edu-mysql4_192.168.1.124
思想要点:Twemproxy做一致性Hash,即便某台机器宕机,丢失的只是少数信息,无论主从;
分片到122,123,124,构建从集群针对6660端口
等完成:Twemproxy的高可用性
Redis安装配置
SSDB安装配置:
SSDB介绍与使用
规划设计:
商品基本信息SSDB集群
主集群-写:
192.168.1.122 7770
192.168.1.123 7770
192.168.1.124 7770从集群-读:
192.168.1.122 7771
192.168.1.123 7771
192.168.1.124 7771
商品介绍SSDB集群配置
主集群-写:
192.168.1.122 8880
192.168.1.123 8880
192.168.1.124 8880从集群-读:
192.168.1.122 8881
192.168.1.123 8881
192.168.1.124 8881
其他信息Redis配置
主集群-写:
192.168.1.122 6660
从集群-读:
192.168.1.122 6661
192.168.1.123 6661
192.168.1.124 6661
设计图:和上面的配置不一致部分,因为我采用的是多机器配置
1.整体架构为主从模式,写数据到主集群,读数据从从集群读取数据,
2.这样当一个集群不足以支撑流量时可以使用更多的集群来支撑更多的访问量;
3.集群分片使用Twemproxy实现。
注:以下配置文件,可以编辑好上传
商品基本信息SSDB集群配置
分别在122 123 124上配置:# cp /usr/local/ssdb-master/ssdb.conf /usr/local/ssdb-master/ssdb_basic_7770.conf
# vi /usr/local/ssdb-master/ssdb_basic_7770.conf
work_dir = /usr/data/ssdb_7770
pidfile = /usr/data/ssdb_7770.pid
server:
ip: 0.0.0.0
port: 7770
allow: 127.0.0.1
allow: 192.168
replication:
binlog: yes
sync_speed: -1
slaveof:
logger:
level: error
output: /usr/data/ssdb_7770.log
rotate:
size: 1000000000
leveldb:
cache_size: 500
block_size: 32
write_buffer_size: 64
compaction_speed: 1000
compression: yes
# cp /usr/local/ssdb-master/ssdb.conf /usr/local/ssdb-master/ssdb_basic_7771.conf
# vi /usr/local/ssdb-master/ssdb_basic_7771.conf
脚本代码:
work_dir = /usr/data/ssdb_7771 pidfile = /usr/data/ssdb_7771.pid server: ip: 0.0.0.0 port: 7771 allow: 127.0.0.1 allow: 192.168 replication: binlog: yes sync_speed: -1 slaveof: type: sync ip: 127.0.0.1 port: 7770 logger: level: error output: /usr/data/ssdb_7771.log rotate: size: 1000000000 leveldb: cache_size: 500 block_size: 32 write_buffer_size: 64 compaction_speed: 1000 compression: yes
配置文件使用Tab而不是空格做缩排(复制到配置文件后请把空格替换为Tab)。主从关系:7770(主)-->7771(从)配置文件如何配置请参考https://github.com/ideawu/ssdb-docs/blob/master/src/zh_cn/config.md。
创建工作目录mkdir -p /usr/data/ssdb_777{
0,1}
启动
通过ps -aux | grep ssdb命令看是否启动了,tail -f nohup.out查看错误信息。
商品介绍SSDB集群配置
分别在122 123 124上配置:# cp /usr/local/ssdb-master/ssdb.conf /usr/local/ssdb-master/ssdb_desc_8880.conf
# vi /usr/local/ssdb-master/ssdb_desc_8880.conf
work_dir = /usr/data/ssdb_8880
pidfile = /usr/data/ssdb_8880.pid
server:
ip: 0.0.0.0
port: 8880
allow: 127.0.0.1
allow: 192.168
replication:
binlog: yes
sync_speed: -1
slaveof:
logger:
level: error
output: /usr/data/ssdb_8880.log
rotate:
size: 1000000000
leveldb:
cache_size: 500
block_size: 32
write_buffer_size: 64
compaction_speed: 1000
compression: yes
分别在122 123 124上配置
:# cp /usr/local/ssdb-master/ssdb.conf /usr/local/ssdb-master/ssdb_desc_8881.conf
# vi /usr/local/ssdb-master/ssdb_desc_8881.conf
脚本代码:
work_dir = /usr/data/ssdb_8881 pidfile = /usr/data/ssdb_8881.pid server: ip: 0.0.0.0 port: 8881 allow: 127.0.0.1 allow: 192.168 replication: binlog: yes sync_speed: -1 slaveof: type: sync ip: 127.0.0.1 port: 8880 logger: level: error output: /usr/data/ssdb_8881.log rotate: size: 1000000000 leveldb: cache_size: 500 block_size: 32 write_buffer_size: 64 compaction_speed: 1000 compression: yes
配置文件使用Tab而不是空格做缩排(复制到配置文件后请把空格替换为Tab)。主从关系:8880(主)-->8881(从)配置文件如何配置请参考https://github.com/ideawu/ssdb-docs/blob/master/src/zh_cn/config.md。
创建工作目录mkdir -p /usr/data/ssdb_888{
0,1}
启动
通过ps -aux | grep ssdb命令看是否启动了,tail -f nohup.out查看错误信息。
其他信息Redis配置
在122:
# mkdir /usr/local/redis/conf
# vi /usr/local/redis/conf/redis_6660.conf
port 6660
pidfile "/var/run/redis_6660.pid"
#设置内存大小,根据实际情况设置,此处测试仅设置20mb
maxmemory 20mb
#内存不足时,所有KEY按照LRU算法删除
maxmemory-policy allkeys-lru
#Redis的过期算法不是精确的而是通过采样来算的,默认采样为3个,此处我们改成10
maxmemory-samples 10
#不进行RDB持久化
save “”
#不进行AOF持久化
appendonly no
# vi /usr/local/redis/conf/redis_6661.conf
port 6661
pidfile "/var/run/redis_6661.pid"
#设置内存大小,根据实际情况设置,此处测试仅设置20mb
maxmemory 20mb
#内存不足时,所有KEY按照LRU算法进行删除
maxmemory-policy allkeys-lru
#Redis的过期算法不是精确的而是通过采样来算的,默认采样为3个,此处我们改成10
maxmemory-samples 10
#不进行RDB持久化
save “”
#不进行AOF持久化
appendonly no
#主从
slaveof 192.168.1.122 6660
如上配置放到配置文件最末尾即可;此处内存不足时的驱逐算法为所有KEY按照LRU进行删除(实际是内存基本上不会遇到满的情况);主从关系:6660(主)-->6661(从)
启动
/usr/lo